摘要:匯編語言課程是計算機專業的一門基礎課程,該課程與計算機硬件密切相關,課程難度較大。分析了目前匯編語言課程教學中存在的不足之處,從課程群的宏觀角度出發明確課程的教學理念和目標,提出了匯編語言課程教學改革的方法并在教學實踐中具體應用,取得了良好的教學效果,提高計算機專業學生軟硬件應用能力。
關鍵詞:匯編語言;教學方法;課程群
作者簡介:蘇林萍(1967-),女,河北定州人,華北電力大學控制與計算機工程學院,副教授;徐茹枝(1966-),女,江西上饒人,華北電力大學控制與計算機工程學院,副教授。(北京 102206)
中圖分類號:G642 文獻標識碼:A 文章編號:1007-0079(2012)24-0060-01匯編語言課程是計算機專業的一門基礎主干課程,該課程與計算機硬件系統密切相關。主要介紹80X86CPU的指令系統、尋址方式、工作原理。通過該課程的學習,培養學生使用匯編語言編寫程序的能力。加深學生對計算機內部運行機制的理解,為學生開發系統軟件和與硬件相關的軟件打下堅實的基礎。
一、匯編語言課程教學現狀分析
1.與計算機硬件相關,課程難度大
匯編語言課程是以特定的計算機硬件為基礎的,現在我國高等學校中普遍以80X86CPU系列計算機作為教學模型。首先介紹80X86CPU的工作方式、指令系統、尋址方式等與硬件有關的知識,然后講解匯編語言的編程方法和技巧,最后介紹系統輸入/輸出功能調用和有關文件的編程方法。匯編語言課程通常開設在大學的第三學期或第四學期,學生只有高級語言的基礎,習慣于高級語言的自然表達形式。學生具備的計算機硬件的知識非常少,所以學習匯編語言課程時會感到非常困難,難于適應復雜的低級語言。特別是在開始學習階段,許多學生經常混淆寄存器、內存,地址、內容等基本概念。
2.課程內容單一,學生學習興趣不足
目前多數高校講授匯編語言課程的主要目標是使學生掌握一種編程語言。因為匯編語言比較難學,如果在教學中單純強調掌握編程技術,學生可能失去學習該課程的興趣。在匯編語言中既沒有分支語句也沒有循環語句,學生必須使用比較指令和條件轉移指令來構造出分支結構和循環結構。學生更愿意選擇易于理解和編寫程序的高級語言,如C、C++、JAVA等。不喜歡使用復雜的匯編語言來編寫程序。學生不了解匯編語言與其他課程的關系,只是把它當作一門必須參加考試的課程對待。
二、匯編語言教學改革的思想和方法
1.明確課程的目標
根據匯編語言教學大綱的要求,掌握一種基于硬件的匯編語言編程技術是課程的基本目標和要求。在教學中可以將匯編語言與一種高級語言(如C語言)進行比較,通過學習匯編語言使學生更深刻地理解高級語言的工作原理。例如C中數組是連續的存儲空間,相對于匯編語言中的寄存器相對尋址方式;C指針的概念在匯編中就是內存單元的地址,是寄存器間接尋址方式;C函數中的參數傳遞,是用匯編語言中的堆棧段(STACK)實現的。前面提到的幾個問題是C語言課程中的教學重點和難點,學生不易理解和掌握。通過匯編語言課程分析C語言中的這些問題,可以使學生從計算機的工作原理角度出發真正理解了C語言中的這些知識,并且掌握了C語言編譯執行的過程,知道高級語言中分支結構和循環結構在執行時需要翻譯成一條一條的指令來完成。從計算機工作原理入手講解匯編語言可以使學生在學習一門計算機語言的同時深入理解計算機的工作原理,這是在高級語言教學中很難實現的。
教師在開始上課時,首先提出課程的目標和要求,同時要告訴學生匯編語言課程是《計算機組成原理》、《計算機接口與通訊技術》、《計算機操作系統》、《單片機原理》等課程的先修課,學好本課程會為其他相關課程的學習打下堅實的基礎。
2.課程群的建設
傳統的教學模式中,每位教師更多關注本課程的內容,很少考慮本課程對后續課程的影響以及課程之間的知識重復和交叉的問題。為了更好地培養計算機專業學生的軟硬件綜合能力,將《計算機組成原理》、《匯編語言程序設計》及《計算機接口與通訊技術》三門課程納入到一個課程群來建設是十分必要的。建立基于軟硬件綜合能力培養的新教學體系和新實驗模式。首先,這三門課程從內容上是相互關聯的,例如匯編語言與計算機組成原理中都涉及到指令系統和尋址方式的章節,區別在于匯編語言是針對80X86CPU機型的,而計算機組成原理是不針對具體機型的。學生如果已經完全掌握了匯編語言中的指令系統和尋址方式的概念,學習計算機組成原理時就易于理解和掌握該章節的內容,教師也可以花費較少的學時來完成該部分的教學。其次,這三門課程是相互影響的,例如在計算機接口課程的實驗中,學生需要使用匯編語言編寫接口程序。所以,匯編語言課程學習的好壞會直接影響到計算機組成原理和計算機接口課程的學習效果。
3.優化整合教學內容
匯編語言課程中會用到二進制、十六進制、補碼等知識,這些知識是先修課程信息技術基礎中的內容。在匯編語言課程中可以將本課程中使用頻繁的補碼概念、數的溢出判斷等知識點強調說明,其他的內容讓學生自己復習,教師不必重復講解。
匯編語言指令多達幾百條,其中有的指令很少使用。所以在教學中要精心選取常用的指令,將功能相似的指令分組講解,選擇一組中某幾個指令詳細介紹指令的格式、功能和使用。在講解指令時教會學生學習指令的方法,起到舉一反三的效果,當學生今后遇到沒學過的指令時可以自主學習。如果將所有的指令集中講解,學生不易掌握。可以將指令分散到各個章節中,例如將比較指令和轉移指令分解到分支程序設計中,將串指令分解到循環程序設計中。指令要與程序相結合,讓學生在程序中學習指令、尋址方式和編程方法。
4.加強實驗教學環節
匯編語言是實踐性很強的一門課程,學生為了學好這門課程,必須多做實驗。教師需要科學合理地安排和布置實驗的題目,從而達到通過實驗提高學生能力的目的。同時要加強實驗環節的管理,將實驗分為實驗前、實驗中和實驗后這三個重要的階段。實驗前:教師提前一周布置實驗的題目并給出實驗的具體要求。學生根據題目要求給出解題方法;寄存器和內存單元的分配說明;畫出程序的流程圖;寫出源程序;寫出實驗的步驟;設計程序測試用例和預期的運行結果。實驗中:如果匯編源程序時出現錯誤,學生需要記錄錯誤的類型,按照系統的提示信息仔細檢查和分析,發現錯誤的原因并改正。當連接正確后,使用測試用例的數據運行程序,若運行結果不正確,利用DEBUG調試工具分析產生錯誤的原因,記錄段寄存器、通用寄存器、標志位、內存單元值的變化情況。找到產生錯誤的指令并加以改正,直到運行結果正確。實驗后:學生按照教師的實驗報告要求,認真書寫本次實驗的報告。實驗報告中包括以下內容:題目、要求、解題方法、寄存器和內存單元的分配說明、程序的流程圖、源程序、實驗的步驟、設計程序測試用例和預期的運行結果、調試中出現的語法錯誤、DEBUG調試的斷點設置、寄存器和內存單元的值、運行結果和實驗結論等。學生需在實驗完成的三日內完成并向教師提交實驗報告。教師要認真批閱學生的實驗報告,總結學生容易出現的普遍性錯誤,在下次實驗時提醒學生注意。
5.新技術的引入
學生在學習匯編語言課程時會與高級語言比較,學生普遍認為用高級語言編寫程序更簡單,所以一方面要引導學生意識到匯編語言在編寫與硬件相關的底層系統軟件時具有高級語言所不具備的優勢,同時也要與時俱進地將新的技術和理念引入課堂中。可以增加保護模式下編程和WIN32編程的技術。主要介紹基于Windows窗口的應用程序結構:主程序、窗口主程序、窗口消息處理程序和用戶處理程序等。
6.教學內容與科研相結合
教學和科研是相輔相成的關系,在教學中及時引入科研成果可以提高學生學習的積極性,同時也可以保持教學內容的先進性和實用性。將用匯編語言實現軟件的跟蹤與反跟蹤技術介紹給學生,對于有興趣的學生可以組成研究小組,在教師的指導下深入研究,提高學生對于實際問題的分析和解決能力。
7.輔助教學資源的擴充
充分利用校園網絡平臺,建設匯編語言課程的學習網站,可以將課程的教學大綱、電子教案、課件、講課錄像等在網站上進行發布,建立課程的題庫,方便學生自測學習效果。設置該課程的學習論壇、課程QQ群,教師和學生可以對課程學習和相關的熱點研究問題進行在線討論。鼓勵學生多閱讀與匯編語言相關的英文原版書籍,如:The Art of Assembly Language,Randy Hyde、IBM PC Assembly Language and Programming,Peter Abel、電子工業出版社出版的Intel 匯編語言程序設計(第4版),Kip R. Irvine等。學生多看原版的教材可以開闊視野和獲取更多的知識。
三、結束語
匯編語言是計算機專業的基礎課程,是后續計算機組成原理、計算機接口技術等課程的基礎,在計算機專業的人才培養中起著重要的作用。本文分析了課程存在的一些問題,提出了從課程群的角度明確教學的目標,加強實驗環節的教學,及時在課內引入新技術,同時充分利用網絡資源為學生提供課外學習平臺。培養出具有軟硬件綜合能力的計算機專業人才。
參考文獻:
[1]宋人杰,周欣欣,李紅彪.《匯編語言程序設計》教學改革的探索與實踐[J].東北電力大學學報,2008,(10).
[2]劉輝.匯編語言實驗教學探索[J].計算機教育,2008,(4).
[3]馬力妮.80X86匯編語言程序設計[M].北京:機械工業出版社,2004.
[4]沈美明,溫冬嬋.IBM-PC 匯編語言程序設計[M].北京:清華大學出版社,2010.
(責任編輯:劉麗娜)