姚富光
(重慶教育學(xué)院計(jì)算機(jī)科學(xué)系,重慶400067)
匯編語(yǔ)言是一種計(jì)算機(jī)原始語(yǔ)言,是一種面向計(jì)算機(jī)硬件的編程語(yǔ)言。匯編語(yǔ)言功能強(qiáng)大,尤其能直接訪問(wèn)和控制硬件,是硬件系統(tǒng)、系統(tǒng)軟件和嵌入式系統(tǒng)的常用編程工具。其優(yōu)點(diǎn)是代碼簡(jiǎn)短、占用內(nèi)存少、執(zhí)行速度快,能直接訪問(wèn)硬件及端口,在程序優(yōu)化、代碼調(diào)試、解密加密、系統(tǒng)維護(hù)等方面,具有其他語(yǔ)言無(wú)法比擬的優(yōu)勢(shì)。
《匯編語(yǔ)言程序設(shè)計(jì)》是高等院校計(jì)算機(jī)及電子信息類(lèi)專(zhuān)業(yè)的專(zhuān)業(yè)基礎(chǔ)(核心)課,是《操作系統(tǒng)》、《微機(jī)原理和接口技術(shù)》、《計(jì)算機(jī)組成原理》等其它核心課程的重要基礎(chǔ),對(duì)訓(xùn)練學(xué)生掌握程序設(shè)計(jì)技術(shù)、熟悉上機(jī)操作和程序調(diào)試、理解計(jì)算機(jī)工作原理有非常重要的作用。
在匯編語(yǔ)言課程的教學(xué)中,各高校、各層次的學(xué)生普遍反映這門(mén)課程難學(xué)。教師也明顯感覺(jué)學(xué)生的學(xué)習(xí)熱情和重視程度不夠,究其原因有:
(1)教學(xué)方法基本上還是采用常規(guī)的灌輸式的教學(xué)方法,而計(jì)算機(jī)專(zhuān)業(yè)匯編語(yǔ)言課程的教學(xué)目的,除了掌握語(yǔ)言本身的概念、語(yǔ)法規(guī)則等,還要掌握語(yǔ)言的靈活運(yùn)用和程序設(shè)計(jì)方法,使學(xué)生具有編寫(xiě)應(yīng)用軟件的能力,因此,在教學(xué)方法上應(yīng)有所創(chuàng)新和突破。
(2)學(xué)習(xí)匯編語(yǔ)言需要具備一定的計(jì)算機(jī)硬件知識(shí),同時(shí)對(duì)程序設(shè)計(jì)技能和邏輯分析能力要求較高。
(3)匯編語(yǔ)言和高級(jí)語(yǔ)言相比,有大量的語(yǔ)法規(guī)則需要記憶,指令集較多且較瑣碎;同時(shí)沒(méi)有類(lèi)似高級(jí)語(yǔ)言中的完整結(jié)構(gòu)化語(yǔ)句,語(yǔ)法描述與高級(jí)語(yǔ)言相差較大,程序結(jié)構(gòu)不明顯。
(4)傳統(tǒng)教學(xué)中沒(méi)有使用類(lèi)似C、C++這樣的集成編譯開(kāi)發(fā)環(huán)境,編譯運(yùn)行需進(jìn)入保護(hù)模式下的DOS,利用命令行指令操作,大多學(xué)生已經(jīng)習(xí)慣了Windows下的鼠標(biāo)操作,對(duì)DOS命令不熟悉、不適應(yīng),且該模式下調(diào)試運(yùn)行結(jié)果不直觀且容易出錯(cuò)。
(5)近年來(lái)較易掌握的高級(jí)語(yǔ)言的快速發(fā)展,使得匯編語(yǔ)言在常用應(yīng)用程序開(kāi)發(fā)中的應(yīng)用逐步減少,角色逐漸在淡化。
(6)課程設(shè)置的實(shí)踐環(huán)節(jié)不夠,缺少綜合練習(xí)。主要還是因?yàn)槟壳案鞲咝0才诺膶?shí)驗(yàn)均是圍繞如何去消化課堂內(nèi)容而設(shè)置的,很少設(shè)置綜合運(yùn)用,這樣不利于培養(yǎng)學(xué)生解決綜合問(wèn)題的能力,從而阻礙了學(xué)生學(xué)習(xí)的積極性和主動(dòng)性。
上述諸多原因,導(dǎo)致了匯編語(yǔ)言在教與學(xué)的過(guò)程中,學(xué)生先入為主的產(chǎn)生兩個(gè)印象,首先是匯編語(yǔ)言難學(xué),從主觀上就對(duì)該課程產(chǎn)生了畏懼心理;其次是匯編語(yǔ)言的程序設(shè)計(jì)繁瑣、效率低,缺乏實(shí)用性,從而影響學(xué)生的學(xué)習(xí)積極性。而另一方面學(xué)生又受自身的知識(shí)面所限,認(rèn)為匯編語(yǔ)言在目前的程序開(kāi)發(fā)中很少用到,結(jié)果給該課程下了又難又沒(méi)用的結(jié)論。因此,針對(duì)現(xiàn)狀,糾正學(xué)生對(duì)課程的認(rèn)識(shí),改進(jìn)教學(xué)方法,使用更合理的實(shí)驗(yàn)手段,已經(jīng)刻不容緩。
在教學(xué)過(guò)程中,教師不應(yīng)該拘泥于原教材體系,按照學(xué)生的認(rèn)知順序,從打破枯燥的學(xué)習(xí)模式的角度出發(fā),重新組合教學(xué)內(nèi)容。我系之前一直使用清華大學(xué)出版社出版的沈美明、溫冬蟬編寫(xiě)的《IBM-PC匯編語(yǔ)言程序設(shè)計(jì)》,該書(shū)教系統(tǒng)詳盡的講授了匯編語(yǔ)言的編程基礎(chǔ)和技巧,但是由于內(nèi)容是按照傳統(tǒng)的教學(xué)順序,如講第3章的指令系統(tǒng)的時(shí)候,前半部分花費(fèi)大量篇幅逐條將涉及到的所有指令功能講解完,學(xué)生感到枯燥乏味,同時(shí)教師也會(huì)覺(jué)得空洞[1]。
目前我系將教材改為清華大學(xué)出版社出版,王爽編著的《匯編語(yǔ)言》,該書(shū)的一個(gè)重要特點(diǎn)就是注重理論與應(yīng)用向結(jié)合,重心是通過(guò)學(xué)習(xí)關(guān)鍵指令來(lái)深入理解機(jī)器工作的基本原理,將指令的理論知識(shí)貫穿于實(shí)例應(yīng)用中[2]。該書(shū)還有一個(gè)特點(diǎn)是暫時(shí)沒(méi)有用到的指令,放到后面去學(xué)習(xí),這樣的知識(shí)結(jié)構(gòu)安排,有利于學(xué)生把握當(dāng)前知識(shí)點(diǎn),避免將大量精力花費(fèi)在僅僅是學(xué)習(xí)了匯編指令的基本功能,增強(qiáng)了學(xué)生學(xué)習(xí)的信心。
隨著現(xiàn)代教育技術(shù)的迅速發(fā)展,多媒體被廣泛應(yīng)用于教學(xué)中。多媒體教學(xué)以聲音、圖象、文本、動(dòng)畫(huà)等多種形式將授課內(nèi)容生動(dòng)形象地表現(xiàn)出來(lái)。為教學(xué)增加了不少色彩和趣味性,活躍了學(xué)生的思想和課堂氣氛。比如在講解程序時(shí),把每部分指令在計(jì)算機(jī)內(nèi)的執(zhí)行過(guò)程用動(dòng)畫(huà)的形式演示出來(lái),并對(duì)程序進(jìn)行標(biāo)注,這樣大大的增強(qiáng)了教學(xué)效果。但也不能盲目的濫用多媒體,例如當(dāng)程序代碼很長(zhǎng)時(shí),一個(gè)幻燈片放不下,這時(shí)就要采用板書(shū)與多媒體想結(jié)合的方法。否則學(xué)生看了后面忘了前面,反而影響教學(xué)質(zhì)量。
由于學(xué)生在學(xué)習(xí)匯編語(yǔ)言之前已經(jīng)學(xué)習(xí)過(guò)高級(jí)語(yǔ)言,如C語(yǔ)言,這樣在授課時(shí)可以采用和C語(yǔ)言進(jìn)行類(lèi)比教學(xué)的方法,一方面可以使學(xué)生能夠更容易接受和理解匯編語(yǔ)言,同時(shí)又能使學(xué)生更進(jìn)一步的理解高級(jí)語(yǔ)言[2-4]。
比如在介紹相對(duì)基址變址尋址的時(shí)候,匯編指令為:
在C語(yǔ)言程序中我們看到,如:dec.cp[i],dec是一個(gè)變量名,指明了結(jié)構(gòu)體變量的地址,cp是一個(gè)名稱(chēng),指明了數(shù)據(jù)項(xiàng)cp的地址,而i用來(lái)定位cp中的每一個(gè)字符。匯編語(yǔ)言中的做法是:bx.10h[si]。通過(guò)這樣的類(lèi)比,學(xué)生能從C語(yǔ)言的結(jié)構(gòu)角度去理解尋址方式。
將C語(yǔ)言和匯編語(yǔ)言的類(lèi)比貫穿于教學(xué)始終,一方面可以降低學(xué)生學(xué)習(xí)匯編語(yǔ)言的難度,另一方面也可以使學(xué)生更好的理解C語(yǔ)言,做到課程的相輔相承。
利用現(xiàn)有的軟件體系及資源,以MASM6.0編譯器為基礎(chǔ),可使用elipse搭建可視化集成開(kāi)發(fā)系統(tǒng)[5],簡(jiǎn)化編譯、調(diào)試步驟,讓學(xué)生在初步了解匯編程序編譯鏈接過(guò)程的基礎(chǔ)上,進(jìn)一步在Windows下完成所有基本操作。
還可以使用軟件“asm forWindows集成實(shí)驗(yàn)環(huán)境2010”作為集成開(kāi)發(fā)調(diào)試平臺(tái),該軟件除了具備基本的匯編程序編輯、調(diào)試運(yùn)行功能,還有關(guān)聯(lián)出錯(cuò)信息和代碼行、結(jié)果輸出、指令查詢解釋等功能,是匯編初學(xué)者理想的開(kāi)發(fā)環(huán)境。
利用學(xué)生對(duì)高級(jí)語(yǔ)言的熟悉,采用兩種語(yǔ)言的混合編程方式,一方面讓同學(xué)們熟練掌握兩種語(yǔ)言的切換使用,另一方面讓他們感受到兩種語(yǔ)言各有特點(diǎn),例如可以利用匯編語(yǔ)言處理高級(jí)語(yǔ)言中不方便處理的一些問(wèn)題。與高級(jí)語(yǔ)言結(jié)合起來(lái)編程,可根據(jù)各自的優(yōu)點(diǎn)相互補(bǔ)充,取長(zhǎng)補(bǔ)短,并且對(duì)于目前炙手可熱的嵌入式系統(tǒng)軟件開(kāi)發(fā)來(lái)說(shuō),也需要通過(guò)這種方式為日后的學(xué)習(xí)打下堅(jiān)實(shí)的軟硬件基礎(chǔ)?;炀幱袃?nèi)聯(lián)式和模塊連接兩種方式,前者通過(guò)_asm關(guān)鍵字嵌入,后者通過(guò)分開(kāi)編譯和共同連接來(lái)實(shí)現(xiàn)。模塊連接方式需要用到C語(yǔ)言主子程序調(diào)用規(guī)則的知識(shí)。
增強(qiáng)綜合實(shí)踐教學(xué),尤其多個(gè)相關(guān)知識(shí)點(diǎn)的聯(lián)合運(yùn)用,增加整體實(shí)訓(xùn)任務(wù)的練習(xí),做到溫故知新。實(shí)踐任務(wù)注重實(shí)際應(yīng)用編程,注重與硬件相結(jié)合,如屏幕顯示、鍵盤(pán)輸入、端口讀寫(xiě)等,而不是僅僅為了熟悉匯編指令而編程。在匯編實(shí)踐教學(xué)中,結(jié)合Windows API調(diào)用,編寫(xiě)Windows下的簡(jiǎn)單應(yīng)用程序,比如文件讀寫(xiě),端口讀寫(xiě)等,讓學(xué)生認(rèn)識(shí)到匯編并不是一個(gè)過(guò)時(shí)的編程語(yǔ)言[6-7]。根據(jù)本、專(zhuān)科的不同,設(shè)置在教學(xué)中理論教學(xué)與實(shí)踐教學(xué)的課時(shí)比例,做到少而精,難度適中。
針對(duì)該匯編語(yǔ)言教學(xué)中所存在的指令種類(lèi)繁多、概念抽象、難以理解和編程技術(shù)復(fù)雜等問(wèn)題,以培養(yǎng)學(xué)生扎實(shí)的計(jì)算機(jī)理論基礎(chǔ)和良好的實(shí)踐能力為目標(biāo),結(jié)合自身體會(huì),在理論教學(xué)和實(shí)踐教學(xué)方面探討和提出了一些具體的改革措施,增強(qiáng)了學(xué)生的學(xué)習(xí)興趣和信心,提高了教學(xué)質(zhì)量。
[1]沈美明.IBM-PC匯編語(yǔ)言程序設(shè)計(jì)(第2版)[M].北京:清華大學(xué)出版社,2003.
[2]王爽.匯編語(yǔ)言(第二版)[M].北京:清華大學(xué)出版社,2008.
[3]雙娜.匯編語(yǔ)言課程教學(xué)改革與探討[J].計(jì)算機(jī)工程應(yīng)用技術(shù),2010,6(15):4081-4083.
[4]黃劍玲,廖宇凡.匯編語(yǔ)言程序設(shè)計(jì)的教學(xué)改革與實(shí)踐[J].上饒師范學(xué)院學(xué)報(bào),2005,25(6):75-78.
[5]劉二榮,王海峰.匯編語(yǔ)言程序設(shè)計(jì)課程教學(xué)改革與探討[J].中國(guó)成人教育,2009,(1):143-144.
[6]劉旭明,齊燦,鄭利華.基于建構(gòu)主義的《匯編語(yǔ)言》裸堂教母改革探索與實(shí)線[J].桂林航天工業(yè)高等專(zhuān)科學(xué)校學(xué)報(bào),2007,(2):39-41.
[7]陳建孝,趙蕪野.加強(qiáng)基礎(chǔ)重視實(shí)踐面向未來(lái)——“匯編語(yǔ)言程序設(shè)計(jì)”教學(xué)改革之我見(jiàn)[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2005,23(s0):106-109.