張有為 汪永紅 司彬彬 馬登偉
摘要:匯編語言是計算機專業(yè)一門很重要的專業(yè)基礎(chǔ)課程,但是由于其與硬件結(jié)合緊密以及教學(xué)學(xué)時數(shù)的縮短,給本門課程的教學(xué)造成了一些困難。文章分析了該課程教學(xué)困難的原因,就如何提高教學(xué)效果可采用的一些可行方法進行了探索。
關(guān)鍵詞:匯編語言;課程;教學(xué);學(xué)時
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2012)22-5414-02
Focus on the Difficulty of the Assembly Language Teaching, and Improve the Teaching Effect
ZHANG You-wei, WANG Yong-hong, SI Bin-bin, MA Deng-wei
(Information Engineering University, Zhengzhou 450052, China)
Abstract: The assembly language is a very important major basic courses of computer science, but its closely combination with the hardware and the shortening of the teaching time, lead to some difficulties for teaching this course. This paper analyzes the reason for the difficulty of the course teaching, and also search for feasible ways to improve the teaching effectiveness.
Key words: assembly language; course; teaching effectiveness; teaching hours
“匯編語言”是計算機專業(yè)學(xué)員必修的一門專業(yè)基礎(chǔ)課程,對培養(yǎng)學(xué)員程序設(shè)計能力,理解計算機工作原理,從事底層軟件開發(fā)和軟硬件結(jié)合的項目開發(fā)均具有非常重要的應(yīng)用。但是,這門課程又是學(xué)員感到比較難學(xué)的一門課程,習(xí)慣了采用面向?qū)ο蠡蚪Y(jié)構(gòu)化程序設(shè)計思想的高級語言程序設(shè)計方法,對匯編語言這種偏“機器化”的低級語言編程方法,學(xué)員們一時難以理解和接受,再加上有較多的語法規(guī)則和指令尋址方式需要記憶,語言編程環(huán)境又不熟練,使得學(xué)員在一開始學(xué)習(xí)時便陷入茫然狀態(tài)。因此,就本門課程如何提高教學(xué)質(zhì)量,增強教學(xué)效果,提高學(xué)員在一些底層軟件和軟硬結(jié)合方面的編程能力,是一個值得重視的問題。該文結(jié)合作者過去幾年的教學(xué)實踐,就目前計算機專業(yè)匯編語言教學(xué)學(xué)時壓縮到了40學(xué)時,我們總結(jié)了一些可行的、比較好的方法。
1匯編語言教學(xué)難點分析
1.1指令系統(tǒng)復(fù)雜
匯編語言的指令是用一些具有相應(yīng)含義的助記符來表達的,雖然有助于記憶,但是一般處理器的指令集少則幾十條多則上百條,所有這些指令要在幾節(jié)課內(nèi)全部講完,要求學(xué)員在這么短的時間內(nèi)準確記憶這么多條指令幾乎是不可能的,更不用說讓其理解了。可如果指令掌握得不夠好,學(xué)員對大部分指令都感到陌生,在進行程序設(shè)計時就會感到無從下手,甚至讀程序時也會覺得“云里霧里”,不理解程序的含義。這就猶如寫作文一樣,基本的語法不會,造句不成型,豈能寫出好的文章?
1.2教學(xué)時間縮短
計算機專業(yè)的課程更新速度快,隨著新知識的不斷涌入,不可避免要開設(shè)一些新的課程。例如:幾年前我們計算機專業(yè)還沒有開設(shè)Linux操作系統(tǒng)、嵌入式軟件開發(fā),網(wǎng)絡(luò)新技術(shù)、Oralc數(shù)據(jù)庫等課程,現(xiàn)在則新增加了這些課程,需要安排相當?shù)慕虒W(xué)學(xué)時。而對于一些象匯編語言這樣的基礎(chǔ)課程又不能丟掉,所以只能縮短課程教學(xué)學(xué)時。這使得教員只能講授前面章節(jié)中的硬件基礎(chǔ)和指令這些比較枯燥的內(nèi)容,而許多比較有意義并且能讓學(xué)員產(chǎn)生學(xué)習(xí)熱情的內(nèi)容被刪除了,比如:圖像顏色和動畫程序設(shè)計的教學(xué)內(nèi)容。同時隨著實驗學(xué)時的減少,造成學(xué)員往往只能做一些非?;A(chǔ)性的實驗,而一些能讓學(xué)員有“成就感”的實驗,如定時發(fā)聲、動畫顯示等實驗已經(jīng)沒有時間安排了。這些均造成學(xué)員覺得這門課枯燥難學(xué),沒有耐性和興趣學(xué)習(xí),更不知道學(xué)了這門語言能干什么。
1.3學(xué)員基礎(chǔ)薄弱
我們在教學(xué)過程中,發(fā)現(xiàn)許多學(xué)員盡管學(xué)過C或C++,但是缺乏調(diào)試程序的基本能力,當編譯或運行過程中出現(xiàn)錯誤時大多數(shù)學(xué)員只會對照已有的源代碼來查找錯誤或請教員一起幫忙調(diào)試,不知道如何通過單步跟蹤和設(shè)置斷點來調(diào)試查找錯誤。即使有些學(xué)員具備一些調(diào)試能力,他們的辦法也只是在必要的地方加一些輸出語句來觀察變量的值,不知道如何在調(diào)試環(huán)境中查看變量和內(nèi)存單元的值。因此,對于“更加復(fù)雜”(只是文本界面多些,用多了自然就熟悉了)的匯編調(diào)試環(huán)境,他們更加找不到解決問題的辦法。再加上匯編語言的輸入和輸出需要用到中斷,不像高級語言那么方便就能輸出一個變量的值,學(xué)員對于在內(nèi)存當中直接觀察變量的值還不適應(yīng),所以當出現(xiàn)問題時,很少有學(xué)員能改正自己程序中的錯誤。
1.4教學(xué)內(nèi)容陳舊
和大多數(shù)高校一樣,我們選用的教材是清華大學(xué)沈美明主編的《IBM-PC匯編語言程序設(shè)計》,該教材以8086指令系統(tǒng)為主來進行介紹,實習(xí)實驗環(huán)境主要還是DOS。然而這些教學(xué)和實驗內(nèi)容與實際情況相距甚遠,我們知道不同的機器指令系統(tǒng)不同,而且隨著嵌入式處理器的廣泛應(yīng)用,用X86的指令系統(tǒng)編程的范圍越來越少,這使得學(xué)員在學(xué)完這門課后到實際編程環(huán)境中還要自學(xué)相關(guān)處理器的指令集,比如ARM、MIPS、PowerPC等。對于實驗環(huán)境的選擇,大多數(shù)還是在DOS環(huán)境,由于現(xiàn)在的機器完全是Windows操作系統(tǒng),“圖形化”的編程界面,學(xué)員普遍對DOS這種文本的編程、調(diào)試環(huán)境不熟悉,調(diào)試結(jié)果難以出現(xiàn),實驗結(jié)果感覺很抽象,使得學(xué)員在學(xué)習(xí)過程中產(chǎn)生一些畏難情緒。
2提高教學(xué)效果的可行方法
2.1采用多媒體教學(xué)
如果有可能,最好采用能夠邊上課、邊實驗、邊演示的多媒體教室,使用多媒體課件教學(xué)。通過文字圖像、聲音、動畫來激發(fā)學(xué)員的學(xué)習(xí)熱情,增強教學(xué)效果。充分利用多媒體的功能,模擬程序指令的執(zhí)行過程,著重描繪教學(xué)重點和難點。我們可以在教室的機器上安裝調(diào)試環(huán)境,在上課過程中對一些簡單指令執(zhí)行使用調(diào)試環(huán)境進行演示,給學(xué)員一個了解“機器世界”的窗口,真正理解機器(CPU)對指令的執(zhí)行過程。這樣可以使學(xué)員快速入門,對學(xué)習(xí)本課程建立初步的信心。
2.2精心選擇教材
教材是提高教學(xué)質(zhì)量的基礎(chǔ)和前提,是學(xué)員系統(tǒng)學(xué)習(xí)知識的依據(jù)。一本好教材對于培養(yǎng)學(xué)員自學(xué)能力和獨立思考能力起著積極的作用。學(xué)員可以依據(jù)教材理解課堂教學(xué)內(nèi)容,深入了解本學(xué)科各個領(lǐng)域的知識。對于清華大學(xué)的《IBM-PC匯編語言程序設(shè)計》這本教材,雖然它的內(nèi)容全面而且豐富,但是由于教學(xué)學(xué)時的減少,導(dǎo)致很多內(nèi)容特別是應(yīng)用方面的內(nèi)容無法講解,因此很多內(nèi)容只能作為自學(xué)內(nèi)容,在教學(xué)中我們發(fā)現(xiàn)一本教材如果有較多的內(nèi)容不講或者作為自學(xué)內(nèi)容,學(xué)員會“錯誤地”認為這門課不重要或太難學(xué)。所以我們建議更換教材,不再以8086指令系統(tǒng)為基礎(chǔ),考慮到嵌入式系統(tǒng)的發(fā)展趨勢,可以加入一些RAM指令集、32位匯編和AT&T匯編的內(nèi)容,為后續(xù)的嵌入式系統(tǒng)及其其它相關(guān)課程打下一些基礎(chǔ)。
2.3優(yōu)化教學(xué)內(nèi)容
目前,這門課程主要的教學(xué)內(nèi)容有:基本知識(數(shù)、計算機組織),編程工具(指令系統(tǒng)、尋址方式),編程方法(三種結(jié)構(gòu)、過程)和應(yīng)用(發(fā)聲、圖形程序設(shè)計)。由于學(xué)時數(shù)的減少,我們建議壓縮或取消發(fā)聲、圖形程序設(shè)計這部分的內(nèi)容,如果教員覺得非常必要講,可以安排在課程設(shè)計部分(不占課程教學(xué)學(xué)時)。另外鑒于目前網(wǎng)絡(luò)安全、網(wǎng)絡(luò)病毒泛濫的嚴峻形式,建議在應(yīng)用部分教學(xué)中適當增加病毒程序設(shè)計的內(nèi)容。對于前三部分的內(nèi)容也可根據(jù)實際情況進行適當壓縮。與此同時,匯編語言是作為嵌入式系統(tǒng)開發(fā)與應(yīng)用和嵌入式系統(tǒng)課程設(shè)計的專業(yè)基礎(chǔ)課,結(jié)合計算機專業(yè)課程設(shè)置,建議在最后余留四到六學(xué)時的時間介紹一下ARM指令系統(tǒng),將x86指令系統(tǒng)和ARM指令系統(tǒng)進行對比學(xué)習(xí),為后續(xù)課程的學(xué)習(xí)打下基礎(chǔ)。
2.4注重教學(xué)實踐
匯編語言課程一般安排在大三的第一學(xué)期開始,40學(xué)時的課程在學(xué)期前半程就結(jié)束了。雖然學(xué)時數(shù)縮短了,我們還是不能忽略本門課程的實踐這一重要的環(huán)節(jié)。因為學(xué)習(xí)一門語言課,其最直接的目的是用它去編寫程序。因此,建議在課程結(jié)束后,利用后半學(xué)期業(yè)余時間給學(xué)員安排課程設(shè)計,到學(xué)期末結(jié)束并驗收結(jié)果。對課程設(shè)計的要求不能太高,我們可以先提供給學(xué)員一些案例的源代碼,比如:經(jīng)典病毒、月下情人動畫、產(chǎn)生隨機數(shù)、簡單學(xué)員成績管理系統(tǒng)、卡通小鬧鐘、文本編輯器等匯編源代碼。一方面先要求學(xué)員選擇一個案例詳細分析,給出詳細的注釋、程序設(shè)計流程、體系結(jié)構(gòu)等;然后在理解、掌握的基礎(chǔ)上,再對本案例進行修改設(shè)計出一個新的小系統(tǒng)。這種做法既能提高學(xué)員的學(xué)習(xí)積極性,又能鍛煉其讀程序、編程序的能力,而且沒有占用教學(xué)學(xué)時。
2.5優(yōu)化考核方式
傳統(tǒng)的匯編語言課程考核方式主要是實行閉卷筆試,但是大多數(shù)學(xué)員在做編程題時,普遍反映由于指令太多,要用的指令記不住,導(dǎo)致編程題做不出來。從近兩年的考試看,編程題得分高的學(xué)員很少。所以考試不能很好地反映出學(xué)員學(xué)習(xí)的好壞,特別是編程能力。因此建議考試形式采用:閉卷筆試50%+開卷上機編程20%+課程設(shè)計30%。這是因為匯編語言的一些基本知識還是需要筆試來考查:比如尋址方式,邏輯地址,物理地址等;上機考試可以出一些比較簡單而有代表性的題目,估計大多數(shù)學(xué)員在給定的時間內(nèi)可以做完,這樣學(xué)員不用暫時去背太多的指令(當然如果用多了就不用背了),又可以測試他們現(xiàn)場調(diào)試程序的能力;由于上機考試時間的限制,只能出一些簡單的編程題目,不能完全體現(xiàn)學(xué)員對知識的綜合運用能力,所以要通過課程設(shè)計來補充考核這方面能力,當然時間可以延長到學(xué)期末。
3結(jié)束語
壓縮學(xué)時后的匯編語言課程教學(xué),不能只注重完成理論教學(xué)內(nèi)容,而忽視對學(xué)員編程能力的培養(yǎng)。教學(xué)過程中不僅要理論聯(lián)系實際,還要注重形象性、生動性和趣味性,幫助學(xué)員理解,培養(yǎng)他們的興趣,提高教學(xué)效果。要在現(xiàn)有的資源和條件下,盡可能地挖掘教員和學(xué)員的潛能,把匯編語言課程教與學(xué)做得更好。
參考文獻:
[1]沈美明.IBM-PC匯編語言程序設(shè)計[M].2版.北京:清華大學(xué)出版社,2001.
[2]沈美明.IBM-PC匯編語言程序設(shè)計實驗教程[M].北京:清華大學(xué)出版社,2003.