前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇匯編語言程序設計范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。
《匯編語言程序設計》是高等院校計算機及相關專業的專業課程之一,是計算機組成原理、系統結構等核心課程的先修課。匯編語言與硬件有重要聯系,用匯編語言獲得的可執行程序具有運行速度快、占用內存空間少等優點,能更有效地對硬件設備進行控制及開發。另外,學生掌握匯編語言,對其深入學習計算機工作原理、程序設計技術和程序調試技術等都有十分重要的作用。
與其它高級語言相比,匯編語言存在指令繁多、尋址方式多樣、程序可讀性差、編程效率不高等缺點,這使得學生對該課程的重要性認識不足。此外,學生的學習目的相當務實,有些學生認為即便是在計算機應用場合,使用匯編語言的可能性也很小,所以怕苦怕難,沒有學習這門課的積極性。實際上,只有通過學習匯編語言,學生才能深入了解計算機的硬件和軟件,從朦朧的計算機世界中走出來,進而理解編譯和解釋程序,在審視高級語言的時候,才能夠透徹地理解最根本的計算機技術[1]。所以,不了解匯編語言, 不僅會導致學生認知水平降低,編程開發手段貧乏,更會導致學生的知識結構失衡。
2實驗教學在《匯編語言程序設計》教學中的作用在培養人的科學思維、創新意識,掌握科學方法、提高綜合實踐能力方面,實踐環節有著重要的作用,是課堂理論教學無法替代的。實驗課是進行實踐教學的重要學習場地,學生通過對實驗內容的思考,對課堂上的理論知識進行了鞏固;實驗過程中的操作,可以發現理論教學的不足;實驗過后的心得分析,為以后解決實際問題打下堅實基礎。實驗還可以將算法的實現和計算機的操作過程相結合,使學生體會到算法的邏輯含義是通過計算機的實際執行過程實現的[2]。
匯編語言與硬件關系密切,通過實驗課,學生可以更好地理解cpu、寄存器、存儲器、接口及外部設備的工作原理。《匯編語言程序設計》課程的實驗是培養學生的動手能力、增強學生的學習興趣、提高學生閱讀、編輯和調試程序能力的關鍵環節。
3實驗教學中存在的問題
3.1教學內容安排方面
計算機語言課程的學習需要理論聯系實踐,實驗課是學好計算機語言的必備條件,匯編語言的學習亦是如此,實驗課程開始越早對學生的學習越有利。《匯編語言程序設計》這門課程的教材安排順序一般是:基礎知識、計算機系統的組織、匯編要素、基本指令、程序設計、輸入/輸出、系統調用、高級匯編語言技術。實驗教學往往是配合理論教學進行,通常在理論課程第5~7周后,實驗課才得以開設。這樣的教學安排效果并不理想,在實驗課程開設的前幾周不利于學生很好地掌握學習內容,從而對匯編語言產生厭學情緒。
高等院校普遍存在對專業課程的課時進行壓縮的現象,使得《匯編語言程序設計》的理論課時和實驗課時都有不同程度的壓縮,實驗課時的壓縮相對于理論課時更加嚴重,導致實驗內容的安排不能覆蓋該課程的重點,而且重點實驗內容也相對淺顯,無法進行深入研究。
另外,有些教師圍繞課本基礎結構部分的知識講授,沒有結合實際應用進行擴展,對實驗內容的設計也比較淺顯,無法激起學生的興趣。這些行為都導致了學生對匯編語言的學習興趣降低甚至放棄。
3.2學生態度不夠端正
很多學生認為實驗課不重要,實驗做得好否對最終的成績判斷沒有關聯。目前多數院校的學生學習成績判定, 以期末考試成績為主,這就使得很多學生重理論、輕實驗。另外,匯編語言不像其它高級語言那樣應用廣泛,學生認為其對就業幫助不大,從思想上輕視匯編語言,對《匯編語言程序設計》的實驗課程更是不愿付出精力,甚至出現拷貝代碼的現象。
3.3考核體系不明確
匯編語言的實驗教學環節沒有受到足夠的重視,導致沒有明確的評價體系。在進行實驗課時,有些教師只是布置了相關的實驗內容,實驗過程沒有進行必要的監督和輔導,導致學生對實驗教學態度怠慢,出現學生在實驗課上玩游戲和課下實驗報告抄襲的現象。
4提高匯編語言實驗教學效果的措施
4.1合理設置實驗內容
實驗課的內容按照由淺入深、循序漸進的方式進行,以啟發思維為主。對設計型、綜合型實驗只要能達到實驗目的,其實驗過程和步驟可以多樣,通過實驗課復習理論知識,引出欲
講解的新內容。針對學期初不安排實驗的問題,可以嘗試開展“先實驗后理論”的教學,在實驗中理解基礎理論,加大實驗課的比例并且及早實行開展實驗教學,在整個教學過程中實行以“學生動手為主,教師講解為輔”的教學模式[3]。
4.2引入新的實驗教學模式,培養學生學習興趣
實驗教學中要充分調動學生的積極性,照顧不同層次的學生。匯編語言指令繁瑣,初始使用時比較抽象,學生對待實驗內容往往無從下手,所以任課教師應該先對實驗內容進行講解。起初的實驗內容,教師應該進行詳細的演示,可以先引導學生“臨摹”,避免學生出現無從下手、喪失信心等問題。后面的實驗內容可以進行講解并提示實驗方法,但不要求每個學生都按照此方法進行實驗,鼓勵學生創新,并在考核中給予一定的獎勵。每次實驗內容,任課教師都要進行總結,以解決學生在實驗過程中的“通病”。
《匯編語言程序設計》的實驗一般設置16~24學時,存在實驗學時偏少的問題。為了盡可能提高實驗效率,教師可以提前給學生布置實驗內容,給學生留出時間準備。如果在實驗課上臨時給出實驗內容,大多數學生無法按時完成實驗目標,會打擊學生學習的積極性。對實驗內容進行準備后再上機操作,大多數學生就可以在規定的時間內完成實驗。學生在上機的過程中獲得了成就感,樹立了信心,就會產生學習興趣,并主動在課下花時間鉆研有關課程實驗的內容。
為了培養學生的團隊合作精神,也可以設計一些綜合應用實驗,讓學生分組完成。每組選出一位組長,負責組織學生課下進行實驗內容的預習、實驗方案的制定和課上組員提出問題的解決方案等工作。教師在進行實驗考核時,要對每個組的完成情況進行總結,對于完成較好的組,給予成員一定的加分,以鼓勵學生注重團隊合作精神,培養學生的學習興趣。
4.3建立嚴格的考核體系
《匯編語言程序設計》課程一般需要16~18個教學周才能完成教學任務,在這段時間內,很少有學生能對其一直保持較高的學習熱情,大部分學生都是以成績驅動自己的學習,所以需要一套嚴謹的實驗考核體系,公平公正地評價學生的實驗過程[4]。筆者學校的實驗課程成績由學生出勤、預習、實驗操作過程和實驗報告4部分組成,涵蓋了學生實驗上機的全過程。各部分的比例按10%、20%、40%、30%的權重計算實驗總成績。除了出勤情況外,預習、實驗操作過程和實驗報告這3部分按等級評定,每個等級對應的分數為: a(90~100)、b(80~89)、c(70~79)、d(60~69)、e(50);對于前4個等級,教師可根據學生完成的情況給出該等級的加減等級。以a等級為例,a+對應100分,a對應95分,a-對應90分,這樣每個等級都有對應的分數,可以做到客觀地評價學生的實驗過程。
5結語
本文根據筆者的教學實踐,分析了《匯編語言程序設計》課程的教學現狀,指出了實驗教學在《匯編語言程序設計》教學過程中的重要性,并對匯編語言的實驗教學進行了深入的分析和思考。根據實際情況提出了幾點可行的措施,即合理安排實驗內容,引入新的實驗教學模式和建立嚴格的考核體系,從而達到發掘學生潛能、提高實踐動手能力、增強學習匯編語言興趣等目的。《匯編語言程序設計》課程的實驗教學還需要廣大教師積極探索,引入多種符合實際的教學方法,使匯編語言對計算機專業課程后續的學習發揮應有的作用。
參考文獻參考文獻:
\[1\]劉正紅.對匯編語言實驗教學的幾點看法[j].信息與電腦,2012(6):198199.
[2]木林.《匯編語言程序設計》實驗教學的探討[j].呼倫貝爾學院學報,2012 (4):9295.
[3]張學,陸慶.匯編語言實驗教學的思考[j].教學研究,2009(15):8182.
[4]侯宏霞.提高匯編語言課程實驗教學質量的幾點思考[j].內蒙古農業大學學報:社會科學版,2011(13):173174.
[5]金海溶,周蘇,孟學多.用實驗方法改革匯編語言程序設計的教學[j].計算機教育, 2007(1):3437.
關鍵詞: 高職院校《匯編語言程序設計》教學方法
1.前言
匯編語言是我們理解整個計算機系統的最佳起點。人們往往認為匯編語言的應用范圍很小,因而忽視了它的重要性。其實匯編語言對學習計算機科學與技術的人是非常重要的。所有程序,不論用何種語言進行編制,只有轉成機器指令,運用機器的邏輯功能,功能才得以實現。
匯編語言直接a描述機器指令,比機器指令更容易記憶和理解。通過學習和使用匯編語言,我們才能夠感知、體會、理解機器的邏輯功能,這樣不僅可以為理解各種軟件系統的原理打下技術理論基礎,而且可以為掌握硬件系統的原理打下實踐應用基礎。
2.教學中存在的問題
當前高級語言的發展非常迅速,各種開發工具層出不窮,其功能也越來越強大。高級語言進行程序設計的可操作性越來越強,許多非計算機專業人員在不了解計算機的結構、沒掌握計算機相關的專業理論和各種計算機語言具體編程等情況下,同樣能很好地使用高級語言。所以,高級語言的發展弱化了匯編語言的地位,這使部分高職學生覺得匯編語言已不重要了,學不好沒有多大的關系。所以,思想認識上的不重視,導致了部分學生學不好這門課程。
《匯編語言程序設計》的學習需要一定的英語知識。高職學生的英語基礎普遍差,據有關職業教育方面的統計資料顯示:在高職高專院校中60%的學生英語基礎差;30%的學生有一定的基礎,但對英語學習不感興趣;10%的學生英語基礎較好。實際上,普通高職高專院校學生英語的基礎情況比統計的更嚴峻。這就為他們學習這一課程帶來了一定的障礙。
針對這一系列的情況,筆者根據教學經驗,總結了在高職院校教《匯編語言程序設計》的一些心得,希望對大家有所幫助。
3.注重課堂教學
3.1優化教學內容。
本課程涉及內容較多,教師應在講課之前先對課本內容進行優化。并不是課本上所羅列的內容都需要講,教師要有選擇性講解:對學生有用的而課本上講得不全面的要補充講解,而對學生用處不大的可以不講或一帶而過,爭取做到“少而精”。
3.2讓學生充分認識到該課程的重要性,提高學生的學習的興趣。
“興趣是最好的老師”,如何讓學生對本課程感興趣?筆者認為關鍵是把握好開學第一堂課。在學生剛接觸本課程時,教師不要急于介紹理論知識,而是要強調該課程的實際應用,通過介紹匯編語言的特點和匯編語言在一些典型系統開發中的具體應用來激發學生的學習興趣。
目前對單片機的靈活編程已經應用到各個領域,無論是尖端科技,如軍事、通信、能源、機器人、交通、IT,還是現代工業、農業,如儀器儀表、汽車電子系統、家用電器、玩具、個人信息終端等諸多領域,都離不開單片機。而單片機的編程里大部分都使用了匯編語言,匯編語言的易用和靈活的特性,使得匯編語言將繼續占有獨特的地位,其適用的領域要求執行效率高、反應快,如操作系統內核、工業控制、實時系統、家用電器的計算機控制功能等。在講述其重要性和應用領域時,教師應結合一些身邊的、具體的實例,如電梯升降的控制程序和廣場的大型噴泉的控制程序均是由匯編語言編寫的,學生的興趣會被這些實例極大地調動起來。
3.3注重實踐環節。
在計算機相關專業的教學領域,實驗教學是培養學生學習能力、實踐能力、思考能力、創新能力的重要環節和有效途徑。學生在學習匯編語言這門課程中產生的困難,來自于他們對所學知識缺乏必要的感性認識,沒有得到充分的實踐。
計算機在很多方面不同于其他學科,尤其是與硬件有密切關系的課程。由于匯編語言課程與硬件操作有著密切關系,因此實驗環節在整個教學活動中占據了舉足輕重的地位。匯編語言的實驗對培養學生的動手能力和學習興趣,提高學生閱讀、編輯和調試程序的能力,有著不可替代的重要作用。學生通過實驗能深入了解CPU、存儲器、接口及外部設備的工作特性,對數據在計算機中的表達和傳送產生感性認識,在實驗中學生能對匯編語言有更好的理解、掌握,從感性認識上升到理論認識。
4.改進教學方法
4.1對照教學法。
在講匯編語言時,教師可以和其它語言對照講解,比如C語言。C語言作為一門基礎和先驅課程,在此時起到了很好的借鑒作用,由于大部分學生對C語言掌握得較好,基于語言的相通性,在匯編語言的相關教學中教師若以C語言作為對照展開講解,將會收到很好的教學效果,也能增進各科之間的知識和方法上的聯系。下面筆者結合教學實踐,列舉一些應用對照教學法的實例。
MOV指令是8088指令系統中首要講解的一個指令,也是匯編程序設計中使用最頻繁的指令,教師應強調對操作數的要求。有幾點我們可以用C語言來對比解釋:
傳送過程。其傳送過程類似于C語言中的賦值,只是在這里是給寄存器或存儲單元賦值,其實C語言中的變量名本身就是一個符號地址,匯編程度的賦值最終應對應到存儲器的某些存儲單元。
兩操作數的類型匹配問題。該內容在C語言中已作了強調,匯編中類型匹配問題也是一個重點。與C語言類似,匯編語言操作數的位數要保持一致,只是在8088中常用的類型為字節和字。
強制類型轉換。C語言中用到了該知識,學生也已掌握,那么匯編語言中又如何實現呢?很自然地我們就可以引出“BYTE PTR”和“WORD PTR”這兩個操作符。
4.2互動式和啟發式教學。
高職學生的課堂氣氛一般比較活躍,他們非常喜歡教師引導、提問,喜歡回答問題。所以教師應利用這一特點在上課過程中設計一些有意義的提問,利用提問將要講的知識點引出來,避免平鋪直敘地講解知識點,這樣讓學生帶著問題來學習知識點,會起到事半功倍的作用。例如,在講解編程部分的循環結構時,筆者先舉了這樣一個例子:求1+2+3+……+100的和。學生立刻就說出結果為5050。筆者接著問:加到1000呢?這樣很多學生饒有興趣地聽講。可見,教師所選的題目要由淺入深,要能激發學生的學習興趣,要想辦法讓學生變被動學習為主動學習。
課堂練習也是互動式教學一個非常重要的方法。在講解完某一個例題后,教師可以出一道類似的習題讓學生在課上完成,請學生上講臺在黑板上寫出解題步驟并進行講解。例如剛學習了用循環的方法求1+2+3+……+100的和,教師可以讓學生練習一道2+4+6+……+100的和。這樣可以檢驗學生的掌握情況,找到學生理解錯誤的地方,從而對癥下藥。就學生理解錯誤的知識點再進行講解,這樣除了可以讓學生當堂能夠掌握所學的知識點,還能讓其做到舉一反三。
4.3實例教學法。
由于本課程是一門比較抽象的課程,因此教師在課堂講授中應該盡量用一些通俗易懂的例子進行教學。
例如在講解匯編中存儲器地址分段的概念時,為了便于學生理解,教師可以借助平時生活的居民樓,進行舉例。一個小區有多個居民樓,如一號樓、二號樓等,每個樓里有多個室,如101室、102室等。我們可將樓號比作段基值,每個樓里的房間比作偏移地址,很顯然一號樓的101和二號樓的101是不一樣的。這個例子可以使學生易于理解分段的概念。
再如在講解中斷的概念時有很多例子可舉。把教師上課比作CPU正在處理的事,門外有學生打報告,教師就暫停正在處理的事情讓學生進來,等學生進來后接著講課。這樣學生很容易就能掌握中斷的概念。
教師可以將難理解的知識點與日常生活中的小事相聯系,這樣既可以使學生學到扎實的理論知識,又不會使學生學得吃力。
5.充分發揮多媒體教學的作用
匯編語言指令多、變化多,相對其他可編程語言來說源程序長而復雜,一個簡單的問題解決至少要幾十行,多則上百行,教師講解例題時如果板書,就要花去大部分時間。如何解決這個問題呢?多媒體能夠提高教學效果,擴大教學范圍,延伸教師的教育功能。教師應在課前準備講解的程序,上課時直接操作計算機,一邊講解指令的格式及算法,一邊將指令使用前后的情況、程序的效果等通過投影儀展示給學生。計算機教學還可借助網上豐富的資源、圖文并茂的生動界面、多姿多彩的影像資料,這些可使教學具有感受性、新穎性、可組合性、可擴充性,使學生的思維更加具有發散性,更容易培養學生的創新思維。
6.結語
筆者對匯編語言課程的教學內容和教學方法進行了探討,這些教學方法促進了課程的建設與發展,為學生學好后續課程打下了一個良好的基礎。摸索一條適合高職學生需要的、有效的教學方法,使高職學生能更好地、更快地掌握匯編語言程序設計,培養學生的分析問題、解決問題和實際操作能力,我們在匯編語言課程教學中需要繼續探索研究的目標。
參考文獻:
摘要:本文從教材建設、課程教學內容改革、教學方式手段改革、實驗平臺創新、實驗改革等方面介紹了我院在“匯編語言程序設計”課程的教學改革實踐。
關鍵詞:匯編語言程序設計;實驗平臺;教學改革
中圖分類號:G642
文獻標識碼:B
1教材系列化建設
我們以CCC2002為依據,參考IEEE-CS&ACM 制定的計算機課程指南,閱讀大量的國內外相關優秀教材,結合課程組科研實踐成果,按照系列化建設的思路,先后編寫完成了《Intel 80x86/Pentium匯編語言程序設計》、《匯編語言程序設計(從DOS到Windows)》、《Windows匯編語言程序設計教程》、《Windows匯編語言程序設計實驗指導》等4本教材。其中1本被評為2006年北京市高等教育精品教材,1本被列為2007年“普通高等教育“十一五”國家級教材規劃”,2本作為2007年北京高等教育精品教材建設項目。通過編寫、使用這些教材,為教學內容改革奠定了堅實的基礎。
2教學內容及教學方法改革
在教學內容和方法上加強與“微機原理與接口技術”、“計算機組織與結構”、“操作系統”等課程間的聯系,有利于各門課程之間的融會貫通。教學內容體現課程的時代性和先進性,以32位匯編語言及Windows編程環境的內容為主,從16位實模式轉換到32位保護模式,結合豐富的應用性實例,使所學知識與目前主流的應用環境相結合,為學生的創新能力奠定基礎。
為實現教學模式從“教學型”向“研究型”的轉變,需要充分研究學生的認知過程,掌握認知規律。根據“匯編語言程序設計”課程本身的理論抽象性和鮮明應用性,課程組以建構主義理論為基礎,探索并改進教學方法。在教學設計中體現以學生為中心、以教師為主導的思想,采用重點難點精講、對比教學、形象教學、重視實驗等方法,用多媒體手段、典型實例來展現抽象的編程概念。采用現代化網絡教育技術建立了課程網站及網絡教室,加強師生互動,拓展了交流空間。
例如,在多門專業課中均涉及到“中斷”概念,在匯編語言程序設計課程中以編程實例將它具體化,使學生對抽象的理論概念有了直接的認識,從軟件和硬件兩個角度加深了對中斷機制底層的深層次理解,提高了學習興趣。
又如學生難于理解間接尋址方式,但學生在學習本課程時已有了C語言知識,在教學中就把間接尋址方式與C語言的指針類比,通過與先前知識的銜接,經過對比學習,使學生建構、衍生出更深層次的信息,很容易對新知識消化。對于較難理解的程序轉移地址的形成,采用動畫方式幫助學生理解,并通過CASE結構程序設計實踐鞏固。把宏指令與過程及高級語言的函數對比,學生很快掌握了其設計方法,他們通過主動對知識的處理和轉化,又總結出“宏實際更像高級語言的預定義,用到它的地方都會有它一份拷貝,所以宏可能讓你的真正代碼量劇增”。
通過精心組織教學,選擇與實際應用密切結合的教學案例,在課堂上和網絡支撐平臺上增加總結和討論環節,鼓勵學生主動反思,從而調整個體的認知,幫助學生實現在原有認知基礎上新知識的整合,在融合了多門課程知識的基礎上,形成系統的知識觀念,提高綜合應用和創新能力。
3構建先進的實驗平臺
在微機系統的教學和實驗內容上,Windows操作系統及32位保護模式已成為匯編語言的發展趨勢。然而,目前Windows環境下還沒有一種專門用于匯編語言的主流開發工具,而底層匯編語言編程所面向的硬件型號和接口又存在巨大差異。為此,課程組開展了改革匯編語言程序設計實驗環境的探索,編寫了《Windows匯編語言程序設計實驗指導》教材,構建了新型的實驗環境,采用Microsoft Visual C/C++集成開發工具來編寫、調試匯編程序(見下圖),使匯編程序的編輯、編譯、連接、調試等過程均與C/C++程序一致,減輕了學生學習負擔,提高了C/C++與匯編混合語言編程能力。應用虛擬機軟件技術,使匯編語言編程面向虛擬的、統一的硬件及其接口,保證了實驗環境的統一性,提高了實驗效率。
4開設體現前沿性、先進性的匯編語言實驗
匯編語言程序設計是一門實踐性很強的課程。課程組跟蹤計算機軟硬件技術的最新發展,對國內外的相關課程教學及實踐進行了深入的調研,結合在科研實踐中取得的部分成果,開設出一系列具有鮮明應用特色的驗證型、綜合型和創新型的層次實驗,并寫進《Windows匯編語言程序設計實驗指導》教材中,進一步鞏固理論教學內容。
圖 VC集成環境下的匯編語言調試
驗證型實驗以掌握單元知識為目標,著重訓練基礎編程能力,如數據塊操作、數據顯示、字符串排序、素數判斷、有序數組合并等。
綜合型以融合本課程知識為主,如多模塊程序設計、中斷程序設計、線程同步、文件管理等。
創新型以設計具有應用背景的實驗為主,培養學生對計算機知識體系的融會貫通及創新能力。如數據庫管理系統設計、全屏幕編輯器設計、緩沖區溢出實驗、讀取硬盤序列號、硬盤DMA等。
基于個體的差異性,學生可以按照自己的能力和興趣選做部分或全部實驗,充分發揮了學生的主觀能動性。這種強調自主學習的教學過程和方法,有效地促進了學生自我認知的發展和新知建構。通過實踐環節,提高了學生的程序設計能力,為學習后續專業課程,設計硬件驅動、性能優化、代碼對抗等底層系統級軟件打下堅實基礎,培養了學生的創新能力。
參考文獻
[l] 李未. 提高教育質量,培養創新人才[J]. 計算機教育,2008,(1).
[2] 肖川. 主體參與:自主學習的要義[J]. 人民教育,2003,(22).
關鍵詞:匯編語言;集成開發環境;實踐教學
中圖分類號:G642
文獻標識碼:B
文章編號:1672-5913(2008)06-0019-03
1教學現狀及存在問題
在目前匯編語言的教學過程中,普遍存在的問題就是主流的微型計算機已經進入了64位時代,多任務的操作系統取代了DOS,而絕大多數高校匯編語言程序設計課程仍然是單任務操作系統(DOS)下的8086匯編語言,給學生的印象是跟不上時展的步伐。加之,匯編語言和機器的體系結構結合緊密,使用者需要對計算機的組成、硬件的控制和指令的解釋過程有比較清晰的掌握;程序的移植性不好;指令眾多,且同種類型的操作(算術、邏輯、轉移等)要根據操作數和狀態標志選擇不同的指令(如無符號的運算與帶符號的運算、條件轉移等);運算中要根據數據長度懸而選擇不同的寄存器;程序的編譯調試比較麻煩;編寫出吸引人們感官的程序比較困難。因此,學生在匯編語言的學習中容易產生厭煩情緒。有的學校減少了匯編語言的課時,還有的學校甚至干脆取消了這門課程。
2“匯編語言”課程的地位
匯編語言機器級在高層機器和低層機器間扮演了承上啟下的角色,是計算機及相關專業學生需要掌握的重要專業基礎知識之一。
從應用場合來看,匯編語言是能夠利用計算機所有硬件資源并能直接控制硬件的唯一計算機語言,也是除機器語言之外最接近計算機硬件的編程語言。匯編語言程序產生的代碼精簡、運行效率高,具有高級語言不可比的“時空”優勢;匯編語言在一些應用如嵌入式系統和工業控制中,匯編語言最最佳的甚至是唯一選擇的開發語言。在一些實際的應用系統中,人們往往會用匯編語言來徹底重寫某些經常調用的過程以期獲得更高的性能。
匯編語言為“計算機組成原理”、“計算機接口與通信”、“操作系統”、“高級語言程序設計”等相關課程提供了必要的基礎知識,如圖1所示。
圖1 匯編語言和其它課程的關系
從人才培養方面來看,計算機專業的學生不應僅僅滿足于利用他人開發的軟件和工具來解決實際問題,還應具備分析、研究原有軟件系統,改進、完善、提高原有系統功能的能力。匯編語言的教學將使學生受到更嚴密、更系統的程序設計及思維方法的訓練,為深入分析、研究、開發軟件系統打下良好基礎。
3加強實踐教學
為了提高匯編語言教學的效果,筆者認為應該從以下幾個方面入手。
(1) 清理認識上的誤區。在上第一堂課時,用一個課
時來講匯編語言的特點及其應用場合、它和高級語言區別、其難點在哪里、本課程該如何展開等內容,從而打消學生畏難和輕視的思想。
(2) 要充分利用好計算機輔助教學(CAI)的優勢,要讓課件“動”起來。目前普通本科計算機專業的教學大都采用了CAI教學,但大都是播放課件(如PPT),實質上是用鼠標代替了粉筆、屏幕代替了黑板。而且由于播放的速度遠快于板書,學生反映根本來不及仔細理解有關內容,效果反而不如板書。多媒體教學提供了視覺、聲音的特殊效果,在對重點、難點問題的講授中要充分利用多媒體教學的優勢。如講授指令ADD AX,[2000H],如果是靜態的課件,就是一句“這是一條加法指令,把累加器的內容和邏輯地址為2000H存儲單元的內容相加,運算結果送回累加器”。而動態的課件會先畫出一個模型計算機,然后演示該指令解釋的全過程:從CPU內存中取出指令、譯碼、數據尋址(從寄存器和內存中取得操作數)、啟動ALU運算、保存結果到累加器和影響狀態標志寄器。每一步都要圖示化出數據的變化和走向以及相應的控制時序。在聲音和顯示控制的程序設計教學中,更應展示多媒體教學的風采。多媒體教學豐富的動感效果能極大地增加學生對指令的感性認識,增強他們學習的興趣。當然,制作這樣的課件耗時耗力,學校應該切實加大對CAI教學的支持力度。
(3) 在匯編語言的教學中要加強和高級語言的比較教學。在學習匯編語言時,學生一般都具有了C語言程序設計的知識。在匯編語言程序設計的教學過程中,應該比較這兩種語言的編程特點、程序代碼空間、運行速度等,以加深學生對這兩種語言的理解。如在講授基址變址尋址方式中,可以用C語言和匯編語言分別實現對數組運算的實例來闡述。要加強高級語言(C語言)和匯編語言的混合編程的教學,充分闡述C語言結構化設計和匯編語言對機器低層(存儲器、寄存器、中斷處理、I/O)控制的優點。這樣即可充分調動學生的學習積極性,也可以培養學生解決具體應用的能力。
(4) 加強操作系統相關知識的滲透和虛擬模式下的編程教學。目前操作系統的核心部分是用匯編語言來實現的,如對CPU本身的初始化(包括定時器、中斷、I/0端口等的初始化);系統引導啟動程序的完成;在處理器的控制下從實模式進入保護模式,實現虛擬存儲器的管理和多任務的調度。將該部分引入到教學中是有必要的,能加強學生對操作系統中內核引導啟動與駐留、保護模式和實模式的切換、多任務的調度等知識的理解。在講授操作系統對程序的引導和進程的調用時,適當介紹計算機病毒的機理,以提高學生的學習興趣并擴展知識面。
(5) 要切實抓好實驗教學環節。課堂主體教學和一般作業很難讓學生真正領會本課程涵蓋的概念、原理、方法和技巧等。經驗表明,學習并真正掌握匯編語言程序設計的最好方式是充分實踐。實驗教學和課堂主體教學“兩手都要硬”,在課時分配上達到1:1。
4建立實驗教學平臺
傳統的匯編語言上機實驗一般是在DOS環境下的進行,如圖2所示。而DOS逐步被淘汰,目前流行使用Windows操作系統平臺,學生對DOS的使用相對陌生。盡管Windows保留了DOS的工作方式,可以切換到DOS提示符下操作,但是對建立文件夾(目錄)、進入文件夾(目錄)、刪除文件等操作,學生們常返回到Windows環境中來完成,顯然會影響上機的效率和增加編程的繁瑣,同時也不利于WIN32虛擬模式下的教學。
圖2 匯編語言程序開發的傳統操作過程
因此,必須建立基于Windows操作系統的W32匯編語言集成實驗環境,該環境是一個集編輯、編譯、連接、程序調試和幫助于一體的實驗平臺。筆者主持的課題組經過系統的調研、編程和測試已開發出一個匯編語言集成編譯系統,該系統已成功應用到本課程的實驗教學中,效果較好。系統的運行界面如圖3所示。
其次,要精心編寫實驗指導書和安排實驗內容,組織好課程設計。結合目前廣泛使用的PC機的Intel 80x86指令系統來開展教學,通過在集成環境下匯編語言的上機實訓,加深學生對指令系統和匯編語言程序設計的認識和理解。實驗的內容可以組織如下:
(1) 指令系統。用DEBUG調試工具來熟悉指令功能和尋址方式,掌握簡單程序的調試。通過實驗了解CPU的組成,熟悉8086/8088寄存器組、8086/8088存儲器組織、8086/8088標志位的意義。
(2) 匯編語言程序設計。包括順序程序設計、循環程序設計、分支程序設計、子程序設計和宏匯編程序設計等實驗。掌握各種程序結構的設計方法,了解宏匯編、條件匯編和模塊化程序設計等匯編語言程序的概念,掌握宏匯編程序設計的基本方法。
(3) 輸入輸出與中斷。包括輸入輸出程序設計、中斷處理程序編寫、常用系統中斷(如時鐘顯示、鍵盤和顯示器、使用鼠標的程序設計)控制等實驗。
(4) Win32匯編語言程序設計。包括32位微處理器與32位指令、保護模式下的32位匯編語言程序設計等實驗。
(5) 匯編語言與C/C++的混合編程。主要包括C/C++程序與匯編語言程序的連接、嵌入匯編與模塊調用等。
圖3 匯編語言集成開發環境
參考文獻
[1] 沈美明. IBM-PC匯編語言程序設計[M]. 北京:清華大學出版社,2001.
[2] KIP R. IRVINE. Assembly Language for the IBM-PC[M]. Prentic Hall INC,1993.
[3] 李學干. 計算機系統的體系機構[[M]. 北京:清華大學出版社,2006.
[4] 金海溶. 用實驗方法改革匯編語言的教學[J]. 計算機教育,2006,(1):36-37.
[5] 田慶. 匯編語言程序設計課程的教學探討[J]. 電器電子教學學報,2007,(2):14-15.
關鍵詞:匯編語言;課程特點;教學內容;教學方法
中圖分類號:TP313 文獻標識碼:A文章編號:1007-9599 (2010) 05-0000-01
Knowledge and Thinking on Teaching Content and Methods of Assembly Language
Shi Dongsheng
(Inner Mongolia University of Science and Technology Add,Baotou014010,China)
Abstract:Assembly Language and Programming Design is a compulsory basic course for computer majors. The thesis sets out to illustrate the characteristics of Assembly Language course and based on the narrations and in consideration to the practical teaching tasks, analysis has been carried out regarding the teaching contents of the course while countermeasures have been analyzed on the teaching methods regarding how to improve the quality of teaching and learning.
KeyWords:Assembly Language;Course Characteristics;Teaching Contents;Teaching Methods
匯編語言是計算機及電子信息類專業十分重要的基礎課程,是學好徽機原理、操作系統、編譯原理的知識準備。它能充分發揮和利用計算機硬件特性的語言,能夠完成高級語言難以勝任甚至無法完成的任務。筆者結合工作實踐,對該課程的教學內容和特點、及教學方法做以下探討。
一、匯編語言課程的特點[1]
匯編語言是計算機能提供給用戶的最快而又最有效的語言,同時能夠利用計算機所有硬件特性并能直接控制硬件。所以高級語言簡單、易學且開發效率高,而匯編語言復雜、難懂、開發效率低。對匯編語言的課程特點主要表現在以下兩個方面:
(一)匯編語言的優點
主要變現在以下兩個方面:第一,用匯編語言容易得到高時空效率的程序。由于匯編語言本質上就是機器語言,可直接、有效地控制計算機硬件,因而與高級語言相比,容易得到運行速度快、執行代碼短、占用內存空間少的高時空效的目標程序。
第二,用匯編語言能設計出高級語言無法實現的程序。正是由于與機器的密切相關性,使得匯編語言能充分利用計算機的硬件特性,編寫出與硬件緊密相關而高級語言又無法實現的程序來。
(二)匯編語言的缺點
主要表現在兩點:第一,匯編語言難學、難理解、難調試難維護等。第二,匯編語言程序可移植性差。
二、對匯編語言課程教學內容認識
筆者根據自身教學實踐,對匯編語言教學內容的安排與經驗總結為以下幾方面:
第一,對于十六進制的加減法運算、有符號數的補碼計算要充分了解學生基礎,在此基礎上進行復習鞏固。
第二,對處理器中寄存器的介紹,存儲器的組織結構,操作數有關的尋址方式這一版塊的內容,建議不要介紹與轉移地址有關的尋址方式,因為相關知識還比較少,學生很難理解。
第三,就傳送指令、算術運算指令和邏輯指令、系統功能調用簡介來說,應該重點介紹這些指令,而其他指令分散到后面章節中或者舍去。而且每種指令也是精選最基本、最重要的指令進行介紹,如傳送指令中只介紹mov、xchg、push、pop、lea、lds和les指令,力爭講過的內容精通,課堂沒有介紹的可以觸類旁通。
第四,偽指令用于輔助匯編語言程序設計,不作為重點,使學生可以理解匯編語言程序的格式即可,不引申不常用到的偽指令和不必要的細節。
第五,分支、循環和子程序設計版塊的內容,介紹用到的一些指令及程序設計方法,采用短小精悍的程序訓練學生,培養匯編程序設計的基本功能。
第六,輸入輸出程序設計、模塊化程序設計、混合編程等高級匯編語言技術內容,經過前面的學習學生已經具備扎實的匯編語言基礎知識,能夠進行程序設計,引出實用技術,可以采用基于問題的教學方法,培養學生的實踐能力。
三、提高匯編語言課程教學質量的對策思考
(一)教學手段的多樣化
匯編語言由于其基礎性,而又它不同其他基礎課一樣以實踐操作為主,體現著它的比較抽象性,理論性較強的特征。如在尋址方式和指令系統以及源程序結構都比較抽象、復雜、難于理解。為了使學生能夠較好的理解這些抽象的概念,在教學過程中針對這些內容可采用多樣化的教學手段,可以從如下兩方面入手:
第一,將抽象的理論形象化。計算機科學技術最大的特點是,它的最初愿望和最終目標都是模擬和實現人的思維過程,體現出計算機系統成為人的思維的延伸。因而它的許多理論與算法本質上是在人的思維基礎上獲得創建與發展。基于這一特點,我們教師就可以將課程中有關難于講解和難于理解的原理、算法,和人的思維方式和對事物的處理方法以及人與人之間的關系關聯起來,結合與學生密切相關的事列對原理與算法進行講解。
第二,要利用功能程序段使學生更好地掌握指令系統。微機的指令系統的指令多達上百條。進行機械地記憶會很枯操,學生往往難以掌握和運用。但程序設計又需要熟練掌握其中的部分指令。所以,為了使學生更好的掌握指令系統,可借助各種程序范例來理解相應的指令。這樣不但使學生能夠知道如何在程序中具體應用指令,而且對以后的程序設計也有幫助。
(二)強實臉教學與課堂教學相結合
計算機專業的兩個最基本教學目標是計算機科學和計算機文化。計算機科學主要是傳授學生計算機有關的專業知識,對計算機系統要進行深人了解,強調計算機的學術價值。這一方面主要表現在對理論及算法的學習和研究。而計算機文化,它的含義是利用計算機進行信息處理的能力、操作和程序設計的能力,它十分強調實踐,即上機操作。對于任何一門程序設計語言來說,上機實驗操作環節都是不可或缺重要環節。
(三)發揮現代教學媒介的優勢
按照任的認知規律,人的認知活動是人們對外界信息進行加工和篩選的過程。我們在教學過程中,如果把匯編語言的基礎知識以直觀形象、靈活多樣的形式展示給學生,促使學生短時間內準確理解。我們應充分利用以計算機為核心的現代信息技術,充分運用現代化的教學媒介,使教師脫離繁瑣的推理、論證、講解,使學生在適中的教學時間內理解、掌握和獲取更多的知識和信息,從而提高教學效質量。
四、結束語
教學質量是對教師勞動成果的一個重要評價指標,而課程特點又在很大程度上影響著學生的學習興趣與學習效果,因而對教學內容的優化與改革,對教學手段的不斷改進與豐富,保證教學目標的順利實現,需要我們教育工作者進行不斷的思考和探索。
參考文獻: