首頁 > 優(yōu)秀范文 > 匯編語言程序設(shè)計
時間:2023-03-08 15:38:53
序論:速發(fā)表網(wǎng)結(jié)合其深厚的文秘經(jīng)驗,特別為您篩選了11篇匯編語言程序設(shè)計范文。如果您需要更多原創(chuàng)資料,歡迎隨時與我們的客服老師聯(lián)系,希望您能從中汲取靈感和知識!
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)09-2111-02
Teaching Thinking of Assembly Language Programming Course
LUO Xing
(Hanshan Normal University, Hanshan 521041, China)
Abstract: This paper discusses the problem appear in teaching of assembly language programming course, propose some methods to improve student's ability to master the knowledge and learning interest. Discuss the assembly language teaching in Win32 platfrom in the last.
Key words: assembly language programming; teaching improvement
匯編語言程序設(shè)計作為一門計算機專業(yè)的課程,其存在的合理性在近年受到爭議。有些人認為,匯編語言作為一種低級語言,指令繁多,難以掌握。另外,編程效率也不高,一個高級語言用一條語句實現(xiàn)的功能,在匯編語言中需要很多條指令才能實現(xiàn)。此外,匯編語言在時間上和空間上的優(yōu)勢由于高速CPU和大容量存儲器的出現(xiàn),也變得意義不大。
我認為學習匯編語言仍然具有重要意義。可以歸納如下:
1) 可以比較深入了解計算機硬件的底層工作原理,例如:CPU的工作模式,寄存器的概念,內(nèi)存的尋址方式,中斷的工作原理等。
2) 熟悉各種數(shù)據(jù)表示方法。如各種數(shù)制的轉(zhuǎn)化,各種類型的數(shù)據(jù)在內(nèi)存中的存儲方式。學生在系統(tǒng)學習匯編語言程序設(shè)計這門課程后,對二進制,十進制以及十六進制相互間的轉(zhuǎn)換應該非常熟練。對數(shù)據(jù)在內(nèi)存中兩種排列方式即大端方式(Big Endian,低地址存放高位字節(jié))與小端方式(Little Endian,低地址存放低位字節(jié))有清晰的理解。而這些相關(guān)的概念的牢固掌握對高級語言中的數(shù)據(jù)類型以及計算機網(wǎng)絡編程的學習具有很大的幫助。
3) 通過匯編語言編程學習,可以促進對高級編程語言相關(guān)概念的理解。高級語言在編譯的時候,一般都是先生成匯編代碼,然后再生成的二進制代碼。所以,通過對比分析匯編代碼與高級語言代碼的實現(xiàn)方式,對程序的執(zhí)行效率,數(shù)據(jù)在內(nèi)存中存放方式,堆棧的概念,函數(shù)的調(diào)用及參數(shù)傳遞的方式等都會有進一步的了解。
在教學中,我也遇到一些問題。一方面就是學生的積極性不高。主要原因包括:指令很多,難以記憶。對于幾個大類的指令,如果每次課上一類,學生課后如果不進行主動復習,往往到下一次課的時候,就會忘記前面所學的內(nèi)容或者發(fā)生混淆。另外,在學習匯編課程之前,他們已經(jīng)學過一門高級語言,如C/C++等,匯編語言的學習方式與高級語言的學習方式有所不同,高級語言比較容易上機練習,也容易對程序運行結(jié)果驗證,對于開發(fā)實用軟件也相對容易,所以學生的興趣比較大。而匯編語言一方面涉及到底層的硬件概念,比較難以理解,另一方面上機也比較困難,可以這么說,如果按照課本的順序講課,要到差不多講完課,學生才可以上機完成一個功能比較完整的程序。
2 促進學生對知識的掌握
要解決這些問題,我認為要在學生的知識掌握方式以及學習興趣的培養(yǎng)上下功夫。對于知識的掌握,除了每次新課內(nèi)容講完后,精心給學生布置作業(yè)習題之外。還應該注意到由于匯編語言的指令及相關(guān)的知識點很多,對于剛接觸這門課程的學生一開始往往不大適應,容易混淆前面學過的內(nèi)容,所以教師及時對所學過知識點進行比較和總結(jié)就很有必要。此外還應該定期對學生的學習效果進行檢測,從過去的教學經(jīng)驗看,匯編語言這門課程是學生比較容易與教師的教學進度脫離的一門課程,不少學生在一開始由于在掌握知識遇到困難,問題越積越多,最終可能放棄聽課。在檢測的方法上,可以借助網(wǎng)上考試系統(tǒng)。教師可以自主出題,也可以讓系統(tǒng)自動出題。通過分析學生的測試結(jié)果,教師可以及時調(diào)整教學進度,學生也會有一定的學習壓力,使他們花更多時間查補缺漏的知識。
程序設(shè)計學習的最佳方法就是上機實踐。匯編語言上機練習跟高級語言的上機練習相比,對于學生來說比較困難。一方面是由于一個完整的匯編程序涉及的知識點很多,而教材往往按知識點分類進行編排。所以學生要想在剛開始學習階段,就編出完整的程序有一定的難度。另一方面,匯編程序的運行結(jié)果較難在屏幕上輸出,匯編語言只有字符與字符串的輸入輸出,對于一道簡單的算術(shù)運算題目,其結(jié)果的輸出都要通過一大段的轉(zhuǎn)換程序來實現(xiàn)。對于第一個問題,教師可以對教材內(nèi)容進行選講,把實驗所涉及到的知識點先進行講解。對于第二個問題, 我認為應該重點培養(yǎng)學生熟練使用調(diào)試工具的能力,通過掌握調(diào)試工具如DEBUG,CV等的使用,一方面學生可以直接觀察程序的運行結(jié)果,另一方面,對于程序的邏輯錯誤也可以進行跟蹤、分析以及解決。此外,由于匯編語言作為一種低級語言,編程都由一條條指令進行構(gòu)造,所以相對繁瑣,應盡早讓學生應用模塊化思路,掌握子程序及宏的使用方法。這樣把一些常用功能做成模塊,如輸入輸出功能,以后學生在編程的時候就可以直接調(diào)用這些模塊,從而專注于實驗的其它方面。
3 提高學生的學習積極性
對于如何提高學生的學習興趣,我認為主要讓學生意識到匯編語言的作用。一方面可以引入一些接口技術(shù)相關(guān)內(nèi)容,使學生熟練掌握中斷的概念以及I/O指令,然后上機編寫中斷程序,在中斷控制器(8259A)進行驗證,由于這些實驗有按鍵輸入,有屏幕輸出,還能直接看到程序控制設(shè)備的效果,所以學生興趣會比較大。此外,教師也可以適當拓展一些知識,如嵌入式編程相關(guān)概念,有興趣的同學可以在課后自主進行學習。另外,由于不少學生對硬盤相關(guān)的問題感興趣,比如硬盤數(shù)據(jù)的存放方式,數(shù)據(jù)的修復等??梢砸龑W生對這些問題進行思考,然后通過匯編語言提供的I/O指令和中斷子功能,編程實現(xiàn)對硬盤的MBR,文件分配表等數(shù)據(jù)結(jié)構(gòu)的讀取,備份,修復等功能。教師通過布置一些學生比較感興趣的課外作業(yè),并適當提供協(xié)助,往往能提高學生的學習積極性。
另外,在匯編語言的學習過程中,教師應該有意識引導學生將匯編語言與高級語言的各個對應的部分進行比較。學生在學習匯編語言之前,通常已經(jīng)學過一門高級語言,如C/C++等。高級語言在編譯的時候,一般是先轉(zhuǎn)換成匯編代碼,所以它們具有相通性。大部分學生編寫應用程序的時候是用高級語言,所以通過比較分析高級語言與低級語言在數(shù)據(jù)定義,程序流程控制,函數(shù)的定義及調(diào)用等的對應部分內(nèi)容,對于學生更好的使用高級語言編寫程序是很有幫助的。比如:匯編語言里有分段的概念,一般把變量定義到數(shù)據(jù)段,把代碼定義的代碼段。而C語言是把數(shù)據(jù)與代碼都定義在一起,那么C語言編寫的程序在編譯成可執(zhí)行文件后,它的全局變量,局部變量的空間是如何分配的。另外,對于動態(tài)內(nèi)存分配,堆與棧的區(qū)別在哪里。還有函數(shù)的定義與調(diào)用,參數(shù)的傳遞順序是如何的?這些疑問,都可以讓學生編寫簡單的C語言程序,生成可執(zhí)行文件后,然后通過調(diào)試工具進行反匯編進行分析。此外,在利用VC++,Dephi等IDE開發(fā)工具進行程序編寫時,都會用到里面的調(diào)試功能?;旧险{(diào)試功能都會包括反匯編與內(nèi)存查看的功能,教師可以引導學生進行這方面的訓練,使他們在以后編程時能熟練應用這個工具解決一些疑難問題,例如:內(nèi)存非法訪問,指針的非法引用等。
4 Win32平臺下的匯編語言教學思考
目前很多高校在匯編程序設(shè)計教學中講解的是8088/8086 CPU實模式環(huán)境,實際上是虛擬8086模式,因為真正的實模式工作DOS下,而現(xiàn)在匯編語言實驗環(huán)境都是在windows 2000以上。由于現(xiàn)在大部分CPU都是32位以上,并且是工作上保護模式之上,此外這些CPU的寄存器類型以及尋址方式都已經(jīng)發(fā)生較大變化。所以教師有必要對實模式與保護模式在邏輯地址轉(zhuǎn)化為物理地址的方式的差異,還有16位與32位的指令在用法的不同點進行重點講解。因為匯編語言現(xiàn)在的實際應用基本上采用工作于保護模式的Win32平臺,在Windows操作系統(tǒng)控制下,匯編語言雖然不能再直接存取硬件,但是能通過調(diào)用系統(tǒng)提供的API函數(shù)完成各種功能。其實這里的API函數(shù)當于DOS下的中斷調(diào)用,但是Window API函數(shù)無論從數(shù)量上、功能上還是易用性上都大大超過了DOS或BIOS的中斷調(diào)用功能。所以現(xiàn)在在Win32平臺下,匯編語言就像高級語言一樣,可以方便的開發(fā)各種Windows應用程序。有些教師認為,既然在實模式講解匯編語言很少涉及實用性,那就應該直接遷移到Win32匯編平臺,講解用匯編語言開發(fā)的Windows應用程序設(shè)計實例,從而提高學生積極性。我認為如果采用這種教學方法,可能會存在以下問題:首先由于上課時間有限,學生需要大量的時間才能熟練掌握各類指令,匯編語言的語法,程序結(jié)構(gòu)等方面的知識。如果過多涉及Windows程序設(shè)計實例,對于不熟悉Windows編程機制的學生的來說,又多了一個不小的學習負擔,這樣子反而影響了匯編語言基礎(chǔ)知識的掌握。另外,DOS下的實模式與Window下的保護模式下的編程在本質(zhì)上并無很大的區(qū)別,只要學生熟練掌握各類指令用法,理解16位與32位的指令及尋址方式的區(qū)別,邏輯地址與物理地址轉(zhuǎn)換機制等知識,他們就可以通過自主學習,較容易的掌握用匯編語言進行Win32應用程序的開發(fā)。對于教師,除了幫學生打好匯編語言的基礎(chǔ),可以適當以課外作業(yè)的形式,引入一些匯編語言在不同應用領(lǐng)域的簡單實例,如加密與解密,軟件的逆向工程等,這些課外作業(yè)的完成對學生匯編語言的應用能力的提高將會有不小的幫助。
5 結(jié)束語
匯編語言難教難學是教師與學生的共識,但是作為計算機科學中一門低級程序設(shè)計語言,通過對它的良好掌握,確實可以促進對計算機軟硬件底層的了解,而這又能促進編程能力的提高。作為教師,在教學中應該不斷嘗新的教學方法,不斷積累經(jīng)驗,只有這樣,才能把這門課上好。
與其它高級語言相比,匯編語言存在指令繁多、尋址方式多樣、程序可讀性差、編程效率不高等缺點,這使得學生對該課程的重要性認識不足。此外,學生的學習目的相當務實,有些學生認為即便是在計算機應用場合,使用匯編語言的可能性也很小,所以怕苦怕難,沒有學習這門課的積極性。實際上,只有通過學習匯編語言,學生才能深入了解計算機的硬件和軟件,從朦朧的計算機世界中走出來,進而理解編譯和解釋程序,在審視高級語言的時候,才能夠透徹地理解最根本的計算機技術(shù)[1]。所以,不了解匯編語言, 不僅會導致學生認知水平降低,編程開發(fā)手段貧乏,更會導致學生的知識結(jié)構(gòu)失衡。
2實驗教學在《匯編語言程序設(shè)計》教學中的作用在培養(yǎng)人的科學思維、創(chuàng)新意識,掌握科學方法、提高綜合實踐能力方面,實踐環(huán)節(jié)有著重要的作用,是課堂理論教學無法替代的。實驗課是進行實踐教學的重要學習場地,學生通過對實驗內(nèi)容的思考,對課堂上的理論知識進行了鞏固;實驗過程中的操作,可以發(fā)現(xiàn)理論教學的不足;實驗過后的心得分析,為以后解決實際問題打下堅實基礎(chǔ)。實驗還可以將算法的實現(xiàn)和計算機的操作過程相結(jié)合,使學生體會到算法的邏輯含義是通過計算機的實際執(zhí)行過程實現(xiàn)的[2]。
匯編語言與硬件關(guān)系密切,通過實驗課,學生可以更好地理解cpu、寄存器、存儲器、接口及外部設(shè)備的工作原理?!秴R編語言程序設(shè)計》課程的實驗是培養(yǎng)學生的動手能力、增強學生的學習興趣、提高學生閱讀、編輯和調(diào)試程序能力的關(guān)鍵環(huán)節(jié)。
3實驗教學中存在的問題
3.1教學內(nèi)容安排方面
計算機語言課程的學習需要理論聯(lián)系實踐,實驗課是學好計算機語言的必備條件,匯編語言的學習亦是如此,實驗課程開始越早對學生的學習越有利?!秴R編語言程序設(shè)計》這門課程的教材安排順序一般是:基礎(chǔ)知識、計算機系統(tǒng)的組織、匯編要素、基本指令、程序設(shè)計、輸入/輸出、系統(tǒng)調(diào)用、高級匯編語言技術(shù)。實驗教學往往是配合理論教學進行,通常在理論課程第5~7周后,實驗課才得以開設(shè)。這樣的教學安排效果并不理想,在實驗課程開設(shè)的前幾周不利于學生很好地掌握學習內(nèi)容,從而對匯編語言產(chǎn)生厭學情緒。
高等院校普遍存在對專業(yè)課程的課時進行壓縮的現(xiàn)象,使得《匯編語言程序設(shè)計》的理論課時和實驗課時都有不同程度的壓縮,實驗課時的壓縮相對于理論課時更加嚴重,導致實驗內(nèi)容的安排不能覆蓋該課程的重點,而且重點實驗內(nèi)容也相對淺顯,無法進行深入研究。
另外,有些教師圍繞課本基礎(chǔ)結(jié)構(gòu)部分的知識講授,沒有結(jié)合實際應用進行擴展,對實驗內(nèi)容的設(shè)計也比較淺顯,無法激起學生的興趣。這些行為都導致了學生對匯編語言的學習興趣降低甚至放棄。
3.2學生態(tài)度不夠端正
很多學生認為實驗課不重要,實驗做得好否對最終的成績判斷沒有關(guān)聯(lián)。目前多數(shù)院校的學生學習成績判定, 以期末考試成績?yōu)橹鳎@就使得很多學生重理論、輕實驗。另外,匯編語言不像其它高級語言那樣應用廣泛,學生認為其對就業(yè)幫助不大,從思想上輕視匯編語言,對《匯編語言程序設(shè)計》的實驗課程更是不愿付出精力,甚至出現(xiàn)拷貝代碼的現(xiàn)象。
3.3考核體系不明確
匯編語言的實驗教學環(huán)節(jié)沒有受到足夠的重視,導致沒有明確的評價體系。在進行實驗課時,有些教師只是布置了相關(guān)的實驗內(nèi)容,實驗過程沒有進行必要的監(jiān)督和輔導,導致學生對實驗教學態(tài)度怠慢,出現(xiàn)學生在實驗課上玩游戲和課下實驗報告抄襲的現(xiàn)象。
4提高匯編語言實驗教學效果的措施
4.1合理設(shè)置實驗內(nèi)容
實驗課的內(nèi)容按照由淺入深、循序漸進的方式進行,以啟發(fā)思維為主。對設(shè)計型、綜合型實驗只要能達到實驗目的,其實驗過程和步驟可以多樣,通過實驗課復習理論知識,引出欲
講解的新內(nèi)容。針對學期初不安排實驗的問題,可以嘗試開展“先實驗后理論”的教學,在實驗中理解基礎(chǔ)理論,加大實驗課的比例并且及早實行開展實驗教學,在整個教學過程中實行以“學生動手為主,教師講解為輔”的教學模式[3]。
4.2引入新的實驗教學模式,培養(yǎng)學生學習興趣
實驗教學中要充分調(diào)動學生的積極性,照顧不同層次的學生。匯編語言指令繁瑣,初始使用時比較抽象,學生對待實驗內(nèi)容往往無從下手,所以任課教師應該先對實驗內(nèi)容進行講解。起初的實驗內(nèi)容,教師應該進行詳細的演示,可以先引導學生“臨摹”,避免學生出現(xiàn)無從下手、喪失信心等問題。后面的實驗內(nèi)容可以進行講解并提示實驗方法,但不要求每個學生都按照此方法進行實驗,鼓勵學生創(chuàng)新,并在考核中給予一定的獎勵。每次實驗內(nèi)容,任課教師都要進行總結(jié),以解決學生在實驗過程中的“通病”。
《匯編語言程序設(shè)計》的實驗一般設(shè)置16~24學時,存在實驗學時偏少的問題。為了盡可能提高實驗效率,教師可以提前給學生布置實驗內(nèi)容,給學生留出時間準備。如果在實驗課上臨時給出實驗內(nèi)容,大多數(shù)學生無法按時完成實驗目標,會打擊學生學習的積極性。對實驗內(nèi)容進行準備后再上機操作,大多數(shù)學生就可以在規(guī)定的時間內(nèi)完成實驗。學生在上機的過程中獲得了成就感,樹立了信心,就會產(chǎn)生學習興趣,并主動在課下花時間鉆研有關(guān)課程實驗的內(nèi)容。
為了培養(yǎng)學生的團隊合作精神,也可以設(shè)計一些綜合應用實驗,讓學生分組完成。每組選出一位組長,負責組織學生課下進行實驗內(nèi)容的預習、實驗方案的制定和課上組員提出問題的解決方案等工作。教師在進行實驗考核時,要對每個組的完成情況進行總結(jié),對于完成較好的組,給予成員一定的加分,以鼓勵學生注重團隊合作精神,培養(yǎng)學生的學習興趣。
4.3建立嚴格的考核體系
《匯編語言程序設(shè)計》課程一般需要16~18個教學周才能完成教學任務,在這段時間內(nèi),很少有學生能對其一直保持較高的學習熱情,大部分學生都是以成績驅(qū)動自己的學習,所以需要一套嚴謹?shù)膶嶒灴己梭w系,公平公正地評價學生的實驗過程[4]。筆者學校的實驗課程成績由學生出勤、預習、實驗操作過程和實驗報告4部分組成,涵蓋了學生實驗上機的全過程。各部分的比例按10%、20%、40%、30%的權(quán)重計算實驗總成績。除了出勤情況外,預習、實驗操作過程和實驗報告這3部分按等級評定,每個等級對應的分數(shù)為: a(90~100)、b(80~89)、c(70~79)、d(60~69)、e(50);對于前4個等級,教師可根據(jù)學生完成的情況給出該等級的加減等級。以a等級為例,a+對應100分,a對應95分,a-對應90分,這樣每個等級都有對應的分數(shù),可以做到客觀地評價學生的實驗過程。
5結(jié)語
本文根據(jù)筆者的教學實踐,分析了《匯編語言程序設(shè)計》課程的教學現(xiàn)狀,指出了實驗教學在《匯編語言程序設(shè)計》教學過程中的重要性,并對匯編語言的實驗教學進行了深入的分析和思考。根據(jù)實際情況提出了幾點可行的措施,即合理安排實驗內(nèi)容,引入新的實驗教學模式和建立嚴格的考核體系,從而達到發(fā)掘?qū)W生潛能、提高實踐動手能力、增強學習匯編語言興趣等目的?!秴R編語言程序設(shè)計》課程的實驗教學還需要廣大教師積極探索,引入多種符合實際的教學方法,使匯編語言對計算機專業(yè)課程后續(xù)的學習發(fā)揮應有的作用。
參考文獻參考文獻:
\[1\]劉正紅.對匯編語言實驗教學的幾點看法[j].信息與電腦,2012(6):198199.
[2]木林.《匯編語言程序設(shè)計》實驗教學的探討[j].呼倫貝爾學院學報,2012 (4):9295.
[3]張學,陸慶.匯編語言實驗教學的思考[j].教學研究,2009(15):8182.
[4]侯宏霞.提高匯編語言課程實驗教學質(zhì)量的幾點思考[j].內(nèi)蒙古農(nóng)業(yè)大學學報:社會科學版,2011(13):173174.
匯編語言作為一種用助記符表示的面向機器的符號語言,如何認識該課程的作用和地位,如何取得更好的教學效果?在長期從事該課程的教學過程中,筆者嘗試各種提高該課程教學質(zhì)量的探索,有些體會,供大家參考。
1 目前《匯編語言程序設(shè)計課程》的教學狀況
匯編語言是面向機器的一種符號語言,它與機器的結(jié)構(gòu)密切相關(guān),是直接針對CPU、內(nèi)存和I/O端口編程的程序設(shè)計語言。而目前的各種高級語言和網(wǎng)絡應用開發(fā)工具很多程序幾乎可以自動生成。然而機器語言、匯編語言和高級語言的程序設(shè)計語言體系仍然是計算機技術(shù)的基礎(chǔ),也是計算機技術(shù)的重要知識體系之一。對于計算機及其相關(guān)專業(yè)的學生以及計算機愛好者來說,匯編語言程序設(shè)計是需要掌握的重要專業(yè)基礎(chǔ)知識之一??捎捎趨R編語言面向機器的特點,不僅需要硬件知識的配合,而且它有大量的語法規(guī)則需要記憶,加之上機調(diào)試單調(diào)且容易出錯,導致了大部分同學對于《匯編語言程序設(shè)計》課程的畏難情緒,學生初學階段普遍反映該課程難學,很多學生在學習過程中感覺比較難入手。
2 教學方法探討
2.1 合理組織課程內(nèi)容
教學過程中為了讓學生掌握所學知識并用于程序開發(fā),在課程教學中把握教材的難點和重點尤為關(guān)鍵。
(1)基礎(chǔ)知識的教學。
主要包括計算機硬件和指令系統(tǒng)的教學。對計算機硬件基礎(chǔ)知識的理解和掌握程度直接影響學生對匯編語言地理解和掌握,其中包括CPU內(nèi)部的構(gòu)成、總線的作用、寄存器的設(shè)置和用途以及內(nèi)存的使用等是較難理解的部分,在實際教學中,可將相關(guān)內(nèi)容融匯在一起來進行教學。通過應用如:圖片和動畫等形象化的方法將這些比較抽象的知識以較容易理解的方式展現(xiàn)出來。作為編程的指令系統(tǒng)對匯編語言程序設(shè)計而言是很重要的一部分內(nèi)容,在進行該部分內(nèi)容教學時,可以盡量通過演示程序來進行講解,解釋各條指令的運用方法、效果等,同時也可以適當應用動畫等方式演示指令的執(zhí)行過程。
(2)程序控制結(jié)構(gòu)的教學。
程序控制結(jié)構(gòu)是程序設(shè)計教學中的重點,匯編語言中的選擇結(jié)構(gòu)和循環(huán)程序結(jié)構(gòu)程序設(shè)計則是此部分的難點。為了使學生更好地掌握,在教學過程中,可選擇部分典型的例題,如:解決漢諾塔問題和階乘的計算等。
2.2 教學手段上采用傳統(tǒng)教學與多媒體教學相結(jié)合
在教學過程中我們可以有選擇地使用多媒體教學,例如:用動畫模擬匯編語言中尋址方式、子程序調(diào)用的堆棧變化過程、中斷調(diào)用過程等。運用多媒體教學,增強學生的直觀感,加深對問題的。在講用匯編語言指令編程序的內(nèi)容時,采用傳統(tǒng)的教學方法,教會學生如何思考、推理,如何用指令實現(xiàn)算法,培養(yǎng)學生的抽象思維、邏輯推理能力。傳統(tǒng)教學方法與多媒體教學相結(jié)合,將有助于提高學生的理解能力及綜合思維能力。
2.3 隨堂寫一些小程序增強記憶
在課堂上多加練習編寫小程序段會提高學生對指令的記憶及理解掌握。經(jīng)過幾年的教學發(fā)現(xiàn),課堂上練習少了以后,很多同學往往出現(xiàn)在編寫程序時有些指令寫不出來或不會用相關(guān)指令來組織程序。在課堂上練習,使學生可以增強記憶,對指令的使用方法有了進一步了解,能夠運用自如。
2.4 注重案例教學
案例教學法在當前面向各個層次學生的教學過程中已得到廣泛應用,具體是指教師需要根據(jù)課程教學目標與內(nèi)容的要求,選擇相關(guān)典型的實例并組織學生學習、組織學生討論從而最大程度調(diào)動學生的創(chuàng)造性思維的教學方法。其具體執(zhí)行有兩種形式。
(1)案例講解。
案例講解需要在理論知識講授之后進行,通過案例講解輔助,達到加深學生理解的目標。
(2)案例分析法。
案例分析方法的重點在于討論和分析,其主要目的是培養(yǎng)學生的創(chuàng)造性思維。案例的選擇應注意培養(yǎng)學生理解知識,提高學生分析問題和解決問題的能力。在匯編語言程序設(shè)計的教學中綜合運用案例講解法和分析法,能夠使學生盡快理解匯編語言程序設(shè)計的本質(zhì)特征并迅速掌握編程方法。
2.5 注重實驗內(nèi)容的實用性和趣味性
把實驗實踐環(huán)節(jié)與理論教學相融合,用實踐教學促進學科理論知識學習,激發(fā)學生學習興趣。對于任何一門計算機語言課程來說,實驗都是教學中非常重要的一個環(huán)節(jié),實驗可以加深對理論知識的理解,提高學生的實踐動手能力。為了避免傳統(tǒng)的程序三大結(jié)構(gòu)、數(shù)據(jù)組織與數(shù)值計算、代碼轉(zhuǎn)換和數(shù)制轉(zhuǎn)換等方面的枯燥無味的實驗,應將實驗內(nèi)容和實際應用相結(jié)合,如將匯編語言和計算機的系統(tǒng)維護等實際相聯(lián)系,用匯編語言編寫簡單的設(shè)備驅(qū)動程序等等,增加圖形化的實驗內(nèi)容等方法和手段,使實驗變得實用有趣,增強學生動手的積極性和提高學生的動手能力。
2.6 突出重點和難點
另外,在教學過程中,加強傳統(tǒng)的教學方法也是重要的,如在教學過程中要突出重點和難點;課堂上多做練習,課后注意答疑、輔導。
如:講解指令系統(tǒng)時部分指令應結(jié)合指令編碼(即機器指令)來介紹,這樣學生更容易理解和接受。
例如:講解轉(zhuǎn)移指令中段間轉(zhuǎn)移直接尋址和段間轉(zhuǎn)移間接尋址問題,如果只列出樣例:
段間直接尋址:jmp far ptr target1
段間間接尋址:jmp dword ptr addr [bx]
學生很難理解,具體怎么實現(xiàn)跳轉(zhuǎn)。但是如果結(jié)合指令編碼來講解上述兩條轉(zhuǎn)移指令則效果會有很大改進。
如:
段間轉(zhuǎn)移直接尋址指令編碼需要5個字節(jié),如圖1所示。
也就是說,上例中Jmp far ptr target1 的target1給出的是轉(zhuǎn)移地址,即包括段地址和偏移地址。
而段間轉(zhuǎn)移間接尋址的指令編碼是2~4字節(jié),如圖2所示。
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2011)10-2459-03
Research on Teaching Method of Assembly Language and Programming
HE Li-xin, WANG Kun-lun, LIU Deng-sheng, WU Xiao-qin, TU Jing
(Key Laboratory of Net work and Intelligent Information Processing, Hefei University, Hefei 230601, China)
Abstract: At present,it is very hard to get a satisfied effect of teaching. This paper discusses how to get a better effect on teaching of assembly language by four facets. The four facets include that interesting the students in studying the course, and declining the difficulty of the course, and improving the teaching of experiment, and that a reasonable method of assessment is established. Practice proves the efficiency of this method.
Key words: assembly language; case methods of teaching; methods of assessment
《匯編語言程序設(shè)計》是高等院校計算機軟、硬件及應用專業(yè)的專業(yè)基礎(chǔ)(核心)課,它不僅是計算機原理、接口技術(shù)及操作系統(tǒng)等其它核心課程的先行課,而且對訓練學生掌握程序設(shè)計技術(shù)、加深對計算機工作原理的理解有非常重要的作用。 在實際應用當中,可以使用匯編語言進行計算機系統(tǒng)維護、操作系統(tǒng)維護、操作系統(tǒng)分析、反病毒分析,還可以直接被用于嵌入式軟件開發(fā)之中,更為重要是在與硬件直接打交道時匯編語言是唯一的選擇。因此,搞好《匯編語言程序設(shè)計》課程的教學很重要,如何搞好該課程教學值得廣大教師們探討和總結(jié)。
1 現(xiàn)狀分析
目前,匯編語言課程教學存在的如下問題:
1)絕大多數(shù)同學對匯編語言課程的目的認識不夠,且錯誤地認為匯編語言已經(jīng)過時,沒有用,從而對這門課程的學習沒有興趣。
絕大多數(shù)學生把匯編語言作為一門純粹的編程語言課程來對待,這是一個較大的誤區(qū),這從思想上和意識上把匯編語言放到一個普通的程序設(shè)計軟件的位置,這樣勢必難以達到較好的教學效果。而本課程的一個主要目的就是讓學生學習與認識基本存儲控制思想、底層設(shè)備操縱方法、系統(tǒng)輸入輸出特點等內(nèi)容,為學生在高層應用與底層的系統(tǒng)結(jié)構(gòu)組織與實現(xiàn)之間架設(shè)一座橋梁,使他們能夠建立一個完整的系統(tǒng)思想體系,為將來更好地應用和發(fā)展打下一個良好的基礎(chǔ)[1]。
另外,目前直接用匯編語言編寫軟件的情況的確不多,所以有不少學生都錯誤地認為在高級語言盛行的時代匯編語言已經(jīng)過時且在企業(yè)的實際應用中沒有用途,因此對這門課程沒有興趣。
2)匯編語言難學,挫傷了學生對該課程的學習熱情。
由于匯編語言程序設(shè)計涉及到計算機底層硬件,學習內(nèi)容枯燥,需要記憶的內(nèi)容繁多,起步比較困難,不像計算機高級語言起步容易并在現(xiàn)在的應用程序設(shè)計中占有絕對的優(yōu)勢,相對于匯編語言,高級語言接近人類的自然語言,易學易用,很多功能用高級語言里只要一條語句就可實現(xiàn),而用匯編語言則要好幾條甚至幾十條語句才能實現(xiàn),這在很大程度上挫傷了學生對該課程的學習熱情。
3)實驗內(nèi)容枯燥無味,實驗考核方法不夠好,實驗課效果差。
當前絕大多數(shù)學校的實驗與實踐環(huán)節(jié)的組織對學生學習匯編語言沒有起到太大的幫助,匯編語言實驗內(nèi)容仍然停留在程序三大結(jié)構(gòu)、數(shù)據(jù)組織與數(shù)值計算、代碼轉(zhuǎn)換和數(shù)制轉(zhuǎn)換等方面,這會導致學生對本課程實驗和實踐環(huán)節(jié)沒有興趣,不能激發(fā)學生的學習熱情。另外,很多實驗課基本上是學生做實驗,有問題請教老師,教師指導,實驗課結(jié)束就意味著同學們都通過了該實驗這種方式進行的。很顯然這種方式對自我要求不高的學生沒有任何監(jiān)督力,實驗課教學效果差是很自然的事情。
4)課程考核方法不夠完善,對學習過程的考核不夠嚴謹。
傳統(tǒng)的考核方法是按照期末考試占70%,平時成績占30%來計算總評成績的,有點甚至直接用期末考試成績代替總評成績。顯然這些方法對學習過程的表現(xiàn)考慮不夠,這就導致有些平時不愛學習的同學,經(jīng)常采取考試之前突擊學習、押題等臨時抱佛腳的方法來應付,這樣的學習方式有時能僥幸通過考試,但很顯然學到的知識不牢固,不全面,考過之后很快就會忘記的。
2 問題的解決方案
1)引領(lǐng)學生認識匯編語言課程的重要性,結(jié)合企業(yè)對匯編語言人才的需求和實例激發(fā)學生學習匯編語言的興趣。
人們常說“興趣是最好的老師”,事實的確如此,當學生們對課程產(chǎn)生了興趣時他們會很主動地去學習,遇到困難會積極思考。為了激發(fā)學生的學習興趣,作者在教學中使用了如下方法:
第一、強調(diào)《匯編語言》課程的重要性?!秴R編語言》是高等院校計算機軟、硬件及應用專業(yè)的專業(yè)基礎(chǔ)(核心)課,它不僅是計算機原理、接口技術(shù)及操作系統(tǒng)等其它核心課程的先行課,而且對訓練學生掌握程序設(shè)計技術(shù)、加深對計算機工作原理的理解有非常重要的作用。同時也是我們學習高級語言的利器[2]。
第二、介紹匯編語言在計算機系統(tǒng)維護等方面的實際應用,并選擇有代表性的問題現(xiàn)場演示,讓學生親身體會到匯編語言的用途。雖然目前用匯編語言編寫軟件的情況的確不多。但是在實際應用中可以使用匯編語言進行計算機系統(tǒng)維護、操作系統(tǒng)維護、操作系統(tǒng)分析、反病毒分析,另外在一些嵌入式軟件開發(fā)中有時還需要用到匯編語言,更為重要是在與硬件直接打交道時匯編語言是唯一的選擇。
第三、用與生活中密切相關(guān)的實例現(xiàn)場演示,激發(fā)興趣。
演示事先準備好的用匯編語言開發(fā)的與日常生活密切相關(guān)的應用實例,如:交通燈系統(tǒng),空調(diào)單暖溫度控制器,以及銀行排隊系統(tǒng)等等。使學生親身體會到匯編語言的用途,從而徹底扭轉(zhuǎn)學生們的編語言沒有用的思想,激發(fā)學生學習匯編語言的興趣。
第四、強調(diào)企業(yè)中需要懂匯編語言的人才??湛跓o憑,可以打開百度或Google的網(wǎng)頁,輸入“匯編語言 招聘”進行搜索就會發(fā)現(xiàn)的確有不少企業(yè)在招聘懂匯編的高級人才且待遇豐厚。親眼見到上述企業(yè)的招聘廣告,學生會深刻體會到《匯編語言程序設(shè)計》決非無用課程。
教學的實踐表明:當學生明白了該課程的重要性和學習該課程的目的,學生們就會覺得學好該課程是很有必要的;而當學生們親眼見到匯編語言在計算機維護等方面的實際應用和用匯編語言開發(fā)的與生活中密切相關(guān)的應用實例的演示時,他們就會體會到匯編語言的用途,激起他們的興趣;最后當學生們看到網(wǎng)上不少企業(yè)在招聘懂匯編的高級人才且待遇豐厚時,學生們就會真正感受到匯編語言課程的魅力,激起他們更大的學習興趣。
2)通過合理安排教學內(nèi)容和充分利用多媒體教學的優(yōu)勢等方法降低匯編語言學習的難度,提高教學效果。
有了學習興趣固然是好事,但如果在學習過程中遇到的困難太多或太大都會挫傷學生的學習熱情。
而要想學習好一門課程,首先要選擇一本好的教材。我們選擇教材的原則是:結(jié)構(gòu)清晰、主線特出,內(nèi)容要有一定的深度和廣度,所選例題要有代表性。根據(jù)該原則,我們選用普通高等教育“九五” 國家教委重點教材(沈美明,溫冬嬋 編著.《80X86匯編語言程序設(shè)計》. 北京:清華大學出版社, 2001.7)作為本課程的教材[3],該教材也得到了全國廣大匯編語言教師的認可。經(jīng)過多年的教學以及和學生的交流中我們發(fā)現(xiàn),如果直接按照該教材的順序教學效果不是很好。為了提高教學效果,作者在教學過程中做了如下四方面的改進。
第一,合理調(diào)整課程內(nèi)容的先后順序,將枯燥無味、需要大量記憶的內(nèi)容分散到多個章節(jié)中講授。例如:本書第三章 80x86的指令系統(tǒng)和尋址方式,這一章的指令太多,內(nèi)容太雜,枯燥無味,要記憶的內(nèi)容多。 若將該章中的串處理指令、控制轉(zhuǎn)移指令等放到第五章的循環(huán)與分支程序設(shè)計中結(jié)合例題講解效果更好,而將與子程序相關(guān)的指令放到第六章講更合適,因為經(jīng)過這樣調(diào)換后,不僅避免了指令集中講解時的指令太多,太枯燥,難記憶等問題,而且剛剛講到的指令很快就能在例題中得到應用,學生對指令的理解和掌握會更加深入。第六章的dos系統(tǒng)功能調(diào)用內(nèi)容也應該放到第五章中穿插講授,這樣提前的目的是為了讓學生在實驗中使用dos系統(tǒng)功能調(diào)用,因為上到第五章時就要求學生上機動手編寫程序并用到這些知識點。
第二,充分利用計算機綜合處理教學中的文字、聲音、圖象、圖形、動畫等教學信息,進一步優(yōu)化《匯編語言程序設(shè)計》多媒體教學課件,從而降低匯編語言的學習難度。例如:初學者對于用匯編語言編寫程序往往較難入門,可以首先對問題進行分析,用多媒體動畫形式畫出流程圖,并用動畫形式將每一步流程圖與相應的實現(xiàn)該步驟的匯編指令一一對應起來,教學實踐表明這樣學生入門起來就要容易得多;再如:在子程序遞歸調(diào)用的講解中,堆棧中的數(shù)據(jù)變化是學習的難點,很多學生被搞糊涂了,此時若將指令的逐條執(zhí)行與相應的堆棧內(nèi)數(shù)據(jù)變化情況采用動畫的形式表現(xiàn)出來,學生就很容易理解這樣難點內(nèi)容了。像這樣的例子還很多,由于篇幅有限,在此就不再列舉了。
第三,抓住匯編語言的教學主線(即存儲控制思想)進行教學。 匯編語言不像其他程序設(shè)計語言采用抽象了的數(shù)據(jù),它采儲存取控制的方式組對數(shù)據(jù)進行組織和操作,這既是匯編語言和其他程序設(shè)計語言的不同之處,同時也是這也體現(xiàn)出匯編語言與計算機硬件和操作系統(tǒng)之間的有著緊密聯(lián)系,因此,匯編語言課程的教學主線是存儲控制,該主線貫穿于整個教學過程。牢牢把握該主線,有利于掌握匯編語言程序設(shè)計的思想精髓和更好地抓住匯編語言面向機器的特點。
第四,采用案例教學法[4]進行教學。在教學當中,我經(jīng)常使用案例教學法,教學效果很好。案例教學法就是教師使用與教學內(nèi)容密切相關(guān)的實際案例來解決教學中的各種問題,以提高學生思考問題、分析問題和解決問題的能力,培養(yǎng)學生濃厚的學習興趣的一種教學方法。運用這種教學方法,關(guān)鍵在于教師要準備大量與教學內(nèi)容緊密相關(guān)的案例,并有計劃、有意識、靈活地運用到教學實踐中去,以取得預期的效果和目的。
3)增強實驗內(nèi)容的實用性和趣味性,增加匯編語言與高級語言混合編程的教學內(nèi)容,建立合理可行的實驗制度和考核方法。
對于任何一門計算機語言課程來說,實驗都是教學中非常重要的一個環(huán)節(jié),實驗可以加深對理論知識的理解,提高學生的實踐動手能力。
為了避免傳統(tǒng)的程序三大結(jié)構(gòu)、數(shù)據(jù)組織與數(shù)值計算、代碼轉(zhuǎn)換和數(shù)制轉(zhuǎn)換等方面的枯燥無味的實驗,我們將實驗內(nèi)容和實際應用相結(jié)合,如將匯編語言和計算機的系統(tǒng)維護等實際相聯(lián)系,用匯編語言編寫簡單的設(shè)備驅(qū)動程序等等,增加圖形化的實驗內(nèi)容等方法和手段,使實驗變得實用有趣,增強學生動手的積極性和提高學生的動手能力。
另外,在實驗中還要增加匯編語言與高級語言混合編程的教學內(nèi)容。高級語言在軟件開發(fā)中比匯編語言的使用要廣泛的多,但是匯編語言有它自己獨特的優(yōu)點:占用空間小,速度快,可以與硬件直接打交道,而且與硬件直接打交道時匯編語言也是唯一的選擇。因此要使匯編語言具有更多更好的應用性,就必須增加匯編語言與高級語言混合編程的教學內(nèi)容,以引導學生在今后的實際應用程序開發(fā)中合理使用匯編語言開發(fā)出高效率的軟件。
實驗制度和考核方法的建立有利于進一步提高實驗課的學習效果,實驗課應使學生做到實驗前預習,實驗后總結(jié),實驗中逐個通過的方法。實驗前預習是為了讓學生在實驗前對實驗題目進行分析,查找相關(guān)資料,做好充分的準備以便保證學生在規(guī)定時間內(nèi)完成實驗;實驗中逐個提高的方法是對每個完成實驗的同學進行單獨提3至4個問題,讓其回答,只有回答正確才算該實驗通過,這樣做的主要目的是防止作弊和查找學生薄弱點;實驗后總結(jié)則是總結(jié)經(jīng)驗和不足之處,達到進一步加深對相關(guān)知識點的理解和應用。上述三個環(huán)節(jié)在實驗考核中分別占30%、40%和30%。教學實踐表明建立實驗制度和考核方法可以在很大程度上促進學生學習。
4)建立既注重期末考試結(jié)果又注重平時學習過程的課程考核方法
每門課程學習結(jié)束都需要對學生進行考核,有些同學平時不愛學習,經(jīng)常采取考試之前突擊學習、押題等臨時抱佛腳的方法來應付,這樣的學習方式有時能僥幸通過考試,但很顯然學到的知識不牢固,不全面,考過之后很快就會忘記的。
為了防止這種現(xiàn)象的產(chǎn)生,在教學中采用“N+2”的考核方法,其中的“N”是教學過程中的考核次數(shù)或項目數(shù),“N+2”中的“2”中的“1”是期末考試,另一個“1”是課堂筆記。針對每門課程, N不小于3且不大于5,過程考核可采用的形式有:作業(yè)、平時表現(xiàn)、單元(階段)測試、期中考試、課程論文、課程實驗、綜合性實驗等。一般來說課堂筆記占總分比例不得超過10%,期末考試占總分比例范圍為40%~50%,實驗占20%,其他的根據(jù)實際需要靈活選擇。在這種考核方法下,那些臨時抱佛腳的同學即便在期末考試中考了六七十分,但也會由于平時成績不理想也無法通過該課程的考核,也就是說這種考核方法既注重期末考試結(jié)果又注重平時學習過程,因此那些原本平時不愛學習的同學在這種考核制度的要求下也不得不抓緊時間學習了。實踐表明該考核方法的確行之有效,平時學習的同學越來越多了,知識的掌握程度有了明顯的提高,補考的人數(shù)顯著下降,有些班級甚至沒有人需要補考。
3 結(jié)束語
本文是作者將自己在教學過程中如何激發(fā)學生學習興趣,通過適當?shù)姆椒ê褪侄谓档驼n程學習難度,重視和嚴格要求實驗教學,建立合理可行的課程教學制度和考核方法,從而達到改善教學效果的一些方法做了初步探討,作者深知要想取得更好的教學效果還需要廣大教師付出更多的努力,進行更多的探索和廣泛的交流。
參考文獻:
[1] 陳曉東.《匯編語言》教學方法探討[J].山西農(nóng)業(yè)大學學報,2006,5(6):70-71.
1.前言
匯編語言是我們理解整個計算機系統(tǒng)的最佳起點。人們往往認為匯編語言的應用范圍很小,因而忽視了它的重要性。其實匯編語言對學習計算機科學與技術(shù)的人是非常重要的。所有程序,不論用何種語言進行編制,只有轉(zhuǎn)成機器指令,運用機器的邏輯功能,功能才得以實現(xiàn)。
匯編語言直接a描述機器指令,比機器指令更容易記憶和理解。通過學習和使用匯編語言,我們才能夠感知、體會、理解機器的邏輯功能,這樣不僅可以為理解各種軟件系統(tǒng)的原理打下技術(shù)理論基礎(chǔ),而且可以為掌握硬件系統(tǒng)的原理打下實踐應用基礎(chǔ)。
2.教學中存在的問題
當前高級語言的發(fā)展非常迅速,各種開發(fā)工具層出不窮,其功能也越來越強大。高級語言進行程序設(shè)計的可操作性越來越強,許多非計算機專業(yè)人員在不了解計算機的結(jié)構(gòu)、沒掌握計算機相關(guān)的專業(yè)理論和各種計算機語言具體編程等情況下,同樣能很好地使用高級語言。所以,高級語言的發(fā)展弱化了匯編語言的地位,這使部分高職學生覺得匯編語言已不重要了,學不好沒有多大的關(guān)系。所以,思想認識上的不重視,導致了部分學生學不好這門課程。
《匯編語言程序設(shè)計》的學習需要一定的英語知識。高職學生的英語基礎(chǔ)普遍差,據(jù)有關(guān)職業(yè)教育方面的統(tǒng)計資料顯示:在高職高專院校中60%的學生英語基礎(chǔ)差;30%的學生有一定的基礎(chǔ),但對英語學習不感興趣;10%的學生英語基礎(chǔ)較好。實際上,普通高職高專院校學生英語的基礎(chǔ)情況比統(tǒng)計的更嚴峻。這就為他們學習這一課程帶來了一定的障礙。
針對這一系列的情況,筆者根據(jù)教學經(jīng)驗,總結(jié)了在高職院校教《匯編語言程序設(shè)計》的一些心得,希望對大家有所幫助。
3.注重課堂教學
3.1優(yōu)化教學內(nèi)容。
本課程涉及內(nèi)容較多,教師應在講課之前先對課本內(nèi)容進行優(yōu)化。并不是課本上所羅列的內(nèi)容都需要講,教師要有選擇性講解:對學生有用的而課本上講得不全面的要補充講解,而對學生用處不大的可以不講或一帶而過,爭取做到“少而精”。
3.2讓學生充分認識到該課程的重要性,提高學生的學習的興趣。
“興趣是最好的老師”,如何讓學生對本課程感興趣?筆者認為關(guān)鍵是把握好開學第一堂課。在學生剛接觸本課程時,教師不要急于介紹理論知識,而是要強調(diào)該課程的實際應用,通過介紹匯編語言的特點和匯編語言在一些典型系統(tǒng)開發(fā)中的具體應用來激發(fā)學生的學習興趣。
目前對單片機的靈活編程已經(jīng)應用到各個領(lǐng)域,無論是尖端科技,如軍事、通信、能源、機器人、交通、IT,還是現(xiàn)代工業(yè)、農(nóng)業(yè),如儀器儀表、汽車電子系統(tǒng)、家用電器、玩具、個人信息終端等諸多領(lǐng)域,都離不開單片機。而單片機的編程里大部分都使用了匯編語言,匯編語言的易用和靈活的特性,使得匯編語言將繼續(xù)占有獨特的地位,其適用的領(lǐng)域要求執(zhí)行效率高、反應快,如操作系統(tǒng)內(nèi)核、工業(yè)控制、實時系統(tǒng)、家用電器的計算機控制功能等。在講述其重要性和應用領(lǐng)域時,教師應結(jié)合一些身邊的、具體的實例,如電梯升降的控制程序和廣場的大型噴泉的控制程序均是由匯編語言編寫的,學生的興趣會被這些實例極大地調(diào)動起來。
3.3注重實踐環(huán)節(jié)。
在計算機相關(guān)專業(yè)的教學領(lǐng)域,實驗教學是培養(yǎng)學生學習能力、實踐能力、思考能力、創(chuàng)新能力的重要環(huán)節(jié)和有效途徑。學生在學習匯編語言這門課程中產(chǎn)生的困難,來自于他們對所學知識缺乏必要的感性認識,沒有得到充分的實踐。
計算機在很多方面不同于其他學科,尤其是與硬件有密切關(guān)系的課程。由于匯編語言課程與硬件操作有著密切關(guān)系,因此實驗環(huán)節(jié)在整個教學活動中占據(jù)了舉足輕重的地位。匯編語言的實驗對培養(yǎng)學生的動手能力和學習興趣,提高學生閱讀、編輯和調(diào)試程序的能力,有著不可替代的重要作用。學生通過實驗能深入了解CPU、存儲器、接口及外部設(shè)備的工作特性,對數(shù)據(jù)在計算機中的表達和傳送產(chǎn)生感性認識,在實驗中學生能對匯編語言有更好的理解、掌握,從感性認識上升到理論認識。
4.改進教學方法
4.1對照教學法。
在講匯編語言時,教師可以和其它語言對照講解,比如C語言。C語言作為一門基礎(chǔ)和先驅(qū)課程,在此時起到了很好的借鑒作用,由于大部分學生對C語言掌握得較好,基于語言的相通性,在匯編語言的相關(guān)教學中教師若以C語言作為對照展開講解,將會收到很好的教學效果,也能增進各科之間的知識和方法上的聯(lián)系。下面筆者結(jié)合教學實踐,列舉一些應用對照教學法的實例。
MOV指令是8088指令系統(tǒng)中首要講解的一個指令,也是匯編程序設(shè)計中使用最頻繁的指令,教師應強調(diào)對操作數(shù)的要求。有幾點我們可以用C語言來對比解釋:
傳送過程。其傳送過程類似于C語言中的賦值,只是在這里是給寄存器或存儲單元賦值,其實C語言中的變量名本身就是一個符號地址,匯編程度的賦值最終應對應到存儲器的某些存儲單元。
兩操作數(shù)的類型匹配問題。該內(nèi)容在C語言中已作了強調(diào),匯編中類型匹配問題也是一個重點。與C語言類似,匯編語言操作數(shù)的位數(shù)要保持一致,只是在8088中常用的類型為字節(jié)和字。
強制類型轉(zhuǎn)換。C語言中用到了該知識,學生也已掌握,那么匯編語言中又如何實現(xiàn)呢?很自然地我們就可以引出“BYTE PTR”和“WORD PTR”這兩個操作符。
4.2互動式和啟發(fā)式教學。
高職學生的課堂氣氛一般比較活躍,他們非常喜歡教師引導、提問,喜歡回答問題。所以教師應利用這一特點在上課過程中設(shè)計一些有意義的提問,利用提問將要講的知識點引出來,避免平鋪直敘地講解知識點,這樣讓學生帶著問題來學習知識點,會起到事半功倍的作用。例如,在講解編程部分的循環(huán)結(jié)構(gòu)時,筆者先舉了這樣一個例子:求1+2+3+……+100的和。學生立刻就說出結(jié)果為5050。筆者接著問:加到1000呢?這樣很多學生饒有興趣地聽講??梢?教師所選的題目要由淺入深,要能激發(fā)學生的學習興趣,要想辦法讓學生變被動學習為主動學習。
課堂練習也是互動式教學一個非常重要的方法。在講解完某一個例題后,教師可以出一道類似的習題讓學生在課上完成,請學生上講臺在黑板上寫出解題步驟并進行講解。例如剛學習了用循環(huán)的方法求1+2+3+……+100的和,教師可以讓學生練習一道2+4+6+……+100的和。這樣可以檢驗學生的掌握情況,找到學生理解錯誤的地方,從而對癥下藥。就學生理解錯誤的知識點再進行講解,這樣除了可以讓學生當堂能夠掌握所學的知識點,還能讓其做到舉一反三。
4.3實例教學法。
由于本課程是一門比較抽象的課程,因此教師在課堂講授中應該盡量用一些通俗易懂的例子進行教學。
例如在講解匯編中存儲器地址分段的概念時,為了便于學生理解,教師可以借助平時生活的居民樓,進行舉例。一個小區(qū)有多個居民樓,如一號樓、二號樓等,每個樓里有多個室,如101室、102室等。我們可將樓號比作段基值,每個樓里的房間比作偏移地址,很顯然一號樓的101和二號樓的101是不一樣的。這個例子可以使學生易于理解分段的概念。
再如在講解中斷的概念時有很多例子可舉。把教師上課比作CPU正在處理的事,門外有學生打報告,教師就暫停正在處理的事情讓學生進來,等學生進來后接著講課。這樣學生很容易就能掌握中斷的概念。
教師可以將難理解的知識點與日常生活中的小事相聯(lián)系,這樣既可以使學生學到扎實的理論知識,又不會使學生學得吃力。
5.充分發(fā)揮多媒體教學的作用
匯編語言指令多、變化多,相對其他可編程語言來說源程序長而復雜,一個簡單的問題解決至少要幾十行,多則上百行,教師講解例題時如果板書,就要花去大部分時間。如何解決這個問題呢?多媒體能夠提高教學效果,擴大教學范圍,延伸教師的教育功能。教師應在課前準備講解的程序,上課時直接操作計算機,一邊講解指令的格式及算法,一邊將指令使用前后的情況、程序的效果等通過投影儀展示給學生。計算機教學還可借助網(wǎng)上豐富的資源、圖文并茂的生動界面、多姿多彩的影像資料,這些可使教學具有感受性、新穎性、可組合性、可擴充性,使學生的思維更加具有發(fā)散性,更容易培養(yǎng)學生的創(chuàng)新思維。
6.結(jié)語
筆者對匯編語言課程的教學內(nèi)容和教學方法進行了探討,這些教學方法促進了課程的建設(shè)與發(fā)展,為學生學好后續(xù)課程打下了一個良好的基礎(chǔ)。摸索一條適合高職學生需要的、有效的教學方法,使高職學生能更好地、更快地掌握匯編語言程序設(shè)計,培養(yǎng)學生的分析問題、解決問題和實際操作能力,我們在匯編語言課程教學中需要繼續(xù)探索研究的目標。
1課程的現(xiàn)狀
匯編語言不同于其它高級語言,必須要求編程人員有一定的硬件基礎(chǔ),如對CPU的結(jié)構(gòu)、CPU與存儲器等部件的數(shù)據(jù)傳送過程必須要有基本的了解,這樣才能學好這門課程。在教學過程中,我們發(fā)現(xiàn)學生對高級語言編程學習積極性高,對匯編語言課程缺乏興趣,因為課程本身指令復雜,規(guī)定繁多,再加上學習匯編指令前對CPU的相關(guān)工作過程理解不透,導致學生厭學,又由于本課程面對的低年級學生只有高級語言的基礎(chǔ),習慣于高級語言的自然表達,初次接觸計算機硬件知識心理上有恐懼感,更難以適應繁雜的低級語言。
針對本課程的特點,對教學內(nèi)容、環(huán)節(jié)、過程等進行了精心設(shè)計,下面就教學方法的設(shè)計、實踐教學方法、課程考核形式等方面進行的一系列改革進行詳細探討。
2教學方法設(shè)計改革
為了避免學生因指令復雜,規(guī)定繁多、難度大而對該課程產(chǎn)生畏懼的學習心理,教師有必要對教學內(nèi)容進行合理組織,對教學過程進行精心的設(shè)計。
2.1利用FLASH技術(shù),使教學難點容易理解
在多年的教學過程中,我發(fā)現(xiàn)學生在學習CPU結(jié)構(gòu)這章節(jié)中,對介紹的CPU由哪些寄存器(名稱、大小)構(gòu)成,各個寄存器的含義,用途,CPU與存儲器等部件的數(shù)據(jù)傳送過程,會覺得很抽象,多數(shù)同學都是采用死記硬背的方式,這章節(jié)是第二章節(jié)的內(nèi)容,也是能否學好該課程關(guān)鍵的一章,如果理解不深,這無疑為后續(xù)的學習,特別是尋址方式的學習埋下了隱患。
針對這個問題,教師有必要對教學過程進行精心的設(shè)計。
在這章節(jié)中我們利用FLASH技術(shù),把各種尋址方式下傳送指令的CPU與存儲器等部件的數(shù)據(jù)傳送過程以動畫形式展現(xiàn)給學生,使得復雜,抽象的過程變得直觀,學生理解比較容易,也加深了對尋址方式的記憶。
2.2對比法教學
目前計算機專業(yè)的課程設(shè)置中,《匯編程序語言的程序設(shè)計》課程通常是學習完C語言課程之后開始學習的。所以在教學中可以采用對比法來講解課程,對某些語法知識點和程序設(shè)計過程我們可以以C語言和匯編語言對應分析。
例如在介紹寄存器時,由于在一般的c語言程序中并沒有直接使用到寄存器。因此,我們使用vC++6.0環(huán)境下的調(diào)試工具顯示一個c語言程序及其對應的機器碼,讓學生看到編寫匯編程序寄存器的用途,加深了學生對匯編語言程序的理解。
int m=5,n=6,c;
004010E8 mov dword ptr [ebp-4],5
004010EF mov dword ptr [ebp-8],6
c=m+n;
004010F6 mov eax,dword ptr [ebp-4]
004010F9 add eax,dword ptr [ebp-8]
004010FC mov dword ptr [ebp-0Ch],eax
在介紹語法知識時,比如變量的定義:
C語言中的變量定義形式如下:
int c1,c2=0;
匯編語言的變量定義形式如下:
cl DW ?
c2 DW 0 轉(zhuǎn)貼于
2.3抽象概念的比喻教學法
在對段地址和偏移地址的講解過程中,可以采用比喻法,把操作數(shù)比喻成學生,把教室的房間號比喻成段地址,教室內(nèi)每個座位編個號,編號就是偏移地址,要想到教室把某個學生找到,就要找到相應的教室號,再到對應的座位號找到這個學生,同理,要想把主存中的操作數(shù)找到就要找到段地址和相應的偏移地址,另外要讓學生知道每個教室里的座位號都是從0號開始編號的,也就是每個段里的偏移地址如果不特別指定,也是從0號開始編號的。
3實踐教學改革
3.1增強實驗環(huán)節(jié),做一些實際項目
程序設(shè)計對于大多數(shù)的初學者來說有一定的難度。對于給定的一個實驗題目,許多學生往往感到無從下手。目前的上機實驗時間往往很短,常常是學生才剛剛有點入門,實驗環(huán)節(jié)就結(jié)束了;且課外實踐環(huán)節(jié)幾乎沒有,導致學生即使課內(nèi)學的再好也不會應用。
在實驗設(shè)計方面可以先把一些經(jīng)典的程序提供給學生,例如分支結(jié)構(gòu)的設(shè)計、循環(huán)結(jié)構(gòu)的設(shè)計等,讓學生在寫出C語言程序之后再設(shè)計匯編程序,找出兩者編程思維的區(qū)別。這樣通過一段時間的經(jīng)驗積累,就能夠編寫比較復雜的的程序,由于上機時間有限,可以每次實驗課之后布置一些題目供學生選擇思考,讓學生課外分組來設(shè)計這些程序,題目的類型可以是研討型的讓學生從更多的角度去思考上機實驗過的題目,編寫出不同的程序;另一種為編程型,
例如可以設(shè)置這2道題目,音樂小鍵盤、貪吃蛇游戲等,以加強同學們的編程能力的訓練。
3.2采用與高級語言混合編程
目前越來越多的場合要使用匯編語言和高級語言進行混合編程,因此在教學時應強調(diào)匯編語言和C/C++的混合編程,并且這樣也可以為今后嵌入式系統(tǒng)軟件開發(fā)的學習打下堅實的軟硬件基礎(chǔ)。
在實驗課中可以借助 Visual C++開發(fā)工具,采用內(nèi)聯(lián)匯編的方式,在 C/C++源程序中嵌入?yún)R編指令序列完成一定的功能,并讓學生設(shè)置斷點然后跟蹤執(zhí)行,同時注意觀察寄存器的內(nèi)容和變量的值。這樣可以一方面讓同學們熟練掌握兩種語言的切換使用,另一方面讓他們感受到兩種語言各有特點。例如可以利用匯編語言處理高級語言中不方便處理的一些問題。
4課程考核形式改革
因為“匯編語言程序設(shè)計”是實踐性很強的一門課程,所以實驗課成績應該在總成績中占有相當大的比重。目前大多數(shù)高校的匯編語言課程的實驗課成績只占很小的比重,即理論知識往往占課程期末考核總成績的70%~80%,這樣往往會導致學生不得不將大量的精力放在理論知識的學習中,結(jié)果只會造就大批的應試高手。在教學中,我們遇到過有的學生考試試卷能考90分以上,卻連最基本的計算機操作都不能動手。今后這門課程的考核,實驗課成績應該提高到占總成績的1/2。老師在實驗中應該營造出互動氣氛,檢查每個學生的完成情況同時做好記錄,根據(jù)學生的實際動手情況給出他們的平時實驗成績,而不是只依據(jù)交上來的實驗報告,這樣也能杜絕抄襲之風。
5結(jié)束語
通過教學改革的實踐,在一定程度上提高了他們對本課程的學習積極性,又降低了學習難度。良好的教學效果是永遠追求的目標,在今后的教學中,我們還需要不斷進行探索、研究和嘗試,不斷更新觀念,發(fā)現(xiàn)自身教學過程中的問題,找到解決辦法,提高教學效果。
參考文獻
[1] 王成耀.80x86匯編語言程序設(shè)計[M].北京:人民郵電出版社,2008(第2版).
社會競爭日益激烈,快速變化的社會環(huán)境對人才的綜合素質(zhì)提出更高要求,強調(diào)適應能力和設(shè)計應用能力的提高。為了提升我國高等教育的水平,盡快與國際高等教育接軌,近年來國家加大了對教育科研的投入,加強對高等教育的管理監(jiān)督,強調(diào)對學生動手能力和創(chuàng)新能力的培養(yǎng)[1]。計算機作為現(xiàn)代工作生活必不可少的工具,人們的創(chuàng)新思想和設(shè)計理念都需要借助計算機來實現(xiàn),各個專業(yè)的學生都需要具備一定的程序設(shè)計能力,因此大多數(shù)理工科專業(yè)的學生在整個本科學習過程中會選修兩門以上程序設(shè)計方面的課程。如何合理地安排課程和實驗內(nèi)容,提高學生的程序設(shè)計能力,對培養(yǎng)高素質(zhì)的綜合人才具有重要意義。目前大學課程的改革偏重于課程內(nèi)容以及課程設(shè)置方面的改革,而對教學實施改革的力度還不夠[2]。
1程序設(shè)計能力的培養(yǎng)
程序設(shè)計能力的培養(yǎng),首先是培養(yǎng)學生的設(shè)計能力,如何分析問題,提出解決方案;如何表達自己的設(shè)計思想,進而完善設(shè)計思路。設(shè)計能力的培養(yǎng)與具體的程序?qū)崿F(xiàn)沒有太大關(guān)系,然而卻是程序設(shè)計的基礎(chǔ)。因此,程序設(shè)計能力應該由兩大部分組成:
第一部分,也是基礎(chǔ)部分,分析問題,表達并細化解決思路的能力。這一部分與課程內(nèi)容的聯(lián)系較為松散,卻是能力培養(yǎng)的基礎(chǔ)。
第二部分,是與課程密切相關(guān)的編程實現(xiàn)和調(diào)試程序的能力。學生用課程中所學的某種編程語言,例如匯編語言或C語言,實現(xiàn)自己的設(shè)計思想,并實際動手上機,調(diào)試運行程序,解決具體問題。
目前課程內(nèi)容設(shè)置以及教師的授課均偏重于第二部分,課堂上多講授具體指令的功能及應用,大多數(shù)例題程序只有十多條,至多幾十條指令,并且教師在課堂授課時大多直接給出正確的程序,而不是向?qū)W生演示分析問題、設(shè)計流程、編寫程序、最后調(diào)試修改程序的整個程序設(shè)計過程。其結(jié)果就是,面對程序設(shè)計題目時,學生大多直接開始編寫程序,而不是整理設(shè)計思路。盲目編寫的程序往往邏輯混亂,缺乏調(diào)試經(jīng)驗的學生無法調(diào)試得到正確結(jié)果,打擊了學生學習的自信心和積極性。因此在課堂教學活動中,應該強化對學生分析設(shè)計能力的培養(yǎng),通過例題和課堂問答,詳細演示整個分析、修改,最后完成流程設(shè)計的過程,不要直接給出答案。大多情況下,引導學生完成的流程與例題的答案有所不同,分析兩者,改變學生始終希望有標準答案的習慣。有了流程后,引導學生用所學指令編寫程序,利用多媒體教學手段,向?qū)W生演示整個調(diào)試修改程序的過程,強調(diào)分析問題、整理設(shè)計流程的重要性,改變學生忽略流程設(shè)計,直接編寫程序的“惡習”。
基金項目:重慶市高等教育教學改革研究項目(0634170);重慶大學教學改革項目(教200617)。
作者簡介:胡青(1975-),女,重慶人,講師,碩士,研究方向為模式識別和智能系統(tǒng)。
實際應用中,人們分析解決問題時,多采用從大到小,從上到下逐漸細化的方法。然而在教學過程中,學生很難接受這種方法,面對一個稍微復雜的具體問題時,學生大多無從下手,不知道如何開始分析?!皡R編語言程序設(shè)計”課程在整個本科教育體系中屬于基礎(chǔ)教育,開設(shè)時間較早,大多開設(shè)于大學二年級,這也就意味著,本課程主要面向低年級的,獨立思考能力相對較差的學生。這類學生可以解決具體的小問題,對于稍微大一點的問題,就不知道如何進行分析。針對這種情況,培養(yǎng)學生思維分析能力時,適宜采取從小到大的方法,逐步引導學生適應分析方法,示例最好選擇學生熟悉的事務,如學生成績管理等。從一個具體的小功能出發(fā),如統(tǒng)計某高考學生的總分,配合課程進度,逐步添加功能。例如學習分支結(jié)構(gòu)及相應指令后,就可以統(tǒng)計某個學生不及格的課程門數(shù),到課程結(jié)束時可以完成一個具有基本功能的學生成績管理系統(tǒng)。最后再引導學生用從大到小,從上到下的方法分析設(shè)計學生成績管理系統(tǒng)的功能,使學生了解熟悉這種分析方法。
第二部分程序設(shè)計能力的培養(yǎng),要使學生適應計算機的“思維”方法。計算機中使用二進制,數(shù)據(jù)的儲存、運算、傳輸都采用二進制。這就需要教師耐心引導,通過大量的例子和演示,使學生能夠切換到計算機的“思維”方法,而不是繼續(xù)停留在傳統(tǒng)的紙筆方式。貫穿整個程序設(shè)計的是數(shù)據(jù)流,從哪里得到原始數(shù)據(jù),對這個數(shù)據(jù)做何種處理,結(jié)果存放到哪里。調(diào)試驗證程序的過程就是修改待處理數(shù)據(jù),觀察數(shù)據(jù)處理的結(jié)果是否正確,修改指令直到結(jié)果正確的過程。與其他非計算機類的課程相比,“匯編語言程序設(shè)計”課程有其特殊性,程序設(shè)計是一個調(diào)試修改錯誤,最終得到“正確”程序的過程,而其他非計算機類的大多數(shù)課程都要求一次得到正確結(jié)果,不允許出現(xiàn)錯誤,這就導致學生下意識追求直接寫出“正確”程序,而不是調(diào)試程序。教材上的例題以及教師授課時都直接給出最終的程序,省略中間的調(diào)試修改過程,在一定程度上也加深了學生的這種傾向,剛接觸程序設(shè)計的學生往往有重指令、輕數(shù)據(jù)、忽略調(diào)試的傾向。因此充分利用多媒體手段,在課堂上引導學生動手編程,演示調(diào)試修改過程,通過實際的例題說明觀察數(shù)據(jù),調(diào)試修改程序的方法,對培養(yǎng)學生調(diào)試修改程序的意識和能力是及其必要和有效的。
2教學及實驗改革的實踐
2.1增設(shè)習題課
“匯編程序設(shè)計”課程是實踐性很強的課程,都配有一定的實驗課程,教師對實驗課的重要性已有了足夠的認識,然而強調(diào)實驗課程對學生動手能力的培養(yǎng)[3],在一定程度上忽略了課堂教學對學生“動腦”能力的鍛煉。課堂教學不能局限于程序指令或語法規(guī)則的講授,固定不變的“靜態(tài)”內(nèi)容更多需要學生記憶,而不是理解和應用。理論教學活動以教師為主體,而習題課應以學生為主,教師起輔助引導作用,習題課側(cè)重于“動態(tài)”思維能力的培養(yǎng)。
例如任何一本程序設(shè)計入門的教材都將程序設(shè)計分成了3種基本結(jié)構(gòu),即順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),掌握這3種結(jié)構(gòu)的設(shè)計調(diào)試是整個程序設(shè)計的基礎(chǔ)。介紹相關(guān)指令和程序結(jié)構(gòu)后,在習題課上,通過具體的例子,引導學生分析問題,提出解決問題的流程,使用所學的指令和結(jié)構(gòu)編程實現(xiàn)。利用多媒體手段,演示程序的調(diào)試修改過程,設(shè)計調(diào)試數(shù)據(jù),調(diào)試學生編寫的程序,引導學生自己發(fā)現(xiàn)解決錯誤,整個過程中注意與學生的互動。多個簡單的例子組合起來就形成了一個稍微復雜的問題,通過前面分步的分析,學生對這個問題已經(jīng)熟悉了解,不會產(chǎn)生畏難情緒,之后再通過一個類似的問題,引導學生自行分析實現(xiàn)一個稍具規(guī)模的程序,可以有效地增強學生的自信心。習題課中要注意黑板與多媒體手段的結(jié)合,強調(diào)以學生為主體,教師引導提示。通過習題課使學生對如何分析設(shè)計調(diào)試程序有了直觀認識后,再經(jīng)過實驗環(huán)節(jié),加深學生的理解和應用,最終達到培養(yǎng)學生能力的目的。
2.2實驗內(nèi)容的改革
實驗環(huán)節(jié)作為理論教學的補充,一直處于輔助地位,一般針對理論教學的章節(jié)安排設(shè)置實驗內(nèi)容,而理論教學中各個章節(jié)的知識點都是相對獨立的,這就直接導致實驗內(nèi)容相互間聯(lián)系松散,甚至各自獨立。根據(jù)各章節(jié)的知識點安排實驗內(nèi)容,每次實驗都只要求學生編寫一小段程序,鍛煉檢查學生對具體知識點的掌握,前后實驗之間聯(lián)系較為松散,到課程結(jié)束時,學生編寫過多個實驗程序,但每個程序都只有幾十行代碼,很難將各個知識點融會貫通,靈活運用,更加無法體會模塊化設(shè)計的必要性和設(shè)計思想。因此設(shè)置實驗內(nèi)容時,應該加強實驗間的聯(lián)系,每次實驗都給出需要綜合應用所學知識點的題目,隨著課程的進展,實驗內(nèi)容也從簡單到復雜,到課程結(jié)束時,學生應該能夠進行一定規(guī)模的程序設(shè)計。表1列出了本課程的綜合應用實驗題目,共分7次實驗,每次實驗4學時,每次實驗均布置1~2道針對該次實驗知識點的一般應用題,外加綜合應用前面所學知識的綜合應用題。這樣的實驗設(shè)置可以幫助學生融會貫通所學知識,并能有效地改變學生忽略平時學習,期末集中突擊的現(xiàn)象。
表1 “匯編語言程序設(shè)計”課程綜合實驗設(shè)置
實驗名稱綜合實驗題目
實驗1簡單程序?qū)嶒灳幊虒崿F(xiàn)下列無符號數(shù)運算,結(jié)果放在變量X中,X=(84÷6+5)*7-100
實驗2分支程序?qū)嶒灍o符號字節(jié)型變量X取值范圍為[0,200],編程實現(xiàn)如下函數(shù)f(X),結(jié)果存放在變量Y中。
f(X)= X/20≤X≤50
(X÷6+10)*7-1050
5*X 100
實驗3循環(huán)程序?qū)嶒灍o符號字節(jié)型變量X取值范圍為[0,200],編程實現(xiàn)如下函數(shù)f(X),結(jié)果存放在變量Y中。
f(X)= 0+1+2+…+X0≤X≤50
(X÷6+10)*7-1050
5*X 100
實驗4子程序?qū)嶒灳帉懸粋€子程序?qū)崿F(xiàn)實驗3中綜合題的函數(shù)功能
實驗5DOS功能調(diào)用實驗從鍵盤輸入X的值,并將f(X)結(jié)果顯示在屏幕上
實驗6圖形功能實驗在屏幕上畫出f(X)函數(shù)的圖形
實驗7文件輸入輸出實驗從鍵盤輸入X的值,共輸入10次,將f(X)的結(jié)果顯示在屏幕上,并且將X和f(X)的值寫入文本文件OUT.TXT
2.3實驗過程管理的改革
同理論課相比,實驗課的管理相對要松散一些。實驗課中學生遲到、早退、曠課、代人簽到等現(xiàn)象屢見不鮮。近年來我們加強了對實驗環(huán)節(jié)的管理和監(jiān)督,規(guī)范實驗報告的要求,要求教師批改每份報告,并給出評分等級。然而在實際執(zhí)行過程中發(fā)現(xiàn),學生抄襲報告現(xiàn)象較為嚴重,不少學生在實驗前并沒有完成預習工作。由于批改工作量較大,一個教師要批改幾十甚至上百學生的實驗報告,不少教師采取“粗放式”的批改辦法,實驗報告制度在當前情況下形式大于實效。
計算機類課程的實驗有其特殊性,學生更容易復制抄襲,并且教師很難在短時間內(nèi)通過閱讀報告檢查出程序的錯誤,發(fā)現(xiàn)抄襲報告的學生,也就很難合理公平地評定出實驗成績,這在一定程度上打擊了學生獨立完成實驗的積極性。實驗成績的評定既要重視實驗結(jié)果,更要重視實驗過程[4],只有建立相應的管理機制杜絕抄襲現(xiàn)象,才能促使學生踏踏實實地完成平時的實驗,進而達到鍛煉培養(yǎng)學生動手能力的目的。每次實驗都布置具體的實驗任務,設(shè)定截止日期,要求學生在截止日期前將自己編寫的程序通過電子郵件發(fā)送給指導教師。教師直接運行程序,檢查學生實驗的完成情況,可以有效地提高批改速度和正確率,再利用計算機軟件比較學生提交的程序,相似度達到一定程度就可判定為抄襲,對于認定為相互抄襲的學生,該次實驗均判定為不合格,這樣既可以減輕教師批改報告的工作量,也可以較為客觀準確地評定出學生的實驗情況,對改變當前抄襲報告的現(xiàn)象能起到積極作用。
通過實際的教學活動發(fā)現(xiàn),習題課上學生注意力比較集中,大部分同學都能跟隨教師的指導積極參與。同以往相比,上過習題課后,實驗課中提問的學生人數(shù)明顯增加,不少學生詢問如何調(diào)試,而不是直接請求教師幫助解決問題。采用上述措施后,抄襲實驗報告的現(xiàn)象依然存在,但人數(shù)有所下降。說明上述改革措施,對培養(yǎng)學生綜合應用能力和調(diào)動學生的學習主動性起到了積極作用。
3結(jié)束語
隨著計算機技術(shù)的快速發(fā)展,計算機已經(jīng)深入人們生產(chǎn)、工作、生活的各個方面,良好的計算機應用和設(shè)計能力是高素質(zhì)人才應該具備的基本能力。本文針對“匯編語言程序設(shè)計”課程的特點,對該課程的教學方法、內(nèi)容和管理模式進行了改革實踐,這些措施對提高學生程序設(shè)計能力起到了積極作用。希望課程建設(shè)經(jīng)驗能夠?qū)ζ渌嗨普n程的改革起到參考借鑒作用。
參考文獻:
[1] 教育部. 國家教育事業(yè)發(fā)展“十一五”規(guī)劃綱要[Z]. 2008.
[2] 周建平. 大學課程改革的“深度”缺失與覺醒[J]. 江蘇高教,2009(1):71-73.
[3] 李麗濱,盧宇. 高校計算機實驗教學改革的思考與探索[J]. 遼寧教育研究,2002(9):52-53.
[4] 劉建英. 計算機硬件開發(fā)性實驗教學之我見[J]. 高等理科教育,2007(4):105-107.
Reform in Teaching and Experiments of Course “Assembly Language Program Desgin”
HU Qing, YOU Ji-yuan, SHI Xin
關(guān)鍵詞:匯編語言程序設(shè)計;實驗平臺;教學改革
中圖分類號:G642
文獻標識碼:B
1教材系列化建設(shè)
我們以CCC2002為依據(jù),參考IEEE-CS&ACM 制定的計算機課程指南,閱讀大量的國內(nèi)外相關(guān)優(yōu)秀教材,結(jié)合課程組科研實踐成果,按照系列化建設(shè)的思路,先后編寫完成了《Intel 80x86/Pentium匯編語言程序設(shè)計》、《匯編語言程序設(shè)計(從DOS到Windows)》、《Windows匯編語言程序設(shè)計教程》、《Windows匯編語言程序設(shè)計實驗指導》等4本教材。其中1本被評為2006年北京市高等教育精品教材,1本被列為2007年“普通高等教育“十一五”國家級教材規(guī)劃”,2本作為2007年北京高等教育精品教材建設(shè)項目。通過編寫、使用這些教材,為教學內(nèi)容改革奠定了堅實的基礎(chǔ)。
2教學內(nèi)容及教學方法改革
在教學內(nèi)容和方法上加強與“微機原理與接口技術(shù)”、“計算機組織與結(jié)構(gòu)”、“操作系統(tǒng)”等課程間的聯(lián)系,有利于各門課程之間的融會貫通。教學內(nèi)容體現(xiàn)課程的時代性和先進性,以32位匯編語言及Windows編程環(huán)境的內(nèi)容為主,從16位實模式轉(zhuǎn)換到32位保護模式,結(jié)合豐富的應用性實例,使所學知識與目前主流的應用環(huán)境相結(jié)合,為學生的創(chuàng)新能力奠定基礎(chǔ)。
為實現(xiàn)教學模式從“教學型”向“研究型”的轉(zhuǎn)變,需要充分研究學生的認知過程,掌握認知規(guī)律。根據(jù)“匯編語言程序設(shè)計”課程本身的理論抽象性和鮮明應用性,課程組以建構(gòu)主義理論為基礎(chǔ),探索并改進教學方法。在教學設(shè)計中體現(xiàn)以學生為中心、以教師為主導的思想,采用重點難點精講、對比教學、形象教學、重視實驗等方法,用多媒體手段、典型實例來展現(xiàn)抽象的編程概念。采用現(xiàn)代化網(wǎng)絡教育技術(shù)建立了課程網(wǎng)站及網(wǎng)絡教室,加強師生互動,拓展了交流空間。
例如,在多門專業(yè)課中均涉及到“中斷”概念,在匯編語言程序設(shè)計課程中以編程實例將它具體化,使學生對抽象的理論概念有了直接的認識,從軟件和硬件兩個角度加深了對中斷機制底層的深層次理解,提高了學習興趣。
又如學生難于理解間接尋址方式,但學生在學習本課程時已有了C語言知識,在教學中就把間接尋址方式與C語言的指針類比,通過與先前知識的銜接,經(jīng)過對比學習,使學生建構(gòu)、衍生出更深層次的信息,很容易對新知識消化。對于較難理解的程序轉(zhuǎn)移地址的形成,采用動畫方式幫助學生理解,并通過CASE結(jié)構(gòu)程序設(shè)計實踐鞏固。把宏指令與過程及高級語言的函數(shù)對比,學生很快掌握了其設(shè)計方法,他們通過主動對知識的處理和轉(zhuǎn)化,又總結(jié)出“宏實際更像高級語言的預定義,用到它的地方都會有它一份拷貝,所以宏可能讓你的真正代碼量劇增”。
通過精心組織教學,選擇與實際應用密切結(jié)合的教學案例,在課堂上和網(wǎng)絡支撐平臺上增加總結(jié)和討論環(huán)節(jié),鼓勵學生主動反思,從而調(diào)整個體的認知,幫助學生實現(xiàn)在原有認知基礎(chǔ)上新知識的整合,在融合了多門課程知識的基礎(chǔ)上,形成系統(tǒng)的知識觀念,提高綜合應用和創(chuàng)新能力。
3構(gòu)建先進的實驗平臺
在微機系統(tǒng)的教學和實驗內(nèi)容上,Windows操作系統(tǒng)及32位保護模式已成為匯編語言的發(fā)展趨勢。然而,目前Windows環(huán)境下還沒有一種專門用于匯編語言的主流開發(fā)工具,而底層匯編語言編程所面向的硬件型號和接口又存在巨大差異。為此,課程組開展了改革匯編語言程序設(shè)計實驗環(huán)境的探索,編寫了《Windows匯編語言程序設(shè)計實驗指導》教材,構(gòu)建了新型的實驗環(huán)境,采用Microsoft Visual C/C++集成開發(fā)工具來編寫、調(diào)試匯編程序(見下圖),使匯編程序的編輯、編譯、連接、調(diào)試等過程均與C/C++程序一致,減輕了學生學習負擔,提高了C/C++與匯編混合語言編程能力。應用虛擬機軟件技術(shù),使匯編語言編程面向虛擬的、統(tǒng)一的硬件及其接口,保證了實驗環(huán)境的統(tǒng)一性,提高了實驗效率。
4開設(shè)體現(xiàn)前沿性、先進性的匯編語言實驗
匯編語言程序設(shè)計是一門實踐性很強的課程。課程組跟蹤計算機軟硬件技術(shù)的最新發(fā)展,對國內(nèi)外的相關(guān)課程教學及實踐進行了深入的調(diào)研,結(jié)合在科研實踐中取得的部分成果,開設(shè)出一系列具有鮮明應用特色的驗證型、綜合型和創(chuàng)新型的層次實驗,并寫進《Windows匯編語言程序設(shè)計實驗指導》教材中,進一步鞏固理論教學內(nèi)容。
圖 VC集成環(huán)境下的匯編語言調(diào)試
驗證型實驗以掌握單元知識為目標,著重訓練基礎(chǔ)編程能力,如數(shù)據(jù)塊操作、數(shù)據(jù)顯示、字符串排序、素數(shù)判斷、有序數(shù)組合并等。
綜合型以融合本課程知識為主,如多模塊程序設(shè)計、中斷程序設(shè)計、線程同步、文件管理等。
創(chuàng)新型以設(shè)計具有應用背景的實驗為主,培養(yǎng)學生對計算機知識體系的融會貫通及創(chuàng)新能力。如數(shù)據(jù)庫管理系統(tǒng)設(shè)計、全屏幕編輯器設(shè)計、緩沖區(qū)溢出實驗、讀取硬盤序列號、硬盤DMA等。
基于個體的差異性,學生可以按照自己的能力和興趣選做部分或全部實驗,充分發(fā)揮了學生的主觀能動性。這種強調(diào)自主學習的教學過程和方法,有效地促進了學生自我認知的發(fā)展和新知建構(gòu)。通過實踐環(huán)節(jié),提高了學生的程序設(shè)計能力,為學習后續(xù)專業(yè)課程,設(shè)計硬件驅(qū)動、性能優(yōu)化、代碼對抗等底層系統(tǒng)級軟件打下堅實基礎(chǔ),培養(yǎng)了學生的創(chuàng)新能力。
參考文獻
[l] 李未. 提高教育質(zhì)量,培養(yǎng)創(chuàng)新人才[J]. 計算機教育,2008,(1).
中圖分類號:TP313 文獻標識碼:B 文章編號:1002-2422(2008)03-0086-02
設(shè)計的I/O子程序庫包括16位版本和32位版本,可分別應用于16位和32位匯編語言應用程序,提供的子程序功能包括不同數(shù)制和字符串的輸入與顯示,狀態(tài)標志的顯示,滿足匯編語言程序設(shè)計的通常要求。
1 設(shè)計方案
1.1子程序功能需求
根據(jù)在匯編語言程序設(shè)計中的通常要求,子程序所提供的功能主要包括鍵盤輸入和顯示器顯示,輸入和顯示的內(nèi)容可以是不同的數(shù)制與字符串格式。如表1所示。
1.2子程序庫結(jié)構(gòu)
為了方便整個子程序庫的設(shè)計,設(shè)計了一些通用予程序。在實現(xiàn)提供給用戶使用的子程序時,充分利用這些通用子程序,簡化了子程序的代碼編寫,減少了子程序庫的長度。主要子程序之間的關(guān)系如圖1所示。
字符輸入和顯示子程序READC、DISPC是整個子程序庫輸入輸出的基礎(chǔ)。利用這兩個子程序?qū)崿F(xiàn)了字符串輸入和顯示子程序READMSG和DISPMSG。子程序READMSG和DISPMSG又是不同數(shù)制數(shù)據(jù)輸入和顯示的基礎(chǔ):通過調(diào)用READMSG讀入字符串,然后調(diào)用字符串轉(zhuǎn)換子程序STRTOBIN、STRTOHEX、STRTOUI和STRTOSl分別將字符串轉(zhuǎn)換為不同數(shù)制的數(shù)據(jù),從而實現(xiàn)了不同數(shù)制輸入的子程序READBIN、READHEX、READUI、READSI等;通過調(diào)用DISPMSG顯示字符串,然后調(diào)用數(shù)據(jù)轉(zhuǎn)換字符串子程序BINTOSTR、HEXTOSTR、UITOSTR和SITOSTR分別將字符串轉(zhuǎn)換為不同數(shù)制的數(shù)據(jù),從而實現(xiàn)了顯示不同數(shù)制的子程序DISPBIN、DISPHEX、DISPUI、DISPSI等。
設(shè)計的16位和32位的子程序庫提供的子程序功能都是相同的,區(qū)別在于16位的字符輸入子程序是利用DOS系統(tǒng)調(diào)用實現(xiàn)的,而32位的字符輸入子程序是利用WIN-DOWS API函數(shù)實現(xiàn)的。其他子程序則可以通用。
各個子程序匯編后,由庫管理工具LIB.EXE生成16位子程序庫I/O16.LIB和32位子程序庫I/O32.LIB。
1.3參數(shù)傳遞
匯編語言子程序的參數(shù)傳遞可以采用寄存器傳遞,共享內(nèi)存變量和堆棧傳遞三種方法。堆棧傳遞參數(shù)時,可以用MASM提供的偽指令PROTO來聲明子程序,用INVOKE來調(diào)用子程序。這兩個偽指令在聲明和調(diào)用子程序時相對于CALL指令和PROC偽指令要簡潔得多。使用堆棧傳遞參數(shù)也是高級語言通常使用的子程序傳遞參數(shù)的方法,用堆棧傳遞參數(shù)的子程序可以被高級語言調(diào)用。子程序的返回參數(shù)也遵循高級語言子程序的規(guī)范,采用寄存器EAX返回子程序的出口參數(shù)。
1.4宏命令
1 匯編語言程序設(shè)計教學存在的問題
目前,匯編語言課程教學過程中存在以下問題。
1.1 教學內(nèi)容相對陳舊,缺乏實用性
目前,很多高校的匯編語言教學還是基于十六位機,多采用清華大學出版的沈美明《ibm pc匯編語言程序設(shè)計》一書。其中,cpu內(nèi)寄存器主要是16位,內(nèi)存空間只有1mb,且只能在實模式下進行內(nèi)存管理。而在目前的計算機技術(shù)發(fā)展環(huán)境下,內(nèi)存空間以gb計算,傳統(tǒng)的16位匯編語言教學模式明顯滯后于現(xiàn)今的主流技術(shù),學生學習時會覺得學過即淘汰,學習積極性較低[1]。
1.2 教學方法基本上還是采用常規(guī)的灌輸式的教學方法
課堂講授按照書本一章一節(jié)進行,知識點相對零散且枯燥乏味,難以在學生腦海中建立對語言的整體認識。特別是對于掌握了計算機基礎(chǔ)知識和計算機語言知識的學生,在講授匯編語言程序設(shè)計時仍延用常規(guī)的方法,不利于學生掌握大型匯編語言程序設(shè)計方法。
1.3 實驗環(huán)節(jié)重視不夠,實驗教學方法單一
目前的實驗安排都是圍繞如何消化課堂內(nèi)容展開,實驗環(huán)節(jié)相對孤立且模仿性強,難于鍛煉學生的綜合問題解決能力;實驗課只是布置任務讓學生自己做,較少關(guān)注創(chuàng)新思維的培養(yǎng)。
2 教學改革措施
針對匯編語言程序設(shè)計教學中存在的問題,從以下方面進行了教學改革嘗試。
2.1 更新教學內(nèi)容
為了適應硬件系統(tǒng)32位大環(huán)境,讓學生學有目標,需要更新匯編語言的教學內(nèi)容。在16位匯編語言基礎(chǔ)上,適當增加32位匯編語言程序設(shè)計內(nèi)容,具體包括:編程結(jié)構(gòu)、尋址方式和指令系統(tǒng)。編程結(jié)構(gòu)是匯編語言程序設(shè)計的著陸點。當前,winxp等主流操作系統(tǒng)都工作在保護模式下,在講授實模式編程結(jié)構(gòu)基礎(chǔ)上,再介紹保護模式的編程結(jié)構(gòu),學生會感覺新穎實用。其次,32位匯編語言的尋址方式類型和操作數(shù)位數(shù)都大為增加。再次,32位匯編語言的指令系統(tǒng)多達300多條指令,其源代碼的數(shù)量、速度、占用的內(nèi)存資源都有了質(zhì)的飛躍。因此,學習32位匯編,可以深入了解操作系統(tǒng)運行細節(jié),并增加學生的學習興趣。
2.2 案例教學法的使用
常規(guī)灌輸式的教學方法下,教師對語法規(guī)則和指令系統(tǒng)逐個進行講解,學生僅僅是被動、機械和強制的記憶,學習后面知識點時,容易忘記前面相關(guān)知識點。而使用案例教學法,通過簡單實例引出枯燥的語法規(guī)則和指令系統(tǒng),讓學生即學即用,便于知識的前后銜接和呼應。案例教學的主要步驟包括:(1)案例設(shè)計和準備;(2)章節(jié)重點難點講解;(2)學生分析案例;(4)教師分析和總結(jié)案例;(5)上機驗證并完善案例。在不斷變化和擴充的案例中,使學生有充分的空間思考所學內(nèi)容,也易于引出新知識點,使得教學內(nèi)容具有連貫性,有利于學生提高自信心并系統(tǒng)理解和掌握匯編語言。
2.3 精心安排實驗及實驗教學方法[2]
匯編語言的實驗內(nèi)容主要包括以下內(nèi)容:調(diào)試工具debug的適用、匯編語言程序設(shè)計的上機過程、基本程序結(jié)構(gòu)設(shè)計、子程序設(shè)計和中斷調(diào)用,此外還可以讓學生了解匯編語言與高級語言的連接,時間允許的情況下,還可以設(shè)計綜合實驗。實驗教學中,可以采取演示法、模仿法和對比法相結(jié)合的教學模式。老師借助多媒體演示工具,將實驗步驟從頭到尾講解一遍,學生跟著操作,可以極大提高學習效率。模仿方法下,老師將一些經(jīng)典程序介紹給學生,學生在讀懂后模仿編程,一段時間積累經(jīng)驗后,就可以編寫較復雜的程序。另外,可以將匯編語言與c語言聯(lián)系起來,對比其異同,促進學生對兩種語言的理解。
中圖分類號:G642
文獻標識碼:B
文章編號:1672-5913(2008)06-0019-03
1教學現(xiàn)狀及存在問題
在目前匯編語言的教學過程中,普遍存在的問題就是主流的微型計算機已經(jīng)進入了64位時代,多任務的操作系統(tǒng)取代了DOS,而絕大多數(shù)高校匯編語言程序設(shè)計課程仍然是單任務操作系統(tǒng)(DOS)下的8086匯編語言,給學生的印象是跟不上時展的步伐。加之,匯編語言和機器的體系結(jié)構(gòu)結(jié)合緊密,使用者需要對計算機的組成、硬件的控制和指令的解釋過程有比較清晰的掌握;程序的移植性不好;指令眾多,且同種類型的操作(算術(shù)、邏輯、轉(zhuǎn)移等)要根據(jù)操作數(shù)和狀態(tài)標志選擇不同的指令(如無符號的運算與帶符號的運算、條件轉(zhuǎn)移等);運算中要根據(jù)數(shù)據(jù)長度懸而選擇不同的寄存器;程序的編譯調(diào)試比較麻煩;編寫出吸引人們感官的程序比較困難。因此,學生在匯編語言的學習中容易產(chǎn)生厭煩情緒。有的學校減少了匯編語言的課時,還有的學校甚至干脆取消了這門課程。
2“匯編語言”課程的地位
匯編語言機器級在高層機器和低層機器間扮演了承上啟下的角色,是計算機及相關(guān)專業(yè)學生需要掌握的重要專業(yè)基礎(chǔ)知識之一。
從應用場合來看,匯編語言是能夠利用計算機所有硬件資源并能直接控制硬件的唯一計算機語言,也是除機器語言之外最接近計算機硬件的編程語言。匯編語言程序產(chǎn)生的代碼精簡、運行效率高,具有高級語言不可比的“時空”優(yōu)勢;匯編語言在一些應用如嵌入式系統(tǒng)和工業(yè)控制中,匯編語言最最佳的甚至是唯一選擇的開發(fā)語言。在一些實際的應用系統(tǒng)中,人們往往會用匯編語言來徹底重寫某些經(jīng)常調(diào)用的過程以期獲得更高的性能。
匯編語言為“計算機組成原理”、“計算機接口與通信”、“操作系統(tǒng)”、“高級語言程序設(shè)計”等相關(guān)課程提供了必要的基礎(chǔ)知識,如圖1所示。
圖1 匯編語言和其它課程的關(guān)系
從人才培養(yǎng)方面來看,計算機專業(yè)的學生不應僅僅滿足于利用他人開發(fā)的軟件和工具來解決實際問題,還應具備分析、研究原有軟件系統(tǒng),改進、完善、提高原有系統(tǒng)功能的能力。匯編語言的教學將使學生受到更嚴密、更系統(tǒng)的程序設(shè)計及思維方法的訓練,為深入分析、研究、開發(fā)軟件系統(tǒng)打下良好基礎(chǔ)。
3加強實踐教學
為了提高匯編語言教學的效果,筆者認為應該從以下幾個方面入手。
(1) 清理認識上的誤區(qū)。在上第一堂課時,用一個課
時來講匯編語言的特點及其應用場合、它和高級語言區(qū)別、其難點在哪里、本課程該如何展開等內(nèi)容,從而打消學生畏難和輕視的思想。
(2) 要充分利用好計算機輔助教學(CAI)的優(yōu)勢,要讓課件“動”起來。目前普通本科計算機專業(yè)的教學大都采用了CAI教學,但大都是播放課件(如PPT),實質(zhì)上是用鼠標代替了粉筆、屏幕代替了黑板。而且由于播放的速度遠快于板書,學生反映根本來不及仔細理解有關(guān)內(nèi)容,效果反而不如板書。多媒體教學提供了視覺、聲音的特殊效果,在對重點、難點問題的講授中要充分利用多媒體教學的優(yōu)勢。如講授指令ADD AX,[2000H],如果是靜態(tài)的課件,就是一句“這是一條加法指令,把累加器的內(nèi)容和邏輯地址為2000H存儲單元的內(nèi)容相加,運算結(jié)果送回累加器”。而動態(tài)的課件會先畫出一個模型計算機,然后演示該指令解釋的全過程:從CPU內(nèi)存中取出指令、譯碼、數(shù)據(jù)尋址(從寄存器和內(nèi)存中取得操作數(shù))、啟動ALU運算、保存結(jié)果到累加器和影響狀態(tài)標志寄器。每一步都要圖示化出數(shù)據(jù)的變化和走向以及相應的控制時序。在聲音和顯示控制的程序設(shè)計教學中,更應展示多媒體教學的風采。多媒體教學豐富的動感效果能極大地增加學生對指令的感性認識,增強他們學習的興趣。當然,制作這樣的課件耗時耗力,學校應該切實加大對CAI教學的支持力度。
(3) 在匯編語言的教學中要加強和高級語言的比較教學。在學習匯編語言時,學生一般都具有了C語言程序設(shè)計的知識。在匯編語言程序設(shè)計的教學過程中,應該比較這兩種語言的編程特點、程序代碼空間、運行速度等,以加深學生對這兩種語言的理解。如在講授基址變址尋址方式中,可以用C語言和匯編語言分別實現(xiàn)對數(shù)組運算的實例來闡述。要加強高級語言(C語言)和匯編語言的混合編程的教學,充分闡述C語言結(jié)構(gòu)化設(shè)計和匯編語言對機器低層(存儲器、寄存器、中斷處理、I/O)控制的優(yōu)點。這樣即可充分調(diào)動學生的學習積極性,也可以培養(yǎng)學生解決具體應用的能力。
(4) 加強操作系統(tǒng)相關(guān)知識的滲透和虛擬模式下的編程教學。目前操作系統(tǒng)的核心部分是用匯編語言來實現(xiàn)的,如對CPU本身的初始化(包括定時器、中斷、I/0端口等的初始化);系統(tǒng)引導啟動程序的完成;在處理器的控制下從實模式進入保護模式,實現(xiàn)虛擬存儲器的管理和多任務的調(diào)度。將該部分引入到教學中是有必要的,能加強學生對操作系統(tǒng)中內(nèi)核引導啟動與駐留、保護模式和實模式的切換、多任務的調(diào)度等知識的理解。在講授操作系統(tǒng)對程序的引導和進程的調(diào)用時,適當介紹計算機病毒的機理,以提高學生的學習興趣并擴展知識面。
(5) 要切實抓好實驗教學環(huán)節(jié)。課堂主體教學和一般作業(yè)很難讓學生真正領(lǐng)會本課程涵蓋的概念、原理、方法和技巧等。經(jīng)驗表明,學習并真正掌握匯編語言程序設(shè)計的最好方式是充分實踐。實驗教學和課堂主體教學“兩手都要硬”,在課時分配上達到1:1。
4建立實驗教學平臺
傳統(tǒng)的匯編語言上機實驗一般是在DOS環(huán)境下的進行,如圖2所示。而DOS逐步被淘汰,目前流行使用Windows操作系統(tǒng)平臺,學生對DOS的使用相對陌生。盡管Windows保留了DOS的工作方式,可以切換到DOS提示符下操作,但是對建立文件夾(目錄)、進入文件夾(目錄)、刪除文件等操作,學生們常返回到Windows環(huán)境中來完成,顯然會影響上機的效率和增加編程的繁瑣,同時也不利于WIN32虛擬模式下的教學。
圖2 匯編語言程序開發(fā)的傳統(tǒng)操作過程
因此,必須建立基于Windows操作系統(tǒng)的W32匯編語言集成實驗環(huán)境,該環(huán)境是一個集編輯、編譯、連接、程序調(diào)試和幫助于一體的實驗平臺。筆者主持的課題組經(jīng)過系統(tǒng)的調(diào)研、編程和測試已開發(fā)出一個匯編語言集成編譯系統(tǒng),該系統(tǒng)已成功應用到本課程的實驗教學中,效果較好。系統(tǒng)的運行界面如圖3所示。
其次,要精心編寫實驗指導書和安排實驗內(nèi)容,組織好課程設(shè)計。結(jié)合目前廣泛使用的PC機的Intel 80x86指令系統(tǒng)來開展教學,通過在集成環(huán)境下匯編語言的上機實訓,加深學生對指令系統(tǒng)和匯編語言程序設(shè)計的認識和理解。實驗的內(nèi)容可以組織如下:
(1) 指令系統(tǒng)。用DEBUG調(diào)試工具來熟悉指令功能和尋址方式,掌握簡單程序的調(diào)試。通過實驗了解CPU的組成,熟悉8086/8088寄存器組、8086/8088存儲器組織、8086/8088標志位的意義。
(2) 匯編語言程序設(shè)計。包括順序程序設(shè)計、循環(huán)程序設(shè)計、分支程序設(shè)計、子程序設(shè)計和宏匯編程序設(shè)計等實驗。掌握各種程序結(jié)構(gòu)的設(shè)計方法,了解宏匯編、條件匯編和模塊化程序設(shè)計等匯編語言程序的概念,掌握宏匯編程序設(shè)計的基本方法。
(3) 輸入輸出與中斷。包括輸入輸出程序設(shè)計、中斷處理程序編寫、常用系統(tǒng)中斷(如時鐘顯示、鍵盤和顯示器、使用鼠標的程序設(shè)計)控制等實驗。
(4) Win32匯編語言程序設(shè)計。包括32位微處理器與32位指令、保護模式下的32位匯編語言程序設(shè)計等實驗。
(5) 匯編語言與C/C++的混合編程。主要包括C/C++程序與匯編語言程序的連接、嵌入?yún)R編與模塊調(diào)用等。
圖3 匯編語言集成開發(fā)環(huán)境
參考文獻
[1] 沈美明. IBM-PC匯編語言程序設(shè)計[M]. 北京:清華大學出版社,2001.
[2] KIP R. IRVINE. Assembly Language for the IBM-PC[M]. Prentic Hall INC,1993.
[3] 李學干. 計算機系統(tǒng)的體系機構(gòu)[[M]. 北京:清華大學出版社,2006.
[4] 金海溶. 用實驗方法改革匯編語言的教學[J]. 計算機教育,2006,(1):36-37.