馬力妮 趙 剛 夏紅科
文章編號:1672-5913(2009)10-0106-02
摘要:“匯編語言程序設(shè)計”課程是計算機及相關(guān)專業(yè)的專業(yè)基礎(chǔ)課,多年來隨著計算機硬件和軟件的發(fā)展,匯編語言從DOS匯編、80X86匯編到Win32匯編經(jīng)歷了較大的變化。在教學過程中如何準確的制定教學計劃、確定教學內(nèi)容、較好地掌握教學方法是該課程在教學過程中的關(guān)鍵問題。本文根據(jù)作者長期的教學經(jīng)驗和實踐過程對“匯編語言程序設(shè)計”課程的教學內(nèi)容和實踐方法等方面進行了探討。
關(guān)鍵詞:匯編語言;教學內(nèi)容;實踐方法
中圖分類號:G642
文獻標識碼:B
1引言
“匯編語言程序設(shè)計”課程是高等院校計算機及相關(guān)專業(yè)必修的一門課程,尤其是對計算機專業(yè)來說,它是一門靠近機器的語言課程,該語言在時間和空間上具有較高的執(zhí)行效率,對于訓練學生加深對操縱硬件的方法的理解、掌握系統(tǒng)底層程序設(shè)計技術(shù)、程序調(diào)試技術(shù)以及程序的代碼分析都有著不可替代的作用。目前,大多數(shù)“匯編語言程序設(shè)計”的教學內(nèi)容主要是在實模式下的16位/32位匯編指令和程序設(shè)計方法,然而,當前保護模式下的Win32匯編得到了廣泛的應(yīng)用,因此,應(yīng)當合理的調(diào)整教學內(nèi)容,使本門課程更適應(yīng)當前的應(yīng)用環(huán)境。同時,案例教學是當前教學法研究的主要探討的問題,如何將復雜的教學內(nèi)容案例化,是解決在教學過程中匯編語言復雜難學問題的關(guān)鍵。
2匯編語言教學內(nèi)容的分析
2.1匯編語言的應(yīng)用情況
匯編語言是與機器語言一一對應(yīng)的語言,因此,是培養(yǎng)學生了解和直接使用計算機硬件資源的語言,多年來匯編語言一直是學習和理解其他高級語言的基礎(chǔ),在教學過程中也是計算機組成原理、微機原理與接口技術(shù)、操作系統(tǒng)、接口與通信技術(shù)和計算機控制技術(shù)等課程的前導課程,在計算機與相關(guān)學科課程設(shè)置中起著承上啟下的作用。
在實際應(yīng)用中匯編語言也是有廣泛的應(yīng)用需求,例如:與硬件有關(guān)的嵌入式系統(tǒng)的底層設(shè)計、操作系統(tǒng)的核心部分設(shè)計、實時控制系統(tǒng)的軟件設(shè)計、接口電路的初始化程序,外部設(shè)備的底層驅(qū)動程序以及復雜算法的優(yōu)化等,匯編語言具有執(zhí)行速度快占用內(nèi)存空間小的特點。值得說明的是匯編語言可移植性差,不同的應(yīng)用環(huán)境采用的匯編語言也不同,但基本原理是相同的,匯編語法規(guī)則和指令格式基本相同,因此,目前大部分高校在匯編語言程序設(shè)計課程的內(nèi)容設(shè)置上仍以80X86的實模式為教學的主要內(nèi)容。
隨著計算機技術(shù)的發(fā)展,微機的操作系統(tǒng)由在DOS系統(tǒng)變?yōu)閃indows系統(tǒng),在Windows系統(tǒng)下的匯編有較大的變化,Win32匯編的應(yīng)用領(lǐng)域也非常廣泛,例如:在Windows下的系統(tǒng)分析、代碼優(yōu)化、系統(tǒng)漏洞和病毒分析等,通過逆向工程技術(shù)可以還原大型軟件系統(tǒng)底層邏輯以及頂層架構(gòu),通過反匯編的代碼可以加深對Windows底層理解,對高級語言的系統(tǒng)調(diào)試通過反匯編解決底層bug的能力,匯編語言仍然是不可替代的。因此,為了能夠適應(yīng)當前計算機應(yīng)用環(huán)境,匯編語言程序設(shè)計的教學內(nèi)容有必然要引入Win32匯編。
2.280X86的三種工作模式
Windows操作系統(tǒng)是一個多任務(wù)的操作系統(tǒng),可以同時處理多個程序。該系統(tǒng)微處理器有3種工作模式:實模式、保護模式和虛擬86模式,目前匯編語言程序設(shè)計課程主要介紹在實模式下的匯編程序設(shè)計,32位指令也是在實模式下,因此在實模式下的80X86處理器就相當于一個快速的8086處理器。保護模式是80386以上處理器的主要工作模式。在此方式下,可以尋址4GB的地址空間,同時,保護模式提供了先進的多任務(wù)、內(nèi)存分頁管理和優(yōu)先級保護等機制。虛擬86模式可以在保護模式的多任務(wù)條件下進行16位與32位任務(wù)的切換,支持內(nèi)存分頁管理和優(yōu)先級,內(nèi)存的尋址方式和8086相同,可以尋址1 MB的空間。由此可知這三種工作模式具有一定的聯(lián)系。
三種工作模式的存儲結(jié)構(gòu)存在較大差異,實模式是80386以上處理器工作的基礎(chǔ),真正能發(fā)揮Win32作用的是保護模式,保護模式是當前個人計算機的主要工作模式,因此,匯編語言程序設(shè)計課程的內(nèi)容應(yīng)在原來的實模式下的匯編增加保護模式的Win32匯編,但是Win32匯編結(jié)構(gòu)具有一定的難度,可以根據(jù)學生的掌握情況適當增減其內(nèi)容。
3實模式32位匯編與保護模式的Win32匯編的主要區(qū)別
3.1程序架構(gòu)的區(qū)別
實模式匯編程序是將程序分成若干個段,如:數(shù)據(jù)段、代碼段、堆棧段、附加段等段的內(nèi)存模式,每個段的最大存儲空間為64K,段與段之間可以重疊、部分重疊、鄰接和分離。Win32程序是運行在保護模式下的,Windows操作系統(tǒng)把每一個Win32應(yīng)用程序放到分開的虛擬地址空間中去運行,Win32程序只有一種內(nèi)存模式,即FLAT模式,沒有64K的段大小限制,所有的Win32的應(yīng)用程序運行在一個連續(xù)、平坦的4GB空間中。由于Win32的匯編程序不用和段寄存器打交道,可以用任意的段寄存器尋址任意的地址空間,因此,保護模式的Win32匯編比實模式32位匯編在程序架構(gòu)上更簡捷方便。
3.2輸入/輸出的方法
在實模式匯編程序是通過BIOS和DOS中斷完成輸入/輸出操作的,而保護模式的Win32匯編的輸入/輸出操作是調(diào)用Windows的API函數(shù),一般要包括三個關(guān)鍵的動態(tài)連接庫:Kernel32.dll(系統(tǒng)服務(wù)功能)、Gdi32.dll(圖形設(shè)備接口)、User32.dll(用戶接口服務(wù)),從而提供了Win32 API 的核心技術(shù)。這樣使得程序員可以像使用高級語言調(diào)用庫函數(shù)一樣方便的使用API函數(shù),完成很多功能。但是,雖然 Windows提供了大量的API函數(shù),需要使用者深入的了解和掌握消息、句柄、窗口和API函數(shù)的使用方法,這部分內(nèi)容實際上是“Windows程序設(shè)計”課程的主要內(nèi)容,如果“Windows程序設(shè)計”課程安排在“匯編語言程序設(shè)計”課程之前,那么,保護模式的Win32匯編將更容易理解。
4匯編語言案例教學方法的思路
案例教學法是教師利用與教學內(nèi)容密切相關(guān)的實際案例來解決教學中的存在的問題。通過對匯編語言程序設(shè)計課程的分析,本門課程主要存在的問題是:授課學時少教學內(nèi)容多,教學內(nèi)容復雜,尤其是增加了Win32匯編,因此,教學方法的改革是非常必要的。
4.1課堂教學內(nèi)容和方法的改革
課程內(nèi)容的設(shè)置主要完成如下部分,基礎(chǔ)部分:微型計算機的CPU結(jié)構(gòu),存儲器的組織方式,80X86的三種工作模式;80X86的尋址方式;以16位指令為基礎(chǔ),結(jié)合80386以上的32位指令,指令的重點在常用指令(包括32位指令),應(yīng)徹底改變面面俱到的大量指令的堆砌。程序設(shè)計部分:該部分應(yīng)該側(cè)重于匯編程序的特點,切忌用高級語言的思路講匯編語言,要注意突出匯編語言的是底層語言的特點。輸入輸出部分:應(yīng)包括3部分,DOS、BIOS和Win32的接口程序的應(yīng)用,匯編的底層概念主要體現(xiàn)在輸入輸出中斷服務(wù)程序的設(shè)計和調(diào)用,雖然微機目前是Windows操作系統(tǒng),DOS、BIOS的調(diào)用仍然有重要的意義和應(yīng)用價值,如果只介紹Win32的接口程序,就失去了匯編語言的底層的意義。應(yīng)用部分:主要是C/C++與匯編語言的混合編程和Win32匯編的程序設(shè)計,該部分內(nèi)容應(yīng)考慮實際應(yīng)用的案例使學生充分體會匯編的魅力。
4.2實踐環(huán)節(jié)的建設(shè)
將最新的技術(shù)體現(xiàn)在實踐教學中,在教學過程中注重實踐能力和創(chuàng)新能力的培養(yǎng),需要我們重視對實驗實踐環(huán)節(jié)的建設(shè)。
在實踐教學過程中我們編寫了具有一定應(yīng)用價值的實驗案例指導書,任課教師將科研成果移植到教學實驗中,實驗案例包括:語法案例、經(jīng)典案例和綜合案例等。將教學內(nèi)容通過實驗案例在課堂上和實驗中講給學生,將復雜的教學內(nèi)容實例化,讓學生真切的體會到匯編的實用價值。在實驗過程中采用Win32的編譯系統(tǒng):RadASM + MASM32,調(diào)試工具為Code View,該系統(tǒng)使用調(diào)試方便,為后續(xù)的繼續(xù)學習和使用打下基礎(chǔ)。
5結(jié)束語
匯編語言程序設(shè)計課程是計算機及相關(guān)專業(yè)基礎(chǔ)課程,匯編語言具有的應(yīng)用價值是高級語言不可相比的,在教學過程中教學內(nèi)容的合理安排、案例的設(shè)計、實驗方法與實驗工具的確定是課程改革的關(guān)鍵,案例教學模式是提高學生對課程的理解能力、動手能力和創(chuàng)新能力最好的教學模式。
參考文獻:
[l] 李未. 提高教育質(zhì)量,培養(yǎng)創(chuàng)新人才[J]. 計算機教育,2008(1).
[2] 馬力妮.80X86匯編語言程序設(shè)計[M]. 北京:機械工業(yè)出版社,2004.
[3] 趙樹升,楊建軍.DOS/Windows匯編語言程序設(shè)計教程[M]. 北京:清華大學出版社,2005.
[4] 嚴義,包健,周尉. Win32匯編語言程序設(shè)計教程[M]. 北京:機械工業(yè)出版社,2007.
[5] Intel Corporation. IA232 Intel Architecture Software Developers Manual Vol.3: System Programming Guide[M].[S.1.]: [s.n.],2004.
[6] Microsoft Corporation. MSDN Library [M]. [S.1.]:[s.n.],2005.