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