白玉峰
摘 要:目前計(jì)算機(jī)專業(yè)或相關(guān)專業(yè)學(xué)生在學(xué)習(xí)《匯編語(yǔ)言程序設(shè)計(jì)》課程時(shí),由于該課程屬于低級(jí)語(yǔ)言、涉及硬件較多、對(duì)硬件的依賴性比較大等特殊原因,存在著教師開(kāi)展教學(xué)困難,學(xué)生學(xué)習(xí)和掌握也比較難,教學(xué)效果差等現(xiàn)象。本文主要針對(duì)此問(wèn)題,探討《匯編語(yǔ)言程序設(shè)計(jì)》課程的教學(xué)方法。
關(guān)鍵詞:匯編語(yǔ)言程序設(shè)計(jì) 教學(xué)方法 研究
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)08(b)-0184-02
程序設(shè)計(jì)在高校計(jì)算機(jī)及相關(guān)專業(yè)的課程中是最主要的基礎(chǔ)課,而匯編語(yǔ)言程序設(shè)計(jì)又是程序設(shè)計(jì)的基礎(chǔ),并且是微機(jī)原理、操作系統(tǒng)、編譯原理和系統(tǒng)結(jié)構(gòu)等主要課程的基礎(chǔ)課,是一門軟硬件相結(jié)合、理論聯(lián)系實(shí)踐的課程。如果沒(méi)有匯編語(yǔ)言程序設(shè)計(jì)作為基礎(chǔ),想要學(xué)深學(xué)透后續(xù)課程是十分困難的。學(xué)好匯編語(yǔ)言可以更好地深入理解和掌握計(jì)算機(jī)的硬件構(gòu)成和工作機(jī)理,為進(jìn)行計(jì)算機(jī)相關(guān)的應(yīng)用和研究奠定基礎(chǔ)[1,2]。因?yàn)閰R編語(yǔ)言是接近于計(jì)算機(jī)硬件的低級(jí)語(yǔ)言,它是聯(lián)系高級(jí)語(yǔ)言和計(jì)算機(jī)系統(tǒng)的橋梁,對(duì)于例如變量參數(shù)等在高級(jí)語(yǔ)言不容易理解的概念,用匯編語(yǔ)言講述則很清楚,而且對(duì)于理解計(jì)算機(jī)原理幫助較大。但是由于匯編語(yǔ)言是面向機(jī)器的一種語(yǔ)言,很多學(xué)生在學(xué)習(xí)過(guò)程中感覺(jué)比較難入手。
匯編語(yǔ)言作為一種用助記符表示的面向機(jī)器的符號(hào)語(yǔ)言,如何認(rèn)識(shí)該課程的作用和地位,如何取得更好的教學(xué)效果?在長(zhǎng)期從事該課程的教學(xué)過(guò)程中,筆者嘗試各種提高該課程教學(xué)質(zhì)量的探索,有些體會(huì),供大家參考。
1 目前《匯編語(yǔ)言程序設(shè)計(jì)課程》的教學(xué)狀況
匯編語(yǔ)言是面向機(jī)器的一種符號(hào)語(yǔ)言,它與機(jī)器的結(jié)構(gòu)密切相關(guān),是直接針對(duì)CPU、內(nèi)存和I/O端口編程的程序設(shè)計(jì)語(yǔ)言。而目前的各種高級(jí)語(yǔ)言和網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)工具很多程序幾乎可以自動(dòng)生成。然而機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言的程序設(shè)計(jì)語(yǔ)言體系仍然是計(jì)算機(jī)技術(shù)的基礎(chǔ),也是計(jì)算機(jī)技術(shù)的重要知識(shí)體系之一。對(duì)于計(jì)算機(jī)及其相關(guān)專業(yè)的學(xué)生以及計(jì)算機(jī)愛(ài)好者來(lái)說(shuō),匯編語(yǔ)言程序設(shè)計(jì)是需要掌握的重要專業(yè)基礎(chǔ)知識(shí)之一。可由于匯編語(yǔ)言面向機(jī)器的特點(diǎn),不僅需要硬件知識(shí)的配合,而且它有大量的語(yǔ)法規(guī)則需要記憶,加之上機(jī)調(diào)試單調(diào)且容易出錯(cuò),導(dǎo)致了大部分同學(xué)對(duì)于《匯編語(yǔ)言程序設(shè)計(jì)》課程的畏難情緒,學(xué)生初學(xué)階段普遍反映該課程難學(xué),很多學(xué)生在學(xué)習(xí)過(guò)程中感覺(jué)比較難入手。
2 教學(xué)方法探討
2.1 合理組織課程內(nèi)容
教學(xué)過(guò)程中為了讓學(xué)生掌握所學(xué)知識(shí)并用于程序開(kāi)發(fā),在課程教學(xué)中把握教材的難點(diǎn)和重點(diǎn)尤為關(guān)鍵。
(1)基礎(chǔ)知識(shí)的教學(xué)。
主要包括計(jì)算機(jī)硬件和指令系統(tǒng)的教學(xué)。對(duì)計(jì)算機(jī)硬件基礎(chǔ)知識(shí)的理解和掌握程度直接影響學(xué)生對(duì)匯編語(yǔ)言地理解和掌握,其中包括CPU內(nèi)部的構(gòu)成、總線的作用、寄存器的設(shè)置和用途以及內(nèi)存的使用等是較難理解的部分,在實(shí)際教學(xué)中,可將相關(guān)內(nèi)容融匯在一起來(lái)進(jìn)行教學(xué)。通過(guò)應(yīng)用如:圖片和動(dòng)畫(huà)等形象化的方法將這些比較抽象的知識(shí)以較容易理解的方式展現(xiàn)出來(lái)。作為編程的指令系統(tǒng)對(duì)匯編語(yǔ)言程序設(shè)計(jì)而言是很重要的一部分內(nèi)容,在進(jìn)行該部分內(nèi)容教學(xué)時(shí),可以盡量通過(guò)演示程序來(lái)進(jìn)行講解,解釋各條指令的運(yùn)用方法、效果等,同時(shí)也可以適當(dāng)應(yīng)用動(dòng)畫(huà)等方式演示指令的執(zhí)行過(guò)程。
(2)程序控制結(jié)構(gòu)的教學(xué)。
程序控制結(jié)構(gòu)是程序設(shè)計(jì)教學(xué)中的重點(diǎn),匯編語(yǔ)言中的選擇結(jié)構(gòu)和循環(huán)程序結(jié)構(gòu)程序設(shè)計(jì)則是此部分的難點(diǎn)。為了使學(xué)生更好地掌握,在教學(xué)過(guò)程中,可選擇部分典型的例題,如:解決漢諾塔問(wèn)題和階乘的計(jì)算等。
2.2 教學(xué)手段上采用傳統(tǒng)教學(xué)與多媒體教學(xué)相結(jié)合
在教學(xué)過(guò)程中我們可以有選擇地使用多媒體教學(xué),例如:用動(dòng)畫(huà)模擬匯編語(yǔ)言中尋址方式、子程序調(diào)用的堆棧變化過(guò)程、中斷調(diào)用過(guò)程等。運(yùn)用多媒體教學(xué),增強(qiáng)學(xué)生的直觀感,加深對(duì)問(wèn)題的。在講用匯編語(yǔ)言指令編程序的內(nèi)容時(shí),采用傳統(tǒng)的教學(xué)方法,教會(huì)學(xué)生如何思考、推理,如何用指令實(shí)現(xiàn)算法,培養(yǎng)學(xué)生的抽象思維、邏輯推理能力。傳統(tǒng)教學(xué)方法與多媒體教學(xué)相結(jié)合,將有助于提高學(xué)生的理解能力及綜合思維能力。
2.3 隨堂寫(xiě)一些小程序增強(qiáng)記憶
在課堂上多加練習(xí)編寫(xiě)小程序段會(huì)提高學(xué)生對(duì)指令的記憶及理解掌握。經(jīng)過(guò)幾年的教學(xué)發(fā)現(xiàn),課堂上練習(xí)少了以后,很多同學(xué)往往出現(xiàn)在編寫(xiě)程序時(shí)有些指令寫(xiě)不出來(lái)或不會(huì)用相關(guān)指令來(lái)組織程序。在課堂上練習(xí),使學(xué)生可以增強(qiáng)記憶,對(duì)指令的使用方法有了進(jìn)一步了解,能夠運(yùn)用自如。
2.4 注重案例教學(xué)
案例教學(xué)法在當(dāng)前面向各個(gè)層次學(xué)生的教學(xué)過(guò)程中已得到廣泛應(yīng)用,具體是指教師需要根據(jù)課程教學(xué)目標(biāo)與內(nèi)容的要求,選擇相關(guān)典型的實(shí)例并組織學(xué)生學(xué)習(xí)、組織學(xué)生討論從而最大程度調(diào)動(dòng)學(xué)生的創(chuàng)造性思維的教學(xué)方法。其具體執(zhí)行有兩種形式。
(1)案例講解。
案例講解需要在理論知識(shí)講授之后進(jìn)行,通過(guò)案例講解輔助,達(dá)到加深學(xué)生理解的目標(biāo)。
(2)案例分析法。
案例分析方法的重點(diǎn)在于討論和分析,其主要目的是培養(yǎng)學(xué)生的創(chuàng)造性思維。案例的選擇應(yīng)注意培養(yǎng)學(xué)生理解知識(shí),提高學(xué)生分析問(wèn)題和解決問(wèn)題的能力。在匯編語(yǔ)言程序設(shè)計(jì)的教學(xué)中綜合運(yùn)用案例講解法和分析法,能夠使學(xué)生盡快理解匯編語(yǔ)言程序設(shè)計(jì)的本質(zhì)特征并迅速掌握編程方法。
2.5 注重實(shí)驗(yàn)內(nèi)容的實(shí)用性和趣味性
把實(shí)驗(yàn)實(shí)踐環(huán)節(jié)與理論教學(xué)相融合,用實(shí)踐教學(xué)促進(jìn)學(xué)科理論知識(shí)學(xué)習(xí),激發(fā)學(xué)生學(xué)習(xí)興趣。對(duì)于任何一門計(jì)算機(jī)語(yǔ)言課程來(lái)說(shuō),實(shí)驗(yàn)都是教學(xué)中非常重要的一個(gè)環(huán)節(jié),實(shí)驗(yàn)可以加深對(duì)理論知識(shí)的理解,提高學(xué)生的實(shí)踐動(dòng)手能力。為了避免傳統(tǒng)的程序三大結(jié)構(gòu)、數(shù)據(jù)組織與數(shù)值計(jì)算、代碼轉(zhuǎn)換和數(shù)制轉(zhuǎn)換等方面的枯燥無(wú)味的實(shí)驗(yàn),應(yīng)將實(shí)驗(yàn)內(nèi)容和實(shí)際應(yīng)用相結(jié)合,如將匯編語(yǔ)言和計(jì)算機(jī)的系統(tǒng)維護(hù)等實(shí)際相聯(lián)系,用匯編語(yǔ)言編寫(xiě)簡(jiǎn)單的設(shè)備驅(qū)動(dòng)程序等等,增加圖形化的實(shí)驗(yàn)內(nèi)容等方法和手段,使實(shí)驗(yàn)變得實(shí)用有趣,增強(qiáng)學(xué)生動(dòng)手的積極性和提高學(xué)生的動(dòng)手能力。
2.6 突出重點(diǎn)和難點(diǎn)
另外,在教學(xué)過(guò)程中,加強(qiáng)傳統(tǒng)的教學(xué)方法也是重要的,如在教學(xué)過(guò)程中要突出重點(diǎn)和難點(diǎn);課堂上多做練習(xí),課后注意答疑、輔導(dǎo)。
如:講解指令系統(tǒng)時(shí)部分指令應(yīng)結(jié)合指令編碼(即機(jī)器指令)來(lái)介紹,這樣學(xué)生更容易理解和接受。
例如:講解轉(zhuǎn)移指令中段間轉(zhuǎn)移直接尋址和段間轉(zhuǎn)移間接尋址問(wèn)題,如果只列出樣例:
段間直接尋址:jmp far ptr target1
段間間接尋址:jmp dword ptr addr [bx]
學(xué)生很難理解,具體怎么實(shí)現(xiàn)跳轉(zhuǎn)。但是如果結(jié)合指令編碼來(lái)講解上述兩條轉(zhuǎn)移指令則效果會(huì)有很大改進(jìn)。
如:
段間轉(zhuǎn)移直接尋址指令編碼需要5個(gè)字節(jié),如圖1所示。
也就是說(shuō),上例中Jmp far ptr target1 的target1給出的是轉(zhuǎn)移地址,即包括段地址和偏移地址。
而段間轉(zhuǎn)移間接尋址的指令編碼是2~4字節(jié),如圖2所示。
指令中由MOD和R/M確定的雙字存儲(chǔ)單元中的內(nèi)容分別送入IP寄存器和CS段寄存器,完成轉(zhuǎn)移。
3 結(jié)語(yǔ)
教學(xué)效果很大程度上取決于對(duì)課程重要性的認(rèn)識(shí)和教學(xué)方法,如何培養(yǎng)學(xué)生的學(xué)習(xí)能力,除了高度重視該課程外,選擇適宜的教學(xué)方法會(huì)起到舉足輕重的作用。通過(guò)幾年的實(shí)踐證明,以上教學(xué)方法在《匯編語(yǔ)言程序設(shè)計(jì)》及相關(guān)課程的教學(xué)過(guò)程中會(huì)有良好的效果。
參考文獻(xiàn)
[1] 沈美明,溫冬嬋.IBM-PC匯編語(yǔ)言程序設(shè)計(jì)[M].清華大學(xué)出版社,2004.
[2] 朱耀庭.匯編語(yǔ)言程序設(shè)計(jì)[M].清華大學(xué)出版社,2009.
[3] 唐朔飛.計(jì)算機(jī)機(jī)組成原理[M].計(jì)算高等教育出版社,2004.
[4] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)教程[M].高等教育出版社,2005.
[5] 王爽.匯編語(yǔ)言[M].清華大學(xué)出版社,2008.endprint