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