




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
匯編語言程序設計課程的教學設計
“語言編程”是一項重要的計算課程。目前,中國大多數高校都有相關課程。從時間上看,“匯編語言程序設計”一般開設在大學二年級,從課程的銜接上看,則一般開設在“高級語言程序設計”和“計算機組成原理”之后。匯編語言也好,高級語言也好,它們都只不過是程序設計的工具,因此對于程序的基本功能和程序設計的基本問題,它們都有相應的實現機制,而且在很多方面都是相通的,尤其是在程序設計的基本思想方法上。但匯編語言和高級語言畢竟是兩種不同的語言類別。從源程序的基本單位——語句的層面看,高級語言語句的功能遠比匯編語言語句即各種指令和偽指令的功能要強大。此外即便是同樣的問題,如數據安排、數據處理、流程控制、子程序結構等,它們的實現機制也不一樣。效率最高的教學方法首推比較教學法(或叫類比教學法),也就是將新的陌生的東西和舊的熟悉的東西做比較,找出它們之間相同的地方和不同的地方,然后進行差異化的學習,重在存同求異,這樣就會事半功倍。因此,筆者在多年從事“匯編語言程序設計”的教學中,特別注重以學生在學習高級語言程序設計課程時所獲得的知識和體驗為基礎,將匯編語言和高級語言進行比較教學。本文就是這一教學方法的經驗總結。1匯編語言中的數據空間程序是用來加工處理數據的,因此程序設計工作離不開數據的組織安排。數據的組織安排就是指為程序加工處理的數據安排合適的空間并且組織好,以提高對數據加工處理的效率。從應用層面看,數據的組織安排通常包括3個方面:(1)安排在哪?即空間位置問題。(2)安排多大空間?即數據長度問題。(3)存放什么樣的數據?即數據類型問題。在數據空間的組織安排方面,匯編語言和高級語言的一個重要差別是:高級語言提供的是直接面向應用的數據類型,如C語言中的基本類型——整型(int)、浮點型(float)、字符型(char),而整型又有長(long)、短(short)之分,浮點型又有單精度(single)和雙精度(double)之分,此外還有有符號(signed)和無符號(unsigned)之分等。高級語言的數據類型是面向應用的,因此它們有兩方面的含義:類型特點和長度大小,這就解決了上述3個問題中的后兩個問題。在C語言中,數據除了有類型這個概念之外,還有類別之分,即存儲類別問題,共有4種:static、auto、register和extern。從嚴格意義上講,其中和數據空間的組織安排有關的只是前3種:static和auto對應的是內存空間,而register對應的則是寄存器空間,這又解決了上述3個問題中的第一個問題。與高級語言不同的是,匯編語言的數據類型是面向機器的,如MASM中的基本類型——DB、DW、DD、DQ、DT等,它們只有長度大小的含義,而且都是對應內存空間的,因此用它們定義的變量都屬于內存變量。在匯編語言中,由于可以直接引用各個寄存器,而且各個寄存器的空間大小都是確定的,因此這些寄存器實際上就相當于C語言中的寄存器變量。總之,在匯編語言中,數據一般只有空間大小和位置之分,而不管這個空間中存放什么樣的數據,即無類型之分。因此,在用匯編語言設計程序時,對程序中的數據有一個面向應用的自我理解問題!這是在教學時應特別予以關注的!2面向系統的輸出機制在數據的輸入輸出方面,匯編語言和高級語言也有重要差別。以面向標準輸入輸出設備的數據輸入輸出為例,高級語言提供的也是直接面向應用的相關語句、函數和過程,如C語言中的fprintf、printf、sprintf、vprintf、vfprintf、vsprintf、fscanf、scanf、sscanf、fgetc、fputc、getc、putc、getchar、putchar、fgets、fputs、pus、gets等,這些函數基本上滿足了面向應用的各種類型數據的輸入輸出。匯編語言提供的則基本上是面向字符的中斷調用,即通過調用相關的中斷服務程序來實現數據的輸入輸出,如MASM中的常用的DOS提供的21H類中斷服務程序的1、2、8、9、10號功能等。總之,高級語言提供的一般是直接面向應用的輸入輸出機制,而匯編語言提供的則一般是面向系統的輸入輸出機制。因此在匯編語言程序設計的教學中,如何利用面向系統的輸入輸出機制通過編程實現面向應用的輸入輸出功能是我們的又一個重點。在數據的內部加工處理方面,高級語言和匯編語言都提供一序列的運算符。在C語言中,這些運算符包括為數據傳送提供的賦值運算符“=”和為數據運算提供的算術運算符“+、-、*、/、%、++、--”、關系運算符“>、>=、<、<=、==、!=”、邏輯運算符“&&、||、!”和位運算符“&、|、~、<<、>>”以及各種混合運算符等。在MASM中,這些運算符包括算術運算符:“+、-、*、/、MOD”,邏輯運算符:“AND、OR、NOT、XOR”,關系運算符:“EQ、NE、LT、GT、LE、GE”,移位運算符:SHR和SHL等。值得注意的是,除了形式上的差別外,高級語言的運算符和匯編語言的運算符在功能上也是有差別的:高級語言的運算符往往可以用在包括常量和變量的各種數據之間,而匯編語言的運算符則往往只能用在常量之間,對變量的加工處理則是依靠相應的指令來實現的。3匯編語言的二分支機構為了實現流程控制,高級語言都提供有兩類基本語句:分支控制語句和循環控制語句,如C語言和PASCAL語言中的if語句、switch語句、for語句、while語句、do-while語句、case語句、repeat語句以及比較特別的goto語句等。匯編語言則提供有相應的流程控制類指令,如MASM中的無條件轉移指令(JMP)、條件轉移指令(JA、JB、JAE、JBE、JNZ、JZ、JG、JL、JGE、JLE、JO、JNO、JS、JNS、JC、JNC等)、循環控制指令(LOOP、LOOPZ、LOOPNZ)等。在功能上,匯編語言的轉移類指令既可以用于分支控制,也可以用于循環控制,而循環類指令則自然主要用于循環控制。它們的實現機制在高級語言中也有體現,如C語言中的goto語句。從功能上看,C語言中的goto語句主要有兩種用法:(1)goto標號;(2)if條件goto標號。前一種用法實現的正好是匯編語言中無條件轉移指令的功能,而后一種用法實現的則正好是匯編語言中條件轉移指令和循環控制指令的功能。在用匯編語言寫分支控制程序時尤其要注意的是,由于只能一個分支一個分支的縱向展開,因此除最后書寫的分支外,前面的分支結尾處一般都應該有一條無條件轉移指令以跳過后面的分支,避免執行不該執行的分支。例如:輸入一個字符,判斷其是否為數字‘9’,若是,則輸出字符‘Y’;否則,輸出字符‘N’。這是一個簡單的二分支問題,其匯編語言程序段如下:匯編語言除了提供上述轉移控制類指令和循環控制類指令以實現分支程序設計和循環程序設計外,還提供有子程序和中斷服務程序的調用(CALL、INT)指令和返回(RET、IRET)指令以及比較特別的重復前綴指令(REP、REPZ、REPNZ)等。匯編語言的子程序概念和高級語言中的子程序概念、函數概念以及過程概念是對應的,而中斷服務程序概念則一般是匯編語言獨有的。如果僅從程序執行機制上看,子程序、函數、過程、中斷服務程序的地位是一樣的,只不過是在不同的語言環境中采用了不同的稱呼而已。主程序和子程序、函數、過程、中斷服務程序之間的流程控制都是通過調用與返回實現的,差別是:在高級語言中,主程序和子程序、函數、過程之間的流程控制是通過直接引用子程序、函數或過程的名字(加上適當的參數)來實現的;而在匯編語言中,主程序和子程序、中斷服務程序之間的流程控制是通過前面提到的專門的控制指令(CALL、RET、INT、IRET)來實現的。4子程序參數傳遞前已述及,匯編語言的子程序結構相當于高級語言中的子程序、函數和過程。在采用子程序結構時,一個重要的問題就是參數傳遞。主程序在通過調用子程序為自己解決某些問題時,通常需要為子程序提供一些相關的數據,子程序在內部對這些數據做相應的加工處理后應該將處理結果返回給主程序,這就是所謂的參數傳遞問題。主程序提供給子程序的數據通常叫做入口參數,而子程序返回給主程序的數據則通常叫做出口參數。匯編語言子程序的參數傳遞和高級語言中子程序、函數或過程的參數傳遞機制從本質上看是一致的。需要做參數傳遞時,通常有兩種選擇:一種方法是直接傳遞所需要的數據,另一種方法是傳遞所需數據的位置信息即內存地址。第一種方法即通常所說的值傳遞,第二種方法即通常所說的地址傳遞。需要注意的是,傳地址的目的也是為了傳數據。從表象即實現形式上看,匯編語言子程序的參數傳遞和高級語言子程序的參數傳遞卻有著不小的差別。在高級語言中,函數在定義時往往就有參數說明,如C語言的函數定義格式如下:高級語言的函數在調用時需要同時提供參數,一般格式是:函數名(實際參數表)。而在匯編語言中,子程序在定義時不需要有關參數的說明,在調用時自然也就無需同時提供參數。如在MASM中,子程序的定義格式為:由此可見,高級語言中函數的參數傳遞是顯式進行的,較之匯編語言子程序中隱式進行的的參數傳遞問題要易于實現和理解接受一些。因此,匯編語言中的子程序的參數傳遞問題就是教學中的一個重點內容。在匯編語言中,為了實現子程序的參數傳遞,不管是采用值傳遞還是采用地址傳遞,都需要由程序設計者事先安排好一個第三方空間。值傳遞時將所需要的數據本身放在這個事先安排好的空間中,而地址傳遞時則將存放所需要的數據位置信息即內存地址放在這個事先安排好的空間里。在安排用于參數傳遞的第三方空間時,既可以安排寄存器,也可以安排內存單元,還可以安排堆棧。因此具體的參數傳遞方式靈活多樣,而且各有各的優勢,在實際應用中通常綜合以上各種做法以求達到最佳效果。5比較教學的必要性限于篇幅,以上僅就程序設計的幾個主要方面作了比較論述,而且主要是從實現機制的角度來談,因此細節的東西基本上都省卻了。事實上,在其他方面,匯編語言和高級語言也具有一定的可比性。實踐證明,通過比較教學,一方面可以利用學生已有的知識和體驗幫助他們更好地學習匯編語言的相
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業經理試題及答案大全
- 2024年藥品質量標準更新試題及答案
- 家風建設面試題及答案
- 2024年圖書管理員考試的知識要點試題及答案
- 有效學習方法2024年圖書管理員考試試題及答案
- 圖書管理員客戶關系管理試題及答案
- 日志管理測試題及答案
- 2025年鄉村全科執業助理醫師考試考前沖刺試題及答案
- 2025-2030中國電動自行車行業市場深度調研及投資前景與投資策略研究報告
- 2025-2030中國生豬養殖屠宰行業市場發展前瞻及投資戰略研究報告
- 初二勞技試題及答案下冊
- 補全對話10篇(新疆中考真題+中考模擬)(解析版)
- 湖南省長沙市麓山國際實驗學校2024-2025學年高二下學期第一次學情檢測化學試卷(圖片版含答案)
- 2025-2030中國防火材料行業深度調研及投資前景預測研究報告
- 行政管理本科畢業論文-中國逆城市化現象的成因及啟示
- 2024年浙江錢江生物化學股份有限公司招聘筆試真題
- 新22J01 工程做法圖集
- 2025年中國影像測量機市場調查研究報告
- xx地塊房地產項目可行性研究報告(參考)
- 外研版(三起)(2024)三年級下冊英語Unit 2 Know your body單元備課教案
- 知識產權法自考考點
評論
0/150
提交評論