摘要:本文闡述了匯編語言課程的地位,對我國高校現(xiàn)有的匯編語言開發(fā)環(huán)境進行了分析,針對實驗教學(xué)手段滯后的問題而開發(fā)了一個集成教學(xué)環(huán)境,旨在加強匯編語言的實踐教學(xué)。
關(guān)鍵詞:匯編語言;集成開發(fā)環(huán)境;實踐教學(xué)
中圖分類號:G642
文獻標(biāo)識碼:B
文章編號:1672-5913(2008)06-0019-03
1教學(xué)現(xiàn)狀及存在問題
在目前匯編語言的教學(xué)過程中,普遍存在的問題就是主流的微型計算機已經(jīng)進入了64位時代,多任務(wù)的操作系統(tǒng)取代了DOS,而絕大多數(shù)高校匯編語言程序設(shè)計課程仍然是單任務(wù)操作系統(tǒng)(DOS)下的8086匯編語言,給學(xué)生的印象是跟不上時代發(fā)展的步伐。加之,匯編語言和機器的體系結(jié)構(gòu)結(jié)合緊密,使用者需要對計算機的組成、硬件的控制和指令的解釋過程有比較清晰的掌握;程序的移植性不好;指令眾多,且同種類型的操作(算術(shù)、邏輯、轉(zhuǎn)移等)要根據(jù)操作數(shù)和狀態(tài)標(biāo)志選擇不同的指令(如無符號的運算與帶符號的運算、條件轉(zhuǎn)移等);運算中要根據(jù)數(shù)據(jù)長度懸而選擇不同的寄存器;程序的編譯調(diào)試比較麻煩;編寫出吸引人們感官的程序比較困難。因此,學(xué)生在匯編語言的學(xué)習(xí)中容易產(chǎn)生厭煩情緒。有的學(xué)校減少了匯編語言的課時,還有的學(xué)校甚至干脆取消了這門課程。
2“匯編語言”課程的地位
匯編語言機器級在高層機器和低層機器間扮演了承上啟下的角色,是計算機及相關(guān)專業(yè)學(xué)生需要掌握的重要專業(yè)基礎(chǔ)知識之一。
從應(yīng)用場合來看,匯編語言是能夠利用計算機所有硬件資源并能直接控制硬件的唯一計算機語言,也是除機器語言之外最接近計算機硬件的編程語言。匯編語言程序產(chǎn)生的代碼精簡、運行效率高,具有高級語言不可比的“時空”優(yōu)勢;匯編語言在一些應(yīng)用如嵌入式系統(tǒng)和工業(yè)控制中,匯編語言最最佳的甚至是唯一選擇的開發(fā)語言。在一些實際的應(yīng)用系統(tǒng)中,人們往往會用匯編語言來徹底重寫某些經(jīng)常調(diào)用的過程以期獲得更高的性能。
匯編語言為“計算機組成原理”、“計算機接口與通信”、“操作系統(tǒng)”、“高級語言程序設(shè)計”等相關(guān)課程提供了必要的基礎(chǔ)知識,如圖1所示。
圖1 匯編語言和其它課程的關(guān)系
從人才培養(yǎng)方面來看,計算機專業(yè)的學(xué)生不應(yīng)僅僅滿足于利用他人開發(fā)的軟件和工具來解決實際問題,還應(yīng)具備分析、研究原有軟件系統(tǒng),改進、完善、提高原有系統(tǒng)功能的能力。匯編語言的教學(xué)將使學(xué)生受到更嚴(yán)密、更系統(tǒng)的程序設(shè)計及思維方法的訓(xùn)練,為深入分析、研究、開發(fā)軟件系統(tǒng)打下良好基礎(chǔ)。
3加強實踐教學(xué)
為了提高匯編語言教學(xué)的效果,筆者認(rèn)為應(yīng)該從以下幾個方面入手。
(1) 清理認(rèn)識上的誤區(qū)。在上第一堂課時,用一個課
時來講匯編語言的特點及其應(yīng)用場合、它和高級語言區(qū)別、其難點在哪里、本課程該如何展開等內(nèi)容,從而打消學(xué)生畏難和輕視的思想。
(2) 要充分利用好計算機輔助教學(xué)(CAI)的優(yōu)勢,要讓課件“動”起來。目前普通本科計算機專業(yè)的教學(xué)大都采用了CAI教學(xué),但大都是播放課件(如PPT),實質(zhì)上是用鼠標(biāo)代替了粉筆、屏幕代替了黑板。而且由于播放的速度遠快于板書,學(xué)生反映根本來不及仔細理解有關(guān)內(nèi)容,效果反而不如板書。多媒體教學(xué)提供了視覺、聲音的特殊效果,在對重點、難點問題的講授中要充分利用多媒體教學(xué)的優(yōu)勢。如講授指令A(yù)DD AX,[2000H],如果是靜態(tài)的課件,就是一句“這是一條加法指令,把累加器的內(nèi)容和邏輯地址為2000H存儲單元的內(nèi)容相加,運算結(jié)果送回累加器”。而動態(tài)的課件會先畫出一個模型計算機,然后演示該指令解釋的全過程:從CPU內(nèi)存中取出指令、譯碼、數(shù)據(jù)尋址(從寄存器和內(nèi)存中取得操作數(shù))、啟動ALU運算、保存結(jié)果到累加器和影響狀態(tài)標(biāo)志寄器。每一步都要圖示化出數(shù)據(jù)的變化和走向以及相應(yīng)的控制時序。在聲音和顯示控制的程序設(shè)計教學(xué)中,更應(yīng)展示多媒體教學(xué)的風(fēng)采。多媒體教學(xué)豐富的動感效果能極大地增加學(xué)生對指令的感性認(rèn)識,增強他們學(xué)習(xí)的興趣。當(dāng)然,制作這樣的課件耗時耗力,學(xué)校應(yīng)該切實加大對CAI教學(xué)的支持力度。
(3) 在匯編語言的教學(xué)中要加強和高級語言的比較教學(xué)。在學(xué)習(xí)匯編語言時,學(xué)生一般都具有了C語言程序設(shè)計的知識。在匯編語言程序設(shè)計的教學(xué)過程中,應(yīng)該比較這兩種語言的編程特點、程序代碼空間、運行速度等,以加深學(xué)生對這兩種語言的理解。如在講授基址變址尋址方式中,可以用C語言和匯編語言分別實現(xiàn)對數(shù)組運算的實例來闡述。要加強高級語言(C語言)和匯編語言的混合編程的教學(xué),充分闡述C語言結(jié)構(gòu)化設(shè)計和匯編語言對機器低層(存儲器、寄存器、中斷處理、I/O)控制的優(yōu)點。這樣即可充分調(diào)動學(xué)生的學(xué)習(xí)積極性,也可以培養(yǎng)學(xué)生解決具體應(yīng)用的能力。
(4) 加強操作系統(tǒng)相關(guān)知識的滲透和虛擬模式下的編程教學(xué)。目前操作系統(tǒng)的核心部分是用匯編語言來實現(xiàn)的,如對CPU本身的初始化(包括定時器、中斷、I/0端口等的初始化);系統(tǒng)引導(dǎo)啟動程序的完成;在處理器的控制下從實模式進入保護模式,實現(xiàn)虛擬存儲器的管理和多任務(wù)的調(diào)度。將該部分引入到教學(xué)中是有必要的,能加強學(xué)生對操作系統(tǒng)中內(nèi)核引導(dǎo)啟動與駐留、保護模式和實模式的切換、多任務(wù)的調(diào)度等知識的理解。在講授操作系統(tǒng)對程序的引導(dǎo)和進程的調(diào)用時,適當(dāng)介紹計算機病毒的機理,以提高學(xué)生的學(xué)習(xí)興趣并擴展知識面。
(5) 要切實抓好實驗教學(xué)環(huán)節(jié)。課堂主體教學(xué)和一般作業(yè)很難讓學(xué)生真正領(lǐng)會本課程涵蓋的概念、原理、方法和技巧等。經(jīng)驗表明,學(xué)習(xí)并真正掌握匯編語言程序設(shè)計的最好方式是充分實踐。實驗教學(xué)和課堂主體教學(xué)“兩手都要硬”,在課時分配上達到1:1。
4建立實驗教學(xué)平臺
傳統(tǒng)的匯編語言上機實驗一般是在DOS環(huán)境下的進行,如圖2所示。而DOS逐步被淘汰,目前流行使用Windows操作系統(tǒng)平臺,學(xué)生對DOS的使用相對陌生。盡管Windows保留了DOS的工作方式,可以切換到DOS提示符下操作,但是對建立文件夾(目錄)、進入文件夾(目錄)、刪除文件等操作,學(xué)生們常返回到Windows環(huán)境中來完成,顯然會影響上機的效率和增加編程的繁瑣,同時也不利于WIN32虛擬模式下的教學(xué)。
圖2 匯編語言程序開發(fā)的傳統(tǒng)操作過程
因此,必須建立基于Windows操作系統(tǒng)的W32匯編語言集成實驗環(huán)境,該環(huán)境是一個集編輯、編譯、連接、程序調(diào)試和幫助于一體的實驗平臺。筆者主持的課題組經(jīng)過系統(tǒng)的調(diào)研、編程和測試已開發(fā)出一個匯編語言集成編譯系統(tǒng),該系統(tǒng)已成功應(yīng)用到本課程的實驗教學(xué)中,效果較好。系統(tǒng)的運行界面如圖3所示。
其次,要精心編寫實驗指導(dǎo)書和安排實驗內(nèi)容,組織好課程設(shè)計。結(jié)合目前廣泛使用的PC機的Intel 80x86指令系統(tǒng)來開展教學(xué),通過在集成環(huán)境下匯編語言的上機實訓(xùn),加深學(xué)生對指令系統(tǒng)和匯編語言程序設(shè)計的認(rèn)識和理解。實驗的內(nèi)容可以組織如下:
(1) 指令系統(tǒng)。用DEBUG調(diào)試工具來熟悉指令功能和尋址方式,掌握簡單程序的調(diào)試。通過實驗了解CPU的組成,熟悉8086/8088寄存器組、8086/8088存儲器組織、8086/8088標(biāo)志位的意義。
(2) 匯編語言程序設(shè)計。包括順序程序設(shè)計、循環(huán)程序設(shè)計、分支程序設(shè)計、子程序設(shè)計和宏匯編程序設(shè)計等實驗。掌握各種程序結(jié)構(gòu)的設(shè)計方法,了解宏匯編、條件匯編和模塊化程序設(shè)計等匯編語言程序的概念,掌握宏匯編程序設(shè)計的基本方法。
(3) 輸入輸出與中斷。包括輸入輸出程序設(shè)計、中斷處理程序編寫、常用系統(tǒng)中斷(如時鐘顯示、鍵盤和顯示器、使用鼠標(biāo)的程序設(shè)計)控制等實驗。
(4) Win32匯編語言程序設(shè)計。包括32位微處理器與32位指令、保護模式下的32位匯編語言程序設(shè)計等實驗。
(5) 匯編語言與C/C++的混合編程。主要包括C/C++程序與匯編語言程序的連接、嵌入?yún)R編與模塊調(diào)用等。
圖3 匯編語言集成開發(fā)環(huán)境
參考文獻
[1] 沈美明. IBM-PC匯編語言程序設(shè)計[M]. 北京:清華大學(xué)出版社,2001.
[2] KIP R. IRVINE. Assembly Language for the IBM-PC[M]. Prentic Hall INC,1993.
[3] 李學(xué)干. 計算機系統(tǒng)的體系機構(gòu)[[M]. 北京:清華大學(xué)出版社,2006.
[4] 金海溶. 用實驗方法改革匯編語言的教學(xué)[J]. 計算機教育,2006,(1):36-37.
[5] 田慶. 匯編語言程序設(shè)計課程的教學(xué)探討[J]. 電器電子教學(xué)學(xué)報,2007,(2):14-15.
[6] 馮建文,包健. “匯編語言程序設(shè)計”課程的教學(xué)改革與探討[J]. 吉林大學(xué)學(xué)報(信息科學(xué)版),2005,(23).
[7] 劉躍華. 智能化的匯編語言集成編譯環(huán)境[J]. 計算技術(shù)與自動化,2007,(3).