張 學(xué) 陸 慶 廖建明
摘要:“匯編語言程序設(shè)計”是高等院校計算機專業(yè)的必修專業(yè)核心課程,具有其他語言無法取代的地位。本文基于“以學(xué)生為本”的教學(xué)理念,從實驗安排、教學(xué)方法和考核方式三個方面介紹了作者在多年匯編語言實驗教學(xué)中的體會。
關(guān)鍵詞:匯編語言;實驗教學(xué);模仿法;演示法
中圖分類號:G642 文獻標(biāo)識碼:B
1引言
匯編語言是所有程序設(shè)計語言中最原始的語言,它與機器語言最為接近,簡言之,匯編語言是符號化的機器語言,通過匯編語言可以直接訪問計算機的硬件,如果要深入了解計算機的工作原理和底層細節(jié),就必須學(xué)習(xí)匯編語言。著名的計算機科學(xué)家Donald Knuth堅持推崇匯編語言,并且曾經(jīng)說過“我堅持認(rèn)為除非你了解了各種底層細節(jié),否則根本不可能為態(tài)度認(rèn)真的程序員寫書?!雹賲R編語言的地位是任何高級語言都無法取代的。因此,匯編語言程序設(shè)計成為計算機專業(yè)的必修課程。
然而匯編語言程序設(shè)計課程的教學(xué)普遍存在諸多問題,已經(jīng)引起了廣大教師的研究與關(guān)注,如考文獻中的[1][2][3][4][5]等。就目前看來,匯編語言教學(xué)大多不能體現(xiàn)“以學(xué)生為本”的教學(xué)理念,主要表現(xiàn)在對實驗教學(xué)的重視程度不夠。匯編語言程序設(shè)計是實踐性很強的一門課程,學(xué)生只有在程序設(shè)計的實踐中才能真正掌握。所以我們認(rèn)為匯編語言教學(xué)應(yīng)該“老師少講課、學(xué)生多動手”,也就是要充分重視實驗環(huán)節(jié),讓學(xué)生唱主角,改變傳統(tǒng)的以課堂講授為主的教學(xué)模式。
為此,本文進行匯編語言實驗教學(xué)的研究與探索。下面分別從實驗安排、教學(xué)方法和考核方式三個方面介紹作者在多年的匯編語言實驗教學(xué)中的體會。
2精心安排實驗
2.1學(xué)時安排
目前國內(nèi)高校的匯編語言程序設(shè)計課程大多是基于Intel 8086/8088微處理器的②,總學(xué)時一般在60學(xué)時左右,實驗課學(xué)時一般占總學(xué)時的1/4到1/3。我們認(rèn)為60個總學(xué)時是比較合理的,但是實驗課學(xué)時遠遠不夠。事實上,對于任何一種程序設(shè)計語言來說,不需要教師講解太多的內(nèi)容,關(guān)鍵是讓學(xué)生多動手。我們認(rèn)為匯編語言的理論課學(xué)時和實驗課學(xué)時各占總學(xué)時的1/2是比較合理的。
2.2實驗內(nèi)容安排
匯編語言的實驗課內(nèi)容應(yīng)該包括但不限于:
(1) 調(diào)試工具DEBUG的使用:匯編語言程序的調(diào)試要比高級語言程序的調(diào)試?yán)щy得多,熟練使用DEBUG是匯編語言程序設(shè)計的基本技能。
(2) 匯編語言程序設(shè)計的上機過程:匯編語言程序的編輯、匯編、連接、運行和調(diào)試是匯編語言實驗的必備知識。此外,學(xué)生還應(yīng)當(dāng)懂得在此過程中所產(chǎn)生的各種文件(.obj、.lst、.crf和.exe等)的用途。
(3) 基本程序結(jié)構(gòu)設(shè)計:任何復(fù)雜的程序都是由三種基本結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu))組成的,因此,基本程序結(jié)構(gòu)設(shè)計訓(xùn)練是編寫復(fù)雜程序的基礎(chǔ),是匯編語言實驗不可缺少的內(nèi)容。
(4) 子程序設(shè)計:所謂子程序,相當(dāng)于C語言中的函數(shù)。子程序是結(jié)構(gòu)化程序的基本組成,子程序設(shè)計是開發(fā)大型程序的基礎(chǔ),對于培養(yǎng)編程能力十分重要。
(5) 中斷調(diào)用:操作系統(tǒng)和BIOS(Basic Input Output System)以中斷調(diào)用的方式為程序員提供了一組功能強大的程序庫,屏蔽了復(fù)雜的硬件細節(jié),從而極大程度地減輕了程序員的負擔(dān)。而且,不理解中斷系統(tǒng)就不能理解計算機的工作原理。因而學(xué)習(xí)中斷調(diào)用是匯編語言實驗課的必要內(nèi)容。
此外,中斷服務(wù)程序的編寫和匯編語言程序與高級語言程序的連接等內(nèi)容也應(yīng)該讓學(xué)生有所了解;在實驗學(xué)時允許的前提下,也可以安排一個綜合性實驗。
3選擇合適的教學(xué)方法
對于實驗課,只布置任務(wù)、讓學(xué)生自己做實驗的方法并不可取,因為其結(jié)果往往是只有少數(shù)學(xué)生能夠達到實驗要求,而大多數(shù)的學(xué)生收獲很小,甚至有的把實驗課用來玩游戲了。所以,實驗課應(yīng)該有專門的任課教師。當(dāng)然,從培養(yǎng)學(xué)生的創(chuàng)新能力的角度講,應(yīng)該盡可能地讓學(xué)生獨立完成任務(wù),但是創(chuàng)新能力的培養(yǎng)有賴于足夠的基礎(chǔ)知識和基本技能。我們認(rèn)為匯編語言實驗課應(yīng)該以基礎(chǔ)知識和基本技能的學(xué)習(xí)為主,適當(dāng)?shù)仃P(guān)注創(chuàng)新能力的培養(yǎng),在照顧到大多數(shù)學(xué)生的前提下,給創(chuàng)新能力強的學(xué)生提供獨立發(fā)展的空間。要做好這一點,我們認(rèn)為有兩種十分有效的教學(xué)方法:演示法和模仿法。
3.1演示法
在實驗課上,我們經(jīng)常發(fā)現(xiàn)有許多學(xué)生向老師問同一個問題,如果一一解答,不但使任課教師十分疲憊,而且嚴(yán)重浪費了資源和時間。對于這些共性的問題,可以通過投影儀向?qū)W生演示解決問題的辦法,所以在實驗室中安裝投影儀將為實驗教學(xué)帶來極大的方便,目前大多數(shù)高校具備這樣的硬件條件。特別是對于調(diào)試工具DEBUG的使用和匯編語言程序設(shè)計的上機過程的學(xué)習(xí)尤為有效。初學(xué)者對于程序的編輯、匯編、連接、改錯和調(diào)試過程往往不知所措,如果老師從頭到尾演示整個過程、讓學(xué)生一步一步地跟著操作,就能極大地提高學(xué)習(xí)效率。一次簡單的演示往往要勝過千言萬語的解釋。
3.2模仿法
程序設(shè)計對于大多數(shù)的初學(xué)者來說有一定的難度。對于給定的一個實驗題目,許多學(xué)生往往感到無從下手。事實上,老師可以把一些經(jīng)典的程序提供給學(xué)生,例如怎樣實現(xiàn)分支結(jié)構(gòu)、怎樣實現(xiàn)循環(huán)結(jié)構(gòu)、怎樣使用系統(tǒng)調(diào)用、怎樣編寫子程序、怎樣編寫中斷處理程序等,讓學(xué)生在讀懂之后模仿著編程。模仿的程序多了,編程也就熟練了。通過一段時間的經(jīng)驗積累,就能夠編寫比較復(fù)雜的和具有創(chuàng)造性的程序,正所謂“熟能生巧”。我們在教學(xué)中發(fā)現(xiàn)這種模仿的方法十分有效。當(dāng)然要特別注意的是,不能把模仿變成抄襲。
3.3對比法
一般說來,在學(xué)習(xí)匯編語言之前都要學(xué)習(xí)C語言。匯編語言與C語言的學(xué)習(xí)是相輔相成的。老師應(yīng)該通過對比的方法向?qū)W生指出匯編語言與C語言之間的千絲萬縷的聯(lián)系。例如,一塊數(shù)據(jù)區(qū)的開始地址為BASE,要尋找的操作數(shù)相對于開始地址的偏移量為SI,我們發(fā)現(xiàn)幾乎所有的學(xué)生會把這個操作數(shù)寫成[BASE+SI],而不會寫成BASE[SI],因為第一種寫法更直觀,而第二種寫法令人費解。然而,如果教學(xué)生把BASE看成C語言里的數(shù)組、把SI看成下標(biāo),那么學(xué)生就會恍然大悟了。通過對比教學(xué)法,能夠使學(xué)生更深入地理解高級語言中的數(shù)據(jù)類型、變量、函數(shù)、數(shù)組、指針等概念的理解,同時也必將大大促進匯編語言的學(xué)習(xí)。
4改革考核方式
因為“匯編語言程序設(shè)計”是實踐性很強的一門課程,所以實驗課成績應(yīng)該在總成績中占有相當(dāng)大的比重。我們認(rèn)為以閉卷考試成績?yōu)橹饕罁?jù)的考核方式是不合適的,甚至可以取消考試、以實驗課成績?yōu)橹?如果要考,也應(yīng)該是開卷的。然而由于許多現(xiàn)實困難,目前大多數(shù)高校的匯編語言課程的實驗課成績只占很小的比重,這也是學(xué)生不重視實驗課的重要原因之一。提高實驗課成績所占比重的主要困難在于學(xué)生多、抄襲成風(fēng)、老師負擔(dān)重、實驗條件有限、考核的主觀性太強等。盡管面臨諸多困難,我們認(rèn)為實驗課成績應(yīng)該占到總成績的1/2。老師可以根據(jù)學(xué)生的實驗表現(xiàn)按五級分制(優(yōu)、良、中、及格、不及格)或二級分制(通過、不通過)考核。為了減輕教師的負擔(dān),可以只針對一個綜合性實驗(而不是所有的實驗)加以考核。
5結(jié)束語
本文根據(jù)作者多年的教學(xué)體會,對匯編語言實驗教學(xué)進行了深入的思考。從“以學(xué)生為本”的教學(xué)理念出發(fā),根據(jù)匯編語言程序設(shè)計課程所具有的實踐性強的特點,提出“老師少講課、學(xué)生多動手”的教學(xué)模式,主張?zhí)岣邔嶒炚n學(xué)時和實驗課成績的比重,重視實驗教學(xué),并從實驗內(nèi)容、教學(xué)方法和考核方式三個方面介紹了作者的想法。然而由于學(xué)生過多、資源有限、我國高等教育長期投入不足和體制缺陷等許多現(xiàn)實困難,匯編語言實驗教學(xué)的改革依然任重道遠。
參考文獻:
[1] 張全福. 匯編語言程序設(shè)計實驗教學(xué)改革與探索[J]. 教學(xué)研究,2005,28(6):545-546.
[2] 周代英,楊曉霞. 匯編語言課程教學(xué)方法改革探索[J]. 中國科教創(chuàng)新導(dǎo)刊,2008(6):55-56.
[3] 吳媛,茹慶云,楊富超. 匯編語言程序設(shè)計的教學(xué)研究[J]. 中國科技信息,2005(14):215.
[4] 邵聯(lián)合,陳向陽,陳麗萍. 匯編語言生態(tài)課堂的構(gòu)建[J]. 高等理科教育,2008(1):55-57.
[5] 趙雪靜. 匯編語言教學(xué)方法初探[J]. 中國科教創(chuàng)新導(dǎo)刊,2008(7):33.