黃 馳,吳 昊,譚榮麗
(南寧師范大學(xué)師園學(xué)院,南寧 530226)
匯編語言是一門面向機(jī)器的計(jì)算機(jī)語言,它使用的英文助記符和二進(jìn)制形式的機(jī)器指令有著一一對應(yīng)的關(guān)系,并與相應(yīng)的計(jì)算機(jī)硬件結(jié)構(gòu)密切相關(guān),有操作直接、運(yùn)行效率高等優(yōu)點(diǎn),也有入門不易、可讀性不強(qiáng)等缺點(diǎn),通常用于比較底層的系統(tǒng)開發(fā)。
雖然計(jì)算機(jī)程序設(shè)計(jì)的初學(xué)者直接使用匯編語言進(jìn)行系統(tǒng)開發(fā)的機(jī)會并不多,但是由于匯編語言與計(jì)算機(jī)硬件結(jié)構(gòu)及機(jī)器指令的特殊關(guān)系,通過匯編語言的學(xué)習(xí),人們可以盡快熟悉計(jì)算機(jī)硬件結(jié)構(gòu),理解計(jì)算機(jī)基本工作原理,培養(yǎng)計(jì)算機(jī)思維,為進(jìn)一步提高計(jì)算機(jī)軟硬件的應(yīng)用開發(fā)能力打下良好的編程思維基礎(chǔ)。因此許多高校包括獨(dú)立學(xué)院都開設(shè)了匯編語言程序設(shè)計(jì)課程。
獨(dú)立學(xué)院是一種新型高等教育辦學(xué)形式,較公辦本科院校而言,辦學(xué)歷史比較短,辦學(xué)條件還不成熟,教學(xué)和管理經(jīng)驗(yàn)還需進(jìn)一步積累,對教學(xué)成本的付出比較敏感。此外,獨(dú)立學(xué)院高考招生錄取分?jǐn)?shù)線主要介于普通本科和高等專科之間,其學(xué)生與普通公辦本科學(xué)生相比,知識基礎(chǔ)、學(xué)習(xí)方法和效率、學(xué)習(xí)自主性等方面有很多的差異,具體表現(xiàn)在以下幾個(gè)方面。
(1)沒有充分養(yǎng)成課前提前預(yù)習(xí)和課后及時(shí)復(fù)習(xí)的良好學(xué)習(xí)習(xí)慣,很多學(xué)生還是覺得上課就是學(xué)習(xí)的全部環(huán)節(jié),上完課學(xué)習(xí)任務(wù)就算完成。由于學(xué)習(xí)投入不足,學(xué)生無法對知識點(diǎn)進(jìn)行前后聯(lián)系,常常導(dǎo)致知識結(jié)構(gòu)沒有系統(tǒng)化和條理化。
(2)沒有充分發(fā)揮學(xué)習(xí)的主觀能動性,不少學(xué)生遇到學(xué)習(xí)困難,如上課聽不懂等情況,就產(chǎn)生逃避畏難情緒,進(jìn)一步導(dǎo)致厭學(xué)心理。準(zhǔn)備考試的時(shí)候,臨時(shí)抱佛腳,隨便混個(gè)及格了事,離既定的人才培養(yǎng)目標(biāo)漸行漸遠(yuǎn)。
(3)沒有充分認(rèn)識到學(xué)習(xí)理論課程內(nèi)容的重要性。不少學(xué)生因?yàn)殚L期受到社會上不良思潮的影響,總認(rèn)為理論課程內(nèi)容太抽象,不實(shí)用,學(xué)不學(xué)無所謂,不懂得“沒有正確的思想很難有正確的行動”的道理,不重視理論課程內(nèi)容學(xué)習(xí),導(dǎo)致理論知識不夠全面,從而無法承擔(dān)系統(tǒng)開發(fā)設(shè)計(jì)的任務(wù)。
因此,需要認(rèn)真研究分析在獨(dú)立學(xué)院匯編語言程序設(shè)計(jì)課程教學(xué)中出現(xiàn)的實(shí)際問題,提出切實(shí)可行的解決方案。
通過多年在獨(dú)立學(xué)院匯編語言程序設(shè)計(jì)課程的教學(xué)實(shí)踐,筆者發(fā)現(xiàn)有3 個(gè)實(shí)際問題對教學(xué)效果產(chǎn)生重要的影響.
(1)課程內(nèi)容客觀上難度比較大。由于面向機(jī)器的特點(diǎn),學(xué)習(xí)匯編語言程序設(shè)計(jì)不僅需要學(xué)習(xí)程序設(shè)計(jì)的相關(guān)軟件編程知識,也需要學(xué)習(xí)理解相關(guān)的硬件結(jié)構(gòu)知識。對于不少獨(dú)立學(xué)院的學(xué)生而言,學(xué)習(xí)內(nèi)容的客觀壓力比較大。例如,匯編語言編程學(xué)習(xí)中必不可少的各種尋址方式應(yīng)用就需要對存儲器結(jié)構(gòu)管理組織以及中央處理器的相關(guān)寄存器組有正確的認(rèn)識和理解。所以學(xué)習(xí)這門課程無論從廣度還是深度來說,難度都比較大。
(2)相關(guān)的教材課本前后內(nèi)容展示的知識常常在結(jié)構(gòu)上互為支撐、相互關(guān)聯(lián),這無疑也大大增加了學(xué)生的理解難度,打擊了學(xué)生的學(xué)習(xí)自信心。例如,課本教材常常會先介紹相關(guān)中央處理器的工作寄存器組(如8086 的代碼段寄存器、堆棧段寄存器、指令指針寄存器、堆棧指針寄存器等),但是這些寄存器的工作原理需要在后面的章節(jié)中介紹。因此,學(xué)生一開始學(xué)習(xí)這些前后知識結(jié)構(gòu)互為支撐、相互交織的教材課本內(nèi)容時(shí),不容易找到正確的切入點(diǎn),增加了學(xué)習(xí)失敗的概率。
(3)匯編語言編譯環(huán)境(字符界面)與高級語言編譯環(huán)境(集成化圖形界面)的巨大操作差異,增加了學(xué)生學(xué)習(xí)過程中編程調(diào)試實(shí)踐環(huán)節(jié)的入門壓力。匯編語言編程常用的編譯工
具通常使用純字符界面進(jìn)行人機(jī)交互。這種交互方式需要學(xué)習(xí)者改變在學(xué)習(xí)高級語言編程中養(yǎng)成的使用集成化圖形界面編譯工具的操作習(xí)慣,學(xué)會使用鍵入字符形式的人機(jī)命令逐步完成編譯、鏈接、調(diào)試、運(yùn)行等編程實(shí)踐步驟,對學(xué)習(xí)者來說增加了學(xué)習(xí)的煩瑣復(fù)雜程度,具有一定的挑戰(zhàn)性。例如,8086 匯編語言常用的微軟公司編譯器MASM 5.0 運(yùn)行在字符界面的磁盤操作系統(tǒng)(Disk Operating System,DOS)環(huán)境下,正常使用這個(gè)編譯工具就需要對DOS 字符界面的常用命令(如更改當(dāng)前目錄命令、顯示文件及目錄命令、編輯命令等)有所熟悉,同時(shí)編譯器、鏈接器和調(diào)試器本身的使用也需要字符人機(jī)命令(如Link、Debug、Q、G、D、T 等)來操作控制。
筆者在多年匯編語言程序設(shè)計(jì)課程的教學(xué)實(shí)踐中,結(jié)合獨(dú)立學(xué)院的辦學(xué)條件和其學(xué)生的學(xué)習(xí)特點(diǎn),針對上述問題總結(jié)了一些解決問題的教學(xué)思路,具體如下。
(1)根據(jù)學(xué)生自身學(xué)習(xí)能力,合理安排學(xué)習(xí)步驟及內(nèi)容。對于本課程,學(xué)習(xí)者的首要任務(wù)應(yīng)該是正確理解計(jì)算機(jī)硬件結(jié)構(gòu)的工作原理及設(shè)計(jì)思路,然后再學(xué)習(xí)相應(yīng)的指令尋址方式和指令系統(tǒng),在充分夯實(shí)理論原理的基礎(chǔ)前提下,進(jìn)一步開展適當(dāng)?shù)木幊虒?shí)踐內(nèi)容的學(xué)習(xí)。通俗地講,就是先讀懂課本的相關(guān)理論內(nèi)容,再開展實(shí)踐環(huán)節(jié)的學(xué)習(xí)。學(xué)習(xí)者在剛剛開始入門階段不宜樹立過多目標(biāo),編太多程序,其主要的目標(biāo)應(yīng)該是把教材讀懂,正確理解相應(yīng)的原理和思路。在難度比較大的課程學(xué)習(xí)過程中,把目標(biāo)定得越單一就越容易實(shí)現(xiàn),這樣就有可能形成一條清晰的學(xué)習(xí)主線,把學(xué)習(xí)的難度和強(qiáng)度控制在可以承受的范圍內(nèi)。
(2)有效地進(jìn)行學(xué)習(xí)時(shí)間的管理。由于課程內(nèi)容難度比較大,教師在課堂教學(xué)學(xué)時(shí)安排上需要有一定保證,除了學(xué)時(shí)長度要合理之外,也應(yīng)當(dāng)注意盡量不要將這門課的上課時(shí)間安排在其他需要消耗大量腦力、體力的課程之后(如高等數(shù)學(xué)和體育)。這樣更有利于幫助學(xué)生集中精力學(xué)習(xí)理解抽象的理論知識。同時(shí)對學(xué)生的課后學(xué)習(xí)時(shí)間的管理,建議課后學(xué)習(xí)時(shí)間與課堂教學(xué)時(shí)間的比例為6∶1,通過科學(xué)合理有效地安排學(xué)習(xí)的步驟、內(nèi)容和時(shí)間,使學(xué)生可以承受相應(yīng)的學(xué)習(xí)難度和強(qiáng)度,提高學(xué)習(xí)成功率。
對于課本前后內(nèi)容展示的知識結(jié)構(gòu)互為支撐、相互關(guān)聯(lián),增加學(xué)生理解難度的問題,可以通過積極引導(dǎo)學(xué)生采用建構(gòu)式學(xué)習(xí)方法預(yù)習(xí)和復(fù)習(xí)來減少其對學(xué)習(xí)的消極影響解決。教師在課堂上可以明確指出前后關(guān)聯(lián)的知識點(diǎn),引導(dǎo)學(xué)生利用課前預(yù)習(xí)和課后復(fù)習(xí)的時(shí)間大膽假設(shè),小心求證,通過反復(fù)多次引導(dǎo)學(xué)生進(jìn)行前后相關(guān)章節(jié)的細(xì)心研讀和推敲,將相關(guān)知識內(nèi)容相互聯(lián)系融會貫通,不斷構(gòu)建和完善腦海中計(jì)算機(jī)工作原理模型。這樣不僅有助于學(xué)生計(jì)算機(jī)思維的培養(yǎng),也可以使其逐漸具備獨(dú)立思考和探索未知領(lǐng)域的能力。
例如,在介紹中央處理器的工作寄存器組時(shí),教師可以清晰指出教材中與這些寄存器的使用原理相關(guān)的后續(xù)內(nèi)容章節(jié)所在之處,布置相應(yīng)的預(yù)習(xí)任務(wù),引導(dǎo)學(xué)生更有效率地預(yù)習(xí)。
(1)可以使用微課慕課等視頻教學(xué)手段,輔助學(xué)生在課后進(jìn)行重復(fù)多次的進(jìn)行操作環(huán)節(jié)復(fù)習(xí),減少學(xué)生因?yàn)椴僮骱屠斫馑俣雀簧辖處熝菔静僮魉俣榷a(chǎn)生的挫敗情緒。
(2)運(yùn)用案例法教學(xué),使用一個(gè)簡單的源程序?qū)嵅倬幾g過程為例,充分展現(xiàn)DOS 和宏匯編程序操作步驟和特點(diǎn),引導(dǎo)學(xué)生積極理解每一步操作相應(yīng)人機(jī)交互命令的原理和內(nèi)在邏輯關(guān)系,這樣使學(xué)生更容易記憶和靈活應(yīng)用,提高他們分析問題和解決問題的能力,防止僅僅依靠死記硬背操作步驟應(yīng)付式完成實(shí)踐任務(wù)。
(3)注意引導(dǎo)學(xué)生使用正確的方法完成程序的調(diào)試。匯編語言編程過程難免會有錯(cuò)誤,如何發(fā)現(xiàn)錯(cuò)誤、改正錯(cuò)誤是調(diào)試程序過程中很重要的環(huán)節(jié)。首先,程序運(yùn)行前應(yīng)該進(jìn)行充分的靜態(tài)檢查,分析出容易出錯(cuò)的地方,然后按照模塊化編程調(diào)試等方法制定調(diào)試方案并執(zhí)行,從而減少錯(cuò)誤搜索范圍,最終找出錯(cuò)誤并改正。同時(shí)在匯編語言的學(xué)習(xí)過程中,應(yīng)安排一些比較容易觀察結(jié)果并直接反映計(jì)算機(jī)內(nèi)部工作原理的實(shí)踐內(nèi)容,這樣更有利于學(xué)生把注意力集中在理解計(jì)算機(jī)的工作原理上,更有效地培養(yǎng)他們的計(jì)算機(jī)思維。
例如,可以使用串傳送指令(Move String,MOVS)的應(yīng)用編程實(shí)例,通過Debug 調(diào)試軟件的顯示功能(命令D)將內(nèi)存相應(yīng)區(qū)域的存儲器單元內(nèi)容變化清晰地展現(xiàn)出來,通過單步執(zhí)行命令T 可以看到每一條指令單步執(zhí)行后中央處理器各個(gè)寄存器的狀態(tài)變化。
為了讓學(xué)生學(xué)會使用DOS 顯示功能調(diào)用,可以為學(xué)生布置一個(gè)實(shí)操編程實(shí)驗(yàn)任務(wù),在屏幕上顯示自己的名字拼音和學(xué)號,學(xué)生完成后對DOS 功能調(diào)用會有一個(gè)比較深刻的理解。
學(xué)習(xí)好匯編語言程序設(shè)計(jì)課程對于絕大部分學(xué)生來說不是一項(xiàng)輕松的學(xué)習(xí)任務(wù),本文總結(jié)了獨(dú)立學(xué)院在匯編語言程序設(shè)計(jì)課程教學(xué)過程中存在的一些問題,并針對性地提出一些解決思路和實(shí)現(xiàn)方法,以提升學(xué)生的計(jì)算機(jī)思維和自主學(xué)習(xí)的能力,培養(yǎng)高素質(zhì)的計(jì)算機(jī)應(yīng)用型人才。