摘 要:匯編語言是一門比較難學(xué)的多個專業(yè)的基礎(chǔ)課程,本文首先分析了匯編語言教學(xué)中存在的若干難點(diǎn),其次針對這些難點(diǎn),本文分別從多個方面來探討高校匯編語言的教學(xué)改革措施。
關(guān)鍵詞:匯編語言 教學(xué)難點(diǎn) 教學(xué)改革1
中圖分類號:G420文獻(xiàn)標(biāo)識碼:A文章編號:1674-098X(2012)04(b)-0176-01
1 引言
機(jī)器語言是計(jì)算機(jī)能直接識別的語言,它是一種由0和1組成的二進(jìn)制語言,匯編語言是對機(jī)器語言符號化的一種語言[1],屬于低級語言。由于匯編語言與硬件有著千絲萬縷的緊密聯(lián)系,因此用匯編語言經(jīng)過編輯、編譯、鏈接等步驟獲得的可執(zhí)行程序不僅運(yùn)行速度快、占用內(nèi)存空間少,而且能有效地對硬件設(shè)備進(jìn)行控制以及開發(fā)。匯編語言的應(yīng)用廣泛,例如:在可行性分析、網(wǎng)絡(luò)安全維護(hù)、生物特征識別、嵌入式系統(tǒng)開發(fā)、農(nóng)業(yè)機(jī)械化以及電力控制等等領(lǐng)域中都可以看見匯編程序的身影。因此在現(xiàn)在很多高校里,匯編語言不僅是計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科專業(yè)的主要課程,也是其他相關(guān)專業(yè)的基礎(chǔ)課程[2],例如:電子技術(shù)、自動控制、機(jī)械工程、通信工程等相關(guān)學(xué)科或?qū)I(yè)都會使用到匯編語言。但是,另一方面匯編語言還具有指令集繁多、尋址方式多樣、程序編寫與調(diào)試復(fù)雜、程序可讀性較差等等缺點(diǎn),再加上匯編語言常常涉及中央處理器、內(nèi)存單元和I/O接口等多個硬件處理細(xì)節(jié),因此對于高校匯編語言的教學(xué)來說,如何盡快盡好地讓學(xué)生掌握匯編語言編程往往是比較棘手的問題。為了解決這一問題,本文將對匯編語言教學(xué)中存在的若干難點(diǎn)進(jìn)行分析,以便找到突破點(diǎn),更好地為匯編語言教學(xué)改革服務(wù)。
2 匯編語言教學(xué)中的難點(diǎn)
筆者目前已經(jīng)在高校從事匯編語言教學(xué)多年,經(jīng)過多年的教學(xué)發(fā)現(xiàn),在匯編語言教學(xué)中存在如下幾處困難:(1)學(xué)生往往弄不清什么是寄存器,什么是存儲器,進(jìn)而無法理解尋址方式BX和[BX]之間的區(qū)別。(2) 由于匯編語言中尋址方式有很多種,寄存器也有多個,因此學(xué)生在學(xué)習(xí)尋址方式時經(jīng)常會出錯,例如:存儲器尋址時出現(xiàn)[DX]、[AX]、[CX]、[DS]以及[AX+BX]等錯誤。尋址方式是匯編語言的基礎(chǔ),如果無法熟練地掌握各種尋址方式,那么匯編語言程序的編寫將變得舉步維艱。(3)學(xué)生在使用屬性修改運(yùn)算符PTR、字節(jié)定義偽指令DB、字定義偽指令DW以及雙字定義偽指令DD存在很多問題,例如:對于何種情況下需要使用PTR常常把握不準(zhǔn),對于由DB、DW和DD定義的數(shù)據(jù)在內(nèi)存中的存放情況含糊不清。(4)匯編語言指令繁多,各個指令的使用規(guī)則差異很大,因此學(xué)生在學(xué)習(xí)指令時經(jīng)常出現(xiàn)指令使用違反規(guī)則的情況,例如:使用指令DIV進(jìn)行16位數(shù)的除法時沒有把被除數(shù)事先放進(jìn)默認(rèn)的寄存器AX和DX中,堆棧操作時將進(jìn)棧指令寫成PUSH AL,以及將SAL、SHR、SAR、RCL、RCR、ROL、ROR等移位指令不加區(qū)分地使用。(5)復(fù)雜的匯編語言編程讓已經(jīng)具有高級語言編程經(jīng)驗(yàn)的學(xué)生索然無味,厭學(xué)情緒時常出現(xiàn)。
3 針對難點(diǎn)而采取的教學(xué)改革措施
針對上一節(jié)總結(jié)的匯編教學(xué)中存在的難點(diǎn),這里我們建議分別可以采取如下教學(xué)改革措施:
(1)首先告訴學(xué)生寄存器和存儲器盡管是計(jì)算機(jī)的重要硬件組成部分,但是寄存器是在CPU中的,而存儲器這里主要指的是內(nèi)存,因此寄存器和存儲器是兩種不同的相互獨(dú)立的硬件設(shè)備。尋址方式中BX屬于寄存器尋址,獲得的操作數(shù)是放在寄存器中的,也就是在CPU里的,而[BX]屬于存儲器尋址,獲得的操作數(shù)是放在內(nèi)存中的,因此兩者是完全不同的尋址方式,此外,[BX]中的BX寄存器里存放的是內(nèi)存地址。實(shí)際課堂講解時還可以利用打比方的方式配合說明,比如把BX這個寄存器比喻成一個盒子,內(nèi)存比喻成一幢大樓,大樓的每個房間就是內(nèi)存單元,那么尋址方式BX獲得的操作數(shù)是放在盒子中的,而利用[BX]獲取操作數(shù)時,盒子中放的是操作數(shù)的地址,先從盒子中取出地址,然后根據(jù)地址到大樓里面找到對應(yīng)的房間,那么操作數(shù)就在這個房間里。
(2)將所有的尋址方式以及每種尋址方式所涉及的寄存器用一個表格來說明,如文獻(xiàn)[3]第45頁的表3-2所示,這樣做的目的使得學(xué)生能很清楚地知道每種尋址方式可以使用哪些寄存器,例如:基址尋址中可以使用的16位寄存器只有BP和BX兩種,而變址尋址可以使用的16位寄存器也只有SI和DI兩種。
(3)在講解屬性修改運(yùn)算符PTR時也可以采用表格的形式,將所有需要使用PTR的情況給羅列出來,實(shí)際講課經(jīng)驗(yàn)證明一個表格有時候比語言更具有表達(dá)能力。此外,對于數(shù)據(jù)定義偽指令DB、DW和DD的講解,則一定要用典型的例子來加以說明,例如:比較BUF1 DB ‘A’,’B’與BUF DW ‘AB’這兩條數(shù)據(jù)定義偽指令中字母A和字母B在內(nèi)存中的存放順序就可以使得學(xué)生清晰地了解DB與DW的不同之處了。
(4)匯編語言的指令的確是非常多,要全部記住,對于初學(xué)匯編語言的學(xué)生來說是比較困難的,因此在教學(xué)中針對常用的指令需要多舉例子,利用較多的程序片段來說明指令的用法。例如:針對每個移位指令都需要舉一個程序?qū)嵗齺砑右越忉?,并且還需要適時地在黑板上畫出移位指令執(zhí)行前后,標(biāo)志寄存器和操作數(shù)的變化情況。指令的講解方法其實(shí)和C語言中表達(dá)式、語句的講解方法是一樣的,就是通過多個程序?qū)嵗齺磉M(jìn)行強(qiáng)化。
(5)首先,在匯編語言開講的第一節(jié)課,給學(xué)生多介紹一些匯編語言在將來實(shí)際工作中的作用,并以就業(yè)為導(dǎo)向,激發(fā)學(xué)生學(xué)習(xí)匯編語言的熱情。其次,由于學(xué)生多數(shù)都學(xué)習(xí)過C語言,因此課堂授課可多與C語言進(jìn)行對照講解,例如:在匯編語言的第一節(jié)課,就演示一個程序?qū)嵗?,在屏幕上顯示“Welcome to Assembly Language”,這是很多C語言的第一節(jié)課中常采用的方式。最后,建議盡早地介紹DOS和BIOS系統(tǒng)功能調(diào)用,以便學(xué)生能進(jìn)行實(shí)際地輸入與輸出操作,增加學(xué)生學(xué)習(xí)的興趣。
4 結(jié)語
匯編語言課程是高校里相關(guān)專業(yè)的一門重要的基礎(chǔ)課程,它編程與調(diào)試復(fù)雜,程序更是難以閱讀與理解,因此匯編語言的學(xué)習(xí)會顯得比較吃力。本文分析了匯編語言教學(xué)中存在的若干難點(diǎn),并針對這些難點(diǎn)分別提出了相應(yīng)的教學(xué)改革措施,希望這些措施可以給其他信息類課程的教學(xué)改革所借鑒。最后需要提一下的是筆者多年來以文獻(xiàn)[3]為教材進(jìn)行匯編語言的教學(xué)工作,因此文中所說指令用法都以文獻(xiàn)[3]為基礎(chǔ)。
參考文獻(xiàn)
[1] 劉三榮,王海峰.匯編語言程序設(shè)計(jì)課程教學(xué)改革與探討[J].中國成人教育,2009(1):143~144.
[2] 王佑湖.“匯編語言程序設(shè)計(jì)”課程教學(xué)方法的探討[J].教育與職業(yè),2008(2):127~128.
[3] 孫力娟,李愛群,等.微型計(jì)算機(jī)原理與接口技術(shù)[M].清華大學(xué)出版社,2007,2.