白玉峰

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