前言:中文期刊網精心挑選了匯編語言程序設計范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
匯編語言程序設計范文1
關鍵詞:匯編語言;雙語教學;機器指令;程序設計方法;實踐教學
目前,在信息技術等相關專業,雙語教學越來越受到有關專業教師的關注,這不僅是相關學科的教學改革與國際接軌的需要,也是現代高等教育發展的新趨勢[1]。我校匯編語言程序設計課程組教師在多年承擔該課程教學的基礎上,從2005級學生開始,在計算機、軟件工程、網絡工程專業使用國外原版教材,采用雙語教學模式講授匯編語言程序設計這門計算機專業核心課程。在實施過程中,課程組對于雙語教學的可行性論證、教材選擇、教學方法與手段以及實驗教學等環節,進行了有益的探索與實踐。
1雙語教學的可行性
匯編語言是面向機器的計算機底層語言,是軟件和硬件的連接紐帶。匯編語言程序存儲開銷小,運行效率高,它能夠精細地控制硬件資源,具有高級語言無法替代的功能。從計算機教學體系上來看,匯編語言是計算機專業學生知識結構所不可缺少的一部分,它為后期開設的接口技術、計算機組成原理、計算機系統結構、操作系統、編譯原理等課程,打下良好的基礎,對于學生今后向更深的計算機專業領域拓展,起到重要的奠基作用。
1) 教學內容及教學目標。
匯編語言程序設計課程主要包括以下主要內容:
① 計算機中數的表示、微處理器、寄存器及其功能、存儲器及存儲模式、輸入輸出設備;
② 匯編語言的尋址方式、基本指令及語言要素;
③ 分支與循環結構、子程序結構等程序設計方法;
④ 高級匯編技術如宏指令、條件匯編等;
⑤ DOS及BIOS功能調用。
通過這門課程的學習,學生應熟悉匯編語言指令結構、掌握匯編語言程序設計方法、能夠閱讀、分析匯編語言源程序并具有編寫、調試程序的基本能力。
2) 雙語教學的有利條件與難點。
鑒于匯編語言程序設計課程的目標是訓練學生利用機器指令編碼,而機器指令是由CPU的指令系統決定的,其編程語言是基于英文助記符的符號語言,所以,匯編語言的編程規范與課程的教學語言采用母語還是外語無關。換言之,即使是用中文授課,學生在完成編程作業時,編碼同樣要采用基于英文的匯編語言源語句,從這點上看,對于匯編語言采用雙語教學不僅不會增加學生的作業負擔(實際上幾乎對于所有的計算機程序語言都如此),甚至對于學生記憶和理解匯編語言指令還有一定的促進作用,這其實是一個有利之處。
但對于匯編語言程序設計課程采用雙語教學,也存在著不少難點。例如:
① 匯編語言是面向機器的語言,它不像面向用戶的高級語言那么接近自然語言,學習匯編語言要在了解硬件的基礎上,準確地使用機器指令對寄存器、內存單元、接口地址進行操作并編碼。這種“軟硬兼施”的前提要求,往往使初學者有畏難思想;
② 利用匯編語言編程時,為了完成基本的輸入輸出操作,須頻繁地將輸入數值字符ASCII(American Standard Code for Information Interchange)碼串轉換成機器內部的二進制數值,或者將機器內部的二進制數值轉換成ASCII字符串,然后通過編程進行DOS(Disk Operating System)功能調用或BIOS (Basic Input Output System)功能調用才能執行輸入輸出字符功能。初學者理解這種轉換的意義和熟悉其功能的編程大多有一個較長的適應過程;
③ 若采用原版英文教材,將使得學生在解讀文本時難度系數增加。
3) 雙語教學的可行性。
能否對匯編語言程序設計課程采用雙語教學?課程組教師分析了以上利弊,認為除了在原版教材的文本學習的語言載體上增加了難度之外,其他有關專業學習的技術難點在使用中文教材時同樣存在。以課程組教師多年承擔匯編語言程序設計課程的教學經驗,技術難點都能夠在教學過程中得到解決;而針對原版教材語言載體的難點,一方面由于普通高校本科二年級學生,其英語水平具備了一定的原版教材的閱讀基礎,另一方面,課程組也將在雙語教學的過程中,研究教學法并指導學生培養對原文資料的閱讀和學習能力。鑒此,課程組決定從我校計算機科學學院2005級學生開始,使用英文原版教材講授匯編語言程序設計課程,這是我們對于計算機專業必修課程采用雙語教學的首次嘗試。
2教材選擇
選擇一本優秀的教材,是保證教學質量的前提。自1992級到2004級學生,我們采用的教材是由清華大學出版的《IBM-PC匯編語言程序設計》,其作者為沈美明和溫冬嬋教授。這本書內容詳盡、案例豐富,習題全面[2],歷年來的教學效果證明它是一本非常優秀的教材。
我校計算機專業的匯編語言程序設計課程在第三學期開設,其理論課時為48 學時。為了高效率地講授課程內容,盡可能少地增加學生負擔,我們擬定了選擇英文原版教材的原則:內容精煉、重視例證教學、課后習題豐富。并且,考慮到個別英語基礎薄弱的學生需要有一個逐漸過渡的學習過程,教材最好有相應的中文譯本。
在參閱多本原文教材后,課程組重點討論了機械工業出版社2004年11月出版的原版教材《80x86 Assembly Language and Computer Architecture》,其作者為美國田納西州立大學Richard C. Detmer教授。此書的中文翻譯版教材也已由機械出版社于2006年1月出版?!?0x86 Assembly Language and Computer Architecture》一書為本門課程的雙語教學提供了如下有利條件:
1) 內容精煉、習題豐富。該書包括了匯編語言程序設計中有關編程語言、編程方法的主要知識點,它與清華版教材相比,不含外設接口編程的內容??紤]到我校計算機專業教學大綱中,在匯編語言程序設計之后開設了“接口技術”課程,所以,可將這部分內容安排在后期的“接口技術”中講授,同時也使得匯編語言程序設計課程的理論學時得以精簡。該書各章節均安排了豐富的習題和編程練習實踐題,有利于學生的學習和復習。
2) 實用的軟件環境。該書重點采用了例證教學,每一章節都包含實際案例。用于匯編語言程序進行匯編、鏈接、調試的軟件附帶在一張CD中,其中,調試軟件采用了先進的windbg平臺[3]。
特別值得指出的是:該書提供的軟件中有一個IO.H文件,這個文件中包括了有關的頭文件和6個輸入輸出功能的宏文件。程序員在編程時,只須在自己的源程序中包含IO.H文件,就可以調用宏功能方便地完成數值字符串的輸入或輸出,不需要程序員頻繁地作字符與ASCII代碼的相互轉換操作,大大降低了輸入輸出編程的復雜度。這樣,在學生初學編程時,能夠暫時回避繁瑣的輸入輸出底層操作,重點聚焦在掌握指令系統、程序結構等主要知識點上。由于軟件環境支持初學者方便地實現輸入輸出界面的編程功能,因此更容易給學生的編程帶來信心,使學生有興趣學習這門較為困難的計算機語言。當學生具備一定的編程基礎后,再分析IO.H文件中的宏指令,讓學生了解并掌握輸入輸出功能的底層實現。殊途同歸,最終仍然可使學生達到掌握底層I/O編程的教學目標。
綜上所述,課程組確定以《80x86 Assembly Language and Computer Architecture》作為匯編語言程序設計雙語教學的教材。
3課堂教學
為了保證教學質量,針對雙語特點對課堂教學采取了如下措施。
1) PPT課件。多媒體教學是提高教學效率、增強教學效果的得力手段。課程組教師根據雙語教學的特點,精心制作了匯編語言程序設計課程的全英文PPT課件。為了使學生強化記識相關專業術語,在介紹各章內容之前,PPT中列表并重點強調本章的專業術語,以利于學生閱讀本章節的內容。PPT課件各章節的框架結構如圖1所示。
2) 雙語比重權衡。為了既達到雙語教學效果又保證專業教學質量,課程組教師努力提高英語能力,任課教師均具備出國留學經歷,能夠勝任雙語教學要求,在課堂教學中全英文板書,且英語口頭表達占50%以上比重;另一方面,對于教學內容的重點難點以母語解釋,以便同時兼顧不同英語程度的學生,保證學生獲取專業知識[4]。此外,本門課程的課堂練習、課外作業、期末考試均采用全英文方式。從學生的接受程度和適應能力來看,以上比重的權衡是合理的。
4實踐教學
實踐教學是計算機課程教學中不可或缺的關鍵環節[5],對于雙語教學的課程更是如此。課程組教師在實踐教學方面予以高度重視,開展了如下工作。
1) 針對《80x86 Assembly Language and Computer
Architecture》一書的編程環境編寫了《上機實驗指導手冊》,其內容包括程序的匯編與鏈接過程、windbg調試工具軟件的使用方法以及各章的編程練習題和編程指導。
2) 在課堂上利用多媒體設備給學生演示匯編程序的編寫、匯編、鏈接、調試等步驟,并且鼓勵學生拷貝自己的BUG(問題)程序并顯示到投影儀上,在老師輔導下現場調試,直至成功運行。這種極為有效的案例教學模式,深受學生歡迎。
3) 精心安排、設計上機編程練習,使能力強的學生有難度較高的編程項目可作,編程基礎相對薄弱的學生,通過學習也能達到教學要求。
5教學效果
匯編語言程序設計課程的雙語教學已在我校計算機科學學院05-08級學生中實施。90%以上的學生們對這門課程的教學予以了高度評價,他們在調查問卷中這樣表示:
雙語教學對程序設計課程非常有益,原版教材為我們營造了用英語學習專業知識的氛圍。(ID:05061245)
使用原版教材,有不明白的地方不得不去查字典,自己寫的程序代碼也是英文的,就像整天泡在英語之中,無形之中,英語能力有了提高。老師上課時對于難點疑點,除了用英文表述外,也用母語詳解,取得了良好的教學效果。(ID:05061020)
通過“匯編語言”英文版的學習,自己英文水平和專業知識都提高了很多,尤其對原版教材的閱讀,知道了很多地道的表達方式,閱讀英文的速度也大幅上升。(ID:06061115)
我喜歡采用英語進行計算機課程的教學,它可以使我們在走出學校后更快更好地適應市場需求,有助于我們今后的就業。(ID:06061012)
專業課采用英語教學提高了我的英語水平,讓我切實感受到計算機專業的國際化要求,開拓了視野,同時也成為我努力提升自己,讓自己的知識更適應國際化發展趨勢的一個催化劑。(ID:06061116)
調查問卷中也反映出少部分英語水平較薄弱的學生,存在較多地借助中文翻譯版教材的現象,這是在雙語教學中應重點關注并予以改善的問題。
6結語
我校匯編語言程序設計課程組教師五年以來的雙語教學實踐表明,采用雙語模式進行計算機專業課程的教學是可行的,在專業知識的學習和接受方面,不僅不會弱化教學效果,而且在學生的英語應用能力方面起到了有益的促進作用?,F在,本門課程已被遴選為湖北省精品課程。課程組將更深入地研究教學法,進一步提高教學水平,為培養高素質的少數民族高新技術人才努力工作。
參考文獻:
[1] 丁學鈞,溫秀梅,劉建臣. 計算機專業雙語教學系統模式研究與實踐[J]. 計算機教育,2007(7):71-74.
[2] 沈美明,溫冬嬋. IBM-PC匯編語言程序設計[M]. 2版. 北京:清華大學出版社,2001.
[3] Richard C. Detmer. 80x86 Assembly Language and Computer Architecture[M]. 北京:機械工業出版社,2004:53-58.
[4] 秦奕青,佟俐鵑,趙剛. 計算機學科中的雙語教學實踐研究[J]. 現代教育技術,2007,17(11):105-107.
[5] 林福山.“匯編語言”教學過程探索[J]. 教育探索,2006(4): 89.
Study of Bilingual Teaching Based on Assembly Language Programming
TONG Xiaonian, LEI Jianyun, TANG Wan, XIONG Zhiyong
(College of Computer Science, South-Central University for Nationalities, Wuhan 430074, China)
匯編語言程序設計范文2
關鍵詞:浮點DSP;需浮點運算;TMS320VC33;匯編語言優化;匯編語言程序設計
中圖分類號:TN913文獻標識碼:A文章編號:1009-2374(2009)10-0139-02
TMS320VC33是TI公司推出的性價比很高的浮點DSP芯片,既適應于浮點運算,又適應于控制,同時還具有速度適中,功耗低,接口方便等優點。因此它被廣泛應用于通用DSP算法實現,遠程通信,語音處理,圖像和圖形處理,高速控制等領域。
由于TMS320VC33具有復雜的硬件結構,使用匯編語言開發軟件過程中,按照傳統的匯編語言編程方式編程會導致代碼效率比較低, 執行速度比較慢。為了充分發揮TMS320VC33的性能, 匯編語言程序設計的最優化成為產品開發人員的終極目標。作者以多年來從事TMS320VC33應用的產品軟硬件設計的經驗,總結了匯編語言程序設計的幾種優化方法。
一、TMS320VC33的硬件結構及軟件資源
(一)TMS320VC33的硬件結構
DSP的硬件結構特點決定了它在執行指令時的特殊性。因此對DSP硬件結構的了解是理解DSP編程優化的基礎。
TMS320VC33是32位的高性能數字信號處理器。其總線采用哈佛結構,允許數據在程序存儲器和數據存儲器之間傳輸。其內部包含了兩塊2K×32位和兩塊16KX32位的快速RAM塊。獨立的程序總線,數據總線和DMA總線使得取指、讀寫數據和DMA操作可以并行進行。64X32位的高速緩沖存儲器(以下簡稱Cache)用來存儲需要經常使用的語言塊,這可以大大減少片外訪問的次數,從而提高程序的運行速度。由于主總線的地址線是24位,因此TMS320VC33可以訪問多達16M的存儲器空間,程序、數據1/0空間都包含在TMS320VC33這個16M字的空間中。
TMS32OVC33提供28個寄存器,這些寄存器可以由乘法器和ALU操作,可以用作通用的寄存器。但是,他們也有一些特殊的功能,如八個擴展精度的寄存器(RO~R7),可當累加器使用,特別適合用于存放擴展精度的浮點結果。八個輔助寄存器(ARO~AR7)支持一系列的間接尋址方式,并且可以用作通用的32位的整數和邏輯寄存器。其它的寄存器提供一些系統功能,如尋址、堆棧管理、處理器狀態、中斷和塊重復等。
TMS320VC33的外設是通過存儲器映射的寄存器對外設總線進行控制,外設總線由32位數據總線和24位地址總線組成,允許與外設直接通信。TMS320VC33的外設包括兩個可支持8/16/32位數據交換的串行口和兩個32位定時器。
(二)TMS320VC33的軟件資源
TMS320VC33的匯編語言指令集特別適合于數字信號處理。所有指令占一個機器字長,大部分指令是單周期的。指令集可以分為以下幾類:數據裝載和存儲指令、兩操作數算術/邏輯類、三操作數算術/邏輯類、程序控制類、低功耗控制類、互鎖操作類及并行操作類。TMS32OVC33提供相當靈活的程序控制。軟件的程序控制包括重復、跳轉、調用、陷阱及返回等。流水線操作是TMS320VC33具有的高性能的特性之一,五個功能單元控制TMS320VC33的操作,取指、讀操作數、執行、和DMA。流水線操作就是一個基本指令的取指、譯碼、讀操作數和執行的并行操作。此外,TMS320VC33支持多種不同的尋址方式。特別是一些特殊的尋址方式更是為了數字信號處理而專門設計的。
二、匯編語言程序設計的優化方法
DSP的軟硬件資源為高性能提供了必要條件。在使用匯編語言編寫程序時,如何充分利用這些硬件資源及開發工具,對程序進行優化,使應用達到最優性能,是每個編程人員應關注的問題。下面是總結的幾種程序優化方法:
(一)利用延遲跳轉
跳轉分有條件和無條件跳轉,無論哪種方式都要執行4個指令周期。TMS320VC33提供的延遲跳轉指令可在一個周期內完成,而指令后的三條指令都照常執行,若少于三條指令,可加NOP指令。這樣可以節省機器時間。
(二)利用單指令重復或塊重復
在這種情況下,可實現無開銷循環。但要注意,在需要中斷的場合,要用塊重復指令,而不能用單循環指令。
(三)利用并行指令
TMS320VC33具有一系列并行指令,如乘加、存取、取存、二次取、二次存等,利用并行指令可增加在單個周期內執行的操作次數,但要比普通的指令多許多限制,如乘法指令,其目的寄存器只能為R0和R1,而加法指令,其目的寄存器只能為R2和R3。因而在高密度運算中,會出現寄存器擁擠現象,造成系統效率下降。當多條并行指令一起執行時,往往由于前面的結果在后續的寄存器中還要用到,因而必須保留,但后續指令就會因無空閑的目的寄存器而不能采用并行執行,在這種情況下,可以將寄存器內容暫存于片內存儲器中,然后在利用取數指令將暫存的數據從存儲器取回寄存器。另外應注意TMS320VC33不存在任何能與堆棧操作并行的指令,故不采用壓棧方法來保存寄存器數據。
(四)充分利用Cache
當TMS320VC33需要從外部存儲器的某一地址處取指令字時,首先檢查Cache中是否已經存放有該地址處的指令,所以可以將指令存儲在TMS320VC33提供的64X32位的Cache中,從而達到節省取指時間,加快程序運行的速度的目的。因此在編程時確保在程序初始化時Cache己使能。
(五)利用內部RAM
TMS32OVC33內部提供了34K的內部RAM,這些RAM的存取速度特別快。在單個指令周期內,可從內部RAM中取出兩個操作數。如果采用并行使用DMA和CPU來將數據傳送到內部RAM,則可使性能達到最佳。
(六)用比較快的尋址方式
使用比較快的尋址方式會大大減少指令周期。例如,如果數據是順序存放時則采用寄存器尋址方式,操作完后自加1而指向下一數據.可以減少很多指令周期。使用循環尋址可以大大方便實現數字濾波器中的卷積運算。
(七)避免流水沖突
流水線操作是TMS32OVC33實現高速運算的重要手段,如使用不當會引起程序執行時間的增加。TMS32OVC33 一條指令的執行包括取指、譯碼、讀、執行四個時鐘周期,由于上述四個步驟在不同的單元實現并行操作,從而實現單指令周期。當程序發生流水線沖突時,一條指令執行將占用四個時鐘周期,大大消弱了CPU 的數據吞吐能力。流水線沖突可歸為三類:分支沖突、寄存器沖突和存儲器沖突。分支沖突發生于標準分支BR、CALL、IDLE、RPTB、RPTS、RETI、RETS等指令以及中斷和復位。寄存器沖突包含了用于尋址目的寄存器的讀和寫,發生于相應的寄存器沒有準備好或已被使用,從而使CPU處于等待狀態。存儲器沖突最為常見。當兩個CPU數據訪問內部RAM塊,同時又要從同一塊取程序;或當一個外部端口啟動CPU數據訪問,同時必須從同一端口取程序時都會發生存儲器沖突。調試的方法是使用模擬器或者仿真器的跟蹤功能,查看程序執行時各個寄存器的變量的值的變化。
三、結語
TMS320VC33匯編語言的優化是一個資源充分利用、結構不斷趨于合理的過程。在此過程中,應最大程度地發揮TMS320VC33效能,最大限度地利用其資源。本文介紹的對TMS320VC33匯編語言編程的優化方法,使用后能夠有效降低在TMS320VC33上運行軟件的內存占用和系統開銷,在軟件開發中非常有實際意義。對TMS320C3x系列DSP同樣適用,可以為從事TI及其他公司各系列DSP芯片的開發和應用打下良好的基礎。
參考文獻
[1]黨瑞榮,謝雁,李利品,等. TMS320C3xDSP原理與應用[M].西安:陜西科學技術出版社,2006.
匯編語言程序設計范文3
摘要:“匯編語言程序設計”課程是計算機及相關專業的專業基礎課,多年來隨著計算機硬件和軟件的發展,匯編語言從DOS匯編、80X86匯編到Win32匯編經歷了較大的變化。在教學過程中如何準確的制定教學計劃、確定教學內容、較好地掌握教學方法是該課程在教學過程中的關鍵問題。本文根據作者長期的教學經驗和實踐過程對“匯編語言程序設計”課程的教學內容和實踐方法等方面進行了探討。
關鍵詞:匯編語言;教學內容;實踐方法
中圖分類號:G642
文獻標識碼:B
1引言
“匯編語言程序設計”課程是高等院校計算機及相關專業必修的一門課程,尤其是對計算機專業來說,它是一門靠近機器的語言課程,該語言在時間和空間上具有較高的執行效率,對于訓練學生加深對操縱硬件的方法的理解、掌握系統底層程序設計技術、程序調試技術以及程序的代碼分析都有著不可替代的作用。目前,大多數“匯編語言程序設計”的教學內容主要是在實模式下的16位/32位匯編指令和程序設計方法,然而,當前保護模式下的Win32匯編得到了廣泛的應用,因此,應當合理的調整教學內容,使本門課程更適應當前的應用環境。同時,案例教學是當前教學法研究的主要探討的問題,如何將復雜的教學內容案例化,是解決在教學過程中匯編語言復雜難學問題的關鍵。
2匯編語言教學內容的分析
2.1匯編語言的應用情況
匯編語言是與機器語言一一對應的語言,因此,是培養學生了解和直接使用計算機硬件資源的語言,多年來匯編語言一直是學習和理解其他高級語言的基礎,在教學過程中也是計算機組成原理、微機原理與接口技術、操作系統、接口與通信技術和計算機控制技術等課程的前導課程,在計算機與相關學科課程設置中起著承上啟下的作用。
在實際應用中匯編語言也是有廣泛的應用需求,例如:與硬件有關的嵌入式系統的底層設計、操作系統的核心部分設計、實時控制系統的軟件設計、接口電路的初始化程序,外部設備的底層驅動程序以及復雜算法的優化等,匯編語言具有執行速度快占用內存空間小的特點。值得說明的是匯編語言可移植性差,不同的應用環境采用的匯編語言也不同,但基本原理是相同的,匯編語法規則和指令格式基本相同,因此,目前大部分高校在匯編語言程序設計課程的內容設置上仍以80X86的實模式為教學的主要內容。
隨著計算機技術的發展,微機的操作系統由在DOS系統變為Windows系統,在Windows系統下的匯編有較大的變化,Win32匯編的應用領域也非常廣泛,例如:在Windows下的系統分析、代碼優化、系統漏洞和病毒分析等,通過逆向工程技術可以還原大型軟件系統底層邏輯以及頂層架構,通過反匯編的代碼可以加深對Windows底層理解,對高級語言的系統調試通過反匯編解決底層bug的能力,匯編語言仍然是不可替代的。因此,為了能夠適應當前計算機應用環境,匯編語言程序設計的教學內容有必然要引入Win32匯編。
2.280X86的三種工作模式
Windows操作系統是一個多任務的操作系統,可以同時處理多個程序。該系統微處理器有3種工作模式:實模式、保護模式和虛擬86模式,目前匯編語言程序設計課程主要介紹在實模式下的匯編程序設計,32位指令也是在實模式下,因此在實模式下的80X86處理器就相當于一個快速的8086處理器。保護模式是80386以上處理器的主要工作模式。在此方式下,可以尋址4GB的地址空間,同時,保護模式提供了先進的多任務、內存分頁管理和優先級保護等機制。虛擬86模式可以在保護模式的多任務條件下進行16位與32位任務的切換,支持內存分頁管理和優先級,內存的尋址方式和8086相同,可以尋址1 MB的空間。由此可知這三種工作模式具有一定的聯系。
三種工作模式的存儲結構存在較大差異,實模式是80386以上處理器工作的基礎,真正能發揮Win32作用的是保護模式,保護模式是當前個人計算機的主要工作模式,因此,匯編語言程序設計課程的內容應在原來的實模式下的匯編增加保護模式的Win32匯編,但是Win32匯編結構具有一定的難度,可以根據學生的掌握情況適當增減其內容。
3實模式32位匯編與保護模式的Win32匯編的主要區別
3.1程序架構的區別
實模式匯編程序是將程序分成若干個段,如:數據段、代碼段、堆棧段、附加段等段的內存模式,每個段的最大存儲空間為64K,段與段之間可以重疊、部分重疊、鄰接和分離。Win32程序是運行在保護模式下的,Windows操作系統把每一個Win32應用程序放到分開的虛擬地址空間中去運行,Win32程序只有一種內存模式,即FLAT模式,沒有64K的段大小限制,所有的Win32的應用程序運行在一個連續、平坦的4GB空間中。由于Win32的匯編程序不用和段寄存器打交道,可以用任意的段寄存器尋址任意的地址空間,因此,保護模式的Win32匯編比實模式32位匯編在程序架構上更簡捷方便。
3.2輸入/輸出的方法
在實模式匯編程序是通過BIOS和DOS中斷完成輸入/輸出操作的,而保護模式的Win32匯編的輸入/輸出操作是調用Windows的API函數,一般要包括三個關鍵的動態連接庫:Kernel32.dll(系統服務功能)、Gdi32.dll(圖形設備接口)、User32.dll(用戶接口服務),從而提供了Win32 API 的核心技術。這樣使得程序員可以像使用高級語言調用庫函數一樣方便的使用API函數,完成很多功能。但是,雖然 Windows提供了大量的API函數,需要使用者深入的了解和掌握消息、句柄、窗口和API函數的使用方法,這部分內容實際上是“Windows程序設計”課程的主要內容,如果“Windows程序設計”課程安排在“匯編語言程序設計”課程之前,那么,保護模式的Win32匯編將更容易理解。
4匯編語言案例教學方法的思路
案例教學法是教師利用與教學內容密切相關的實際案例來解決教學中的存在的問題。通過對匯編語言程序設計課程的分析,本門課程主要存在的問題是:授課學時少教學內容多,教學內容復雜,尤其是增加了Win32匯編,因此,教學方法的改革是非常必要的。
4.1課堂教學內容和方法的改革
課程內容的設置主要完成如下部分,基礎部分:微型計算機的CPU結構,存儲器的組織方式,80X86的三種工作模式;80X86的尋址方式;以16位指令為基礎,結合80386以上的32位指令,指令的重點在常用指令(包括32位指令),應徹底改變面面俱到的大量指令的堆砌。程序設計部分:該部分應該側重于匯編程序的特點,切忌用高級語言的思路講匯編語言,要注意突出匯編語言的是底層語言的特點。輸入輸出部分:應包括3部分,DOS、BIOS和Win32的接口程序的應用,匯編的底層概念主要體現在輸入輸出中斷服務程序的設計和調用,雖然微機目前是Windows操作系統,DOS、BIOS的調用仍然有重要的意義和應用價值,如果只介紹Win32的接口程序,就失去了匯編語言的底層的意義。應用部分:主要是C/C++與匯編語言的混合編程和Win32匯編的程序設計,該部分內容應考慮實際應用的案例使學生充分體會匯編的魅力。
4.2實踐環節的建設
將最新的技術體現在實踐教學中,在教學過程中注重實踐能力和創新能力的培養,需要我們重視對實驗實踐環節的建設。
在實踐教學過程中我們編寫了具有一定應用價值的實驗案例指導書,任課教師將科研成果移植到教學實驗中,實驗案例包括:語法案例、經典案例和綜合案例等。將教學內容通過實驗案例在課堂上和實驗中講給學生,將復雜的教學內容實例化,讓學生真切的體會到匯編的實用價值。在實驗過程中采用Win32的編譯系統:RadASM + MASM32,調試工具為Code View,該系統使用調試方便,為后續的繼續學習和使用打下基礎。
5結束語
匯編語言程序設計課程是計算機及相關專業基礎課程,匯編語言具有的應用價值是高級語言不可相比的,在教學過程中教學內容的合理安排、案例的設計、實驗方法與實驗工具的確定是課程改革的關鍵,案例教學模式是提高學生對課程的理解能力、動手能力和創新能力最好的教學模式。
參考文獻:
[l] 李未. 提高教育質量,培養創新人才[J]. 計算機教育,2008(1).
[2] 馬力妮.80X86匯編語言程序設計[M]. 北京:機械工業出版社,2004.
[3] 趙樹升,楊建軍.DOS/Windows匯編語言程序設計教程[M]. 北京:清華大學出版社,2005.
[4] 嚴義,包健,周尉. Win32匯編語言程序設計教程[M]. 北京:機械工業出版社,2007.
匯編語言程序設計范文4
關鍵詞:匯編語言;實驗教學;模仿法;演示法
中圖分類號:G642 文獻標識碼:B
1引言
匯編語言是所有程序設計語言中最原始的語言,它與機器語言最為接近,簡言之,匯編語言是符號化的機器語言,通過匯編語言可以直接訪問計算機的硬件,如果要深入了解計算機的工作原理和底層細節,就必須學習匯編語言。著名的計算機科學家Donald Knuth堅持推崇匯編語言,并且曾經說過“我堅持認為除非你了解了各種底層細節,否則根本不可能為態度認真的程序員寫書?!雹賲R編語言的地位是任何高級語言都無法取代的。因此,匯編語言程序設計成為計算機專業的必修課程。
然而匯編語言程序設計課程的教學普遍存在諸多問題,已經引起了廣大教師的研究與關注,如考文獻中的[1][2][3][4][5]等。就目前看來,匯編語言教學大多不能體現“以學生為本”的教學理念,主要表現在對實驗教學的重視程度不夠。匯編語言程序設計是實踐性很強的一門課程,學生只有在程序設計的實踐中才能真正掌握。所以我們認為匯編語言教學應該“老師少講課、學生多動手”,也就是要充分重視實驗環節,讓學生唱主角,改變傳統的以課堂講授為主的教學模式。
為此,本文進行匯編語言實驗教學的研究與探索。下面分別從實驗安排、教學方法和考核方式三個方面介紹作者在多年的匯編語言實驗教學中的體會。
2精心安排實驗
2.1學時安排
目前國內高校的匯編語言程序設計課程大多是基于Intel 8086/8088微處理器的②,總學時一般在60學時左右,實驗課學時一般占總學時的1/4到1/3。我們認為60個總學時是比較合理的,但是實驗課學時遠遠不夠。事實上,對于任何一種程序設計語言來說,不需要教師講解太多的內容,關鍵是讓學生多動手。我們認為匯編語言的理論課學時和實驗課學時各占總學時的1/2是比較合理的。
2.2實驗內容安排
匯編語言的實驗課內容應該包括但不限于:
(1) 調試工具DEBUG的使用:匯編語言程序的調試要比高級語言程序的調試困難得多,熟練使用DEBUG是匯編語言程序設計的基本技能。
(2) 匯編語言程序設計的上機過程:匯編語言程序的編輯、匯編、連接、運行和調試是匯編語言實驗的必備知識。此外,學生還應當懂得在此過程中所產生的各種文件(.obj、.lst、.crf和.exe等)的用途。
(3) 基本程序結構設計:任何復雜的程序都是由三種基本結構(順序結構、分支結構和循環結構)組成的,因此,基本程序結構設計訓練是編寫復雜程序的基礎,是匯編語言實驗不可缺少的內容。
(4) 子程序設計:所謂子程序,相當于C語言中的函數。子程序是結構化程序的基本組成,子程序設計是開發大型程序的基礎,對于培養編程能力十分重要。
(5) 中斷調用:操作系統和BIOS(Basic Input Output System)以中斷調用的方式為程序員提供了一組功能強大的程序庫,屏蔽了復雜的硬件細節,從而極大程度地減輕了程序員的負擔。而且,不理解中斷系統就不能理解計算機的工作原理。因而學習中斷調用是匯編語言實驗課的必要內容。
此外,中斷服務程序的編寫和匯編語言程序與高級語言程序的連接等內容也應該讓學生有所了解;在實驗學時允許的前提下,也可以安排一個綜合性實驗。
3選擇合適的教學方法
對于實驗課,只布置任務、讓學生自己做實驗的方法并不可取,因為其結果往往是只有少數學生能夠達到實驗要求,而大多數的學生收獲很小,甚至有的把實驗課用來玩游戲了。所以,實驗課應該有專門的任課教師。當然,從培養學生的創新能力的角度講,應該盡可能地讓學生獨立完成任務,但是創新能力的培養有賴于足夠的基礎知識和基本技能。我們認為匯編語言實驗課應該以基礎知識和基本技能的學習為主,適當地關注創新能力的培養,在照顧到大多數學生的前提下,給創新能力強的學生提供獨立發展的空間。要做好這一點,我們認為有兩種十分有效的教學方法:演示法和模仿法。
3.1演示法
在實驗課上,我們經常發現有許多學生向老師問同一個問題,如果一一解答,不但使任課教師十分疲憊,而且嚴重浪費了資源和時間。對于這些共性的問題,可以通過投影儀向學生演示解決問題的辦法,所以在實驗室中安裝投影儀將為實驗教學帶來極大的方便,目前大多數高校具備這樣的硬件條件。特別是對于調試工具DEBUG的使用和匯編語言程序設計的上機過程的學習尤為有效。初學者對于程序的編輯、匯編、連接、改錯和調試過程往往不知所措,如果老師從頭到尾演示整個過程、讓學生一步一步地跟著操作,就能極大地提高學習效率。一次簡單的演示往往要勝過千言萬語的解釋。
3.2模仿法
程序設計對于大多數的初學者來說有一定的難度。對于給定的一個實驗題目,許多學生往往感到無從下手。事實上,老師可以把一些經典的程序提供給學生,例如怎樣實現分支結構、怎樣實現循環結構、怎樣使用系統調用、怎樣編寫子程序、怎樣編寫中斷處理程序等,讓學生在讀懂之后模仿著編程。模仿的程序多了,編程也就熟練了。通過一段時間的經驗積累,就能夠編寫比較復雜的和具有創造性的程序,正所謂“熟能生巧”。我們在教學中發現這種模仿的方法十分有效。當然要特別注意的是,不能把模仿變成抄襲。
3.3對比法
一般說來,在學習匯編語言之前都要學習C語言。匯編語言與C語言的學習是相輔相成的。老師應該通過對比的方法向學生指出匯編語言與C語言之間的千絲萬縷的聯系。例如,一塊數據區的開始地址為BASE,要尋找的操作數相對于開始地址的偏移量為SI,我們發現幾乎所有的學生會把這個操作數寫成[BASE+SI],而不會寫成BASE[SI],因為第一種寫法更直觀,而第二種寫法令人費解。然而,如果教學生把BASE看成C語言里的數組、把SI看成下標,那么學生就會恍然大悟了。通過對比教學法,能夠使學生更深入地理解高級語言中的數據類型、變量、函數、數組、指針等概念的理解,同時也必將大大促進匯編語言的學習。
4改革考核方式
因為“匯編語言程序設計”是實踐性很強的一門課程,所以實驗課成績應該在總成績中占有相當大的比重。我們認為以閉卷考試成績為主要依據的考核方式是不合適的,甚至可以取消考試、以實驗課成績為主,如果要考,也應該是開卷的。然而由于許多現實困難,目前大多數高校的匯編語言課程的實驗課成績只占很小的比重,這也是學生不重視實驗課的重要原因之一。提高實驗課成績所占比重的主要困難在于學生多、抄襲成風、老師負擔重、實驗條件有限、考核的主觀性太強等。盡管面臨諸多困難,我們認為實驗課成績應該占到總成績的1/2。老師可以根據學生的實驗表現按五級分制(優、良、中、及格、不及格)或二級分制(通過、不通過)考核。為了減輕教師的負擔,可以只針對一個綜合性實驗(而不是所有的實驗)加以考核。
5結束語
本文根據作者多年的教學體會,對匯編語言實驗教學進行了深入的思考。從“以學生為本”的教學理念出發,根據匯編語言程序設計課程所具有的實踐性強的特點,提出“老師少講課、學生多動手”的教學模式,主張提高實驗課學時和實驗課成績的比重,重視實驗教學,并從實驗內容、教學方法和考核方式三個方面介紹了作者的想法。然而由于學生過多、資源有限、我國高等教育長期投入不足和體制缺陷等許多現實困難,匯編語言實驗教學的改革依然任重道遠。
參考文獻:
[1] 張全福. 匯編語言程序設計實驗教學改革與探索[J]. 教學研究,2005,28(6):545-546.
[2] 周代英,楊曉霞. 匯編語言課程教學方法改革探索[J]. 中國科教創新導刊,2008(6):55-56.
[3] 吳媛,茹慶云,楊富超. 匯編語言程序設計的教學研究[J]. 中國科技信息,2005(14):215.
匯編語言程序設計范文5
1 課程的地位與現狀
“匯編程序設計”是計算機及相關專業的專業基礎必修課,學生通過本課程的學習,首先,可以更加深入的理解計算機硬件系統的組成結構和原理,可以更好的理解寄存器,中斷,尋址方式等概念;其次,可以促進對高級編程語言相關概念的理解,高級語言在編譯時通常會先生成匯編語言代碼,然后再轉換為最終的機器碼,學習匯編語言程序設計可以充分理解程序的編譯執行過程,同時學生對于堆棧的使用、子程序調用等過程會更清晰;利用匯編語言還可以設計出效率極高的核心底層程序,如設備驅動程序,匯編語言程序能夠直接有效地利用機器硬件資源,因此用匯編語言編寫的程序一般比用高級語言編寫的程序執行的快,且所占內存較少,在一些實時控制系統中,這點更不可缺少和替代[1]。因此本課程一直是計算機專業的核心課程之一,在整個計算機專業課教學中起著承上啟下的作用,為后續課程的學習打下重要的基礎。而目前以ARM為核心的嵌入式技術逐漸成為各個高校教學的主流,基于ARM架構的匯編語言程序設計是學習嵌入式技術的基礎。
但是在實際教學過程中,往往教學效果并不好,學生學習的積極性不高。筆者認為主要包括以下一些問題:(1)指令多而且復雜,難以記憶;(2)課程的內容比較抽象,與高級語言程序設計有較大的差別;(3)課程內容滯后于當前計算機技術的發展;(4)課程內容連貫性強,如果有一部分內容掌握不好就會造成知識脫節;(5)實踐教學環節薄弱。對“ARM匯編語言程序設計”課程教學進行改革,從而提高課程的教學質量,達到預期的教學效果是我們急需解決的問題。筆者經過教改探索,認為應從以下幾點進行改革。
2 合理安排教學內容
在“ARM匯編語言程序設計”課程中主要包括三個部分,第一部分主要介紹匯編語言程序設計的基礎知識和ARM系列微處理器,第二部分是ARM指令系統,第三部分是ARM匯編語言程序設計。目前授課時都是先講完所有的指令(包括數據處理指令,Load/Store指令,分支指令,程序狀態寄存器指令,協處理器指令和軟件中斷指令)以及偽指令后,再開始講授如何編寫匯編程序。學生需要記憶大量的指令、偽指令的格式和功能,卻不知如何用來編寫程序,導致無法理解消化所學內容,容易感到枯燥,學習興趣不高[2]。
筆者認為可以將課程內容進行調整。比如講完數據傳送指令、運算類指令之后就可以講一些順序程序設計的實例并讓學生完成一些簡單的題目,在實際做題過程中更好的學習指令的功能和用法。同樣在講述指令的條件執行時與分支和循環程序設計結合起來,講述分支指令BL時與子程序設計結合起來,將編程環節提前,通過實際的例子讓學生建立起感性認識,對指令的掌握會更好,在此過程中學生會建立成就感,學習興趣也自然產生了。
另一方面,“ARM匯編語言程序設計”課程與其它一些專業課程密切相關,在安排教學內容時要盡量注意課程之間的銜接與融合?!癆RM匯編語言程序設計”與“嵌入式系統接口原理與應用”,“嵌入式軟件設計與應用”等課程都密切相關,是學習嵌入式系統設計不可缺少的一部分。還有一部分同學認為匯編語言已經“過時”了,在今后的工作中不會用到,教師講授時可以通過一個嵌入式系統應用的實例說明匯編語言程序設計在系統引導程序,接口驅動程序中的重要作用,以及具有高級語言無法比擬的優勢。
3 采用比較教學法
所謂比較教學法是指將陌生的東西與熟悉的東西做比較,找出相同和不同的地方,然后進行差異化學習[3]。比如可以將ARM指令系統與我們熟悉的x86指令類比,來提速學生的理解記憶過程。ARM指令與x86指令編程操作有明顯的共性,甚至很多指令助記符都是相同的。如MOV,ADD,SUB等,學生很容易接受。所以要特別突出ARM指令體系的不同之處,比如:ARM絕大部分指令可以根據狀態寄存器的狀態決定是否執行;ARM指令集中設置專門的Load/Store指令用于存儲器的訪問;ARM不設專門的移位指令,各指令中均直接可進行移位操作等等,而這些不同之處更突出體現了ARM處理器的RISC特性,所以學生很容易記憶。同樣在硬件上也可以做類比,比如ARM與x86處理器的中斷處理過程的區別。
還可以將匯編語言與學生比較熟悉的高級語言做類比。匯編語言也好,高級語言也好,都只不過是程序設計的工具,因此對于程序的基本功能和程序設計的基本問題都有相通的實現機制,特別是在程序設計的基本思想上。但是匯編語言和高級語言畢竟是不同級別的語言類別,高級語言語句功能更強,編程時更靈活方便,而且即便是同樣的問題,如數據安排、數據處理、程序流程控制、子程序調用等,實現起來也有不同的方法。比如高級語言子程序調用時需要同時提供參數,一般格式是:函數名(參數);而在匯編語言中,子程序在定義時不需要有關參數的說明,在調用時也無需同時提供參數,子程序的調用格式為:BL子程序名。也就是說,高級語言中函數的參數傳遞是顯式進行的,而匯編語言中的參數傳遞是隱式的。在匯編語言中參數傳遞可以利用寄存器實現,也可以利用存儲單元實現,還可以用堆棧實現。在實際應用中通常綜合以上方法來達到最佳效果。
4 采用多媒體與板書相結合的教學手段
充分采用多媒體的手段來授課是必要的,在匯編語言的教學中,大量采用多媒體課件,對于一些抽象難懂的知識,借助于圖表、動畫等進行講解,可以給學生一個感性、直觀的認識,使大家集中注意力,加深對內容的理解。比如在講解尋址方式時,通過工作流程動畫的演示,學生很容易理解各種尋址方式的不同之處。但是教師并不能完全依賴于多媒體手段,如果把所講的程序直接做到課件中,講解時會出現朗讀課件的情況,與學生的交互不足,影響授課效果。因此最好將多媒體與板書相結合,在多媒體課件中展示程序的流程圖,而將程序以板書形式展現給學生,寫板書時可以與學生充分交流,讓他們有足夠的時間來理解編程的思路和過程,同時也大大活躍了課堂氣氛。
5 實驗教學注重實用性
匯編語言是一門實踐性很強的語言,實驗環節在整個教學活動中占據了舉足輕重的地位,是提高學生動手能力的重要環節。因此,教師一方面要耐心講解讓學生熟悉匯編語言從匯編、鏈接到調試執行的整個過程,另一方面要讓學生多進行上機實踐。還可以要求學生將一些c語言的程序段的功能通過匯編語言實現。通過集成開發環境的幫助,學生可以更好的掌握兩種語言編程的異同點,達到更好的學習效果。對于一些復雜的題目,可以讓學生課外分組來進行設計,題目的類型可以是研討型的讓學生從更多的角度去思考編寫程序。
匯編語言程序設計范文6
“微機原理與接口技術”是電子電氣信息類專業中一門非常重要的專業基礎課程,其內容包括微處理器基本結構與工作原理、匯編語言指令系統、常用接口芯片的基本原理與編程方式、通過系統總線與外設接口進行連接的基本方法等,具備軟件與硬件緊密結合的顯著特點。該課程幫助學生從根本上認識和理解計算機的底層工作原理[1],培養學生綜合運用模擬電子技術、數字電子技術和匯編語言、C語言等相關知識,理解接口電路工作原理,設計接口電路及對接口電路進行初始化編程的能力。其中,匯編語言的編程能力對學生理解硬件工作原理及對接口芯片進行初始化編程具有非常重要的意義。筆者在實驗教學中利用Debug[2-3]調試程序引導學生對匯編語言程序的執行過程進行詳細跟蹤分析,幫助學生理解計算機底層[4]工作的實質,取得了顯著的效果。
1 主要命令簡介
2.1 排序前內存中數據的存儲情況
閱讀此段程序可知,子程序disp用以顯示字符串“Hello World!”,將disp子程序定義為中斷處理子程序,分配的中斷類型號為67H,利用指令“int 67h”實現中斷調用顯示字符串。子程序init_int將67H號中斷原來的中斷向量從中斷向量表中取出來加以保存,將disp子程序的入口地址填寫至中斷向量表中把原來的中斷向量替換掉。子程序restore_int用以恢復原來的中斷向量。對程序調試過程如下。
4.1 查找原中斷向量和數據段的值
5 結束語
利用Debug調試程序的主要命令,結合實例闡述了匯編程序執行過程的跟蹤方法,展示了Debug調試程序強大的功能。在教學中,要充分利用Debug調試程序的幾個主要命令,對課程內容做層次化設計[8],引導學生對匯編語言程序的執行過程加以詳細跟蹤和比較分析,從而深入理解計算機底層工作的實質,這種方法不僅適用于“微機原理與接口技術”課程,對于其他微處理器和高級語言的學習都是有價值的。
參考文獻:
[1] 曹玉波.Debug軟件在微機原理課程教學中的應用與實踐[J].吉林化工學院學報,2010.27(5):21-24
[2] 龍祖強,梁昔明,楊利容.匯編語言程序調試工具DEBUG淺析[J].衡陽師范學院學報,2008.29(6):33-35
[3] 董潔.淺談DEBUG程序的主要命令用法[J].赤峰學院學報,2007.23(5):61-62
[4] 孫丹嶺,蔣方炎.匯編語言和微機接口技術實驗教學探討[J].計算機教育,2011.17:43-45
[5] 錢曉捷.匯編語言程序設計[M].電子工業出版社,2000.
[6] 羅萬鈞.田立炎,馮子綱,馮世蔚.匯編語言程序設計[M].西安電子科技大學出版社,1998.