東北大學匯編上機實驗_第1頁
東北大學匯編上機實驗_第2頁
東北大學匯編上機實驗_第3頁
東北大學匯編上機實驗_第4頁
東北大學匯編上機實驗_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 實驗六子程序設計實驗 一、實驗目的 1掌握過程調用指令與過程返回指令的用法; 2掌握主程序與子程序之間的參數傳送方法; 3掌握調用子程序時堆棧的變化情況及利用壓棧、出棧保護現場的方法; 4掌握嵌套及遞歸子程序的設計方法。二、實驗要求 1仔細閱讀教材中有關子程序設計的章節(jié); 2學會編寫子程序說明文件; 3學會設置斷點檢查堆棧指針的變化及堆棧內容; 4學會用DEBUG中的P命令調試子程序; 5學會在子程序設計中保護所用到的存放器。三、實驗內容1采用一般子程序設計方法和遞歸子程序設計方法,編寫計算Xn的子程序要求:X值與n值由鍵盤輸入,計算結果以十六進制形式在屏幕上顯示。2編寫程序,完成一位十六進

2、制數的加、減、乘、除運算。要求:從鍵盤輸入參加運算的一位十六進制數,運算結果以十六進制形式在屏幕上顯示,加、減、乘、除運算要用子程序編寫。四、解題思路1對于實驗內容1,X值和n的值可以利用INT 21H的1號功能從鍵盤上輸入,計算結果利用INT 21H的2號功能從鍵盤上輸出。可以用遞歸子程序實現Xn次冪的計算;2對于實驗內容2,鍵盤輸入的數和運算符號,輸入的運算符號和+,-,*,/比擬,與那個符號相等就轉去執(zhí)行相應的子程序。子程序的結果可以都把出口條件設置為相同的存放器,這樣便于程序輸出結果。五、編程實現5.1 內容1子程序說明文件如下:1子程序名:CIMI;2子程序功能:計算Xn;3入口條件

3、:X的值放在DL中;4出口條件:Xn值在AX中;5受影響的存放器:AX,BX和標志存放器F。程序清單如下:DSEG SEGMENTRLT DW 0DSEG ENDSSSEG SEGMENT STACKSKTOP DB 100 DUP(0)SSEG ENDSCSEG SEGMENT ASSUME CS:CSEG ASSUME DS:DSEG ASSUME SS:SSEGSTART: MOV AX,DSEG MOV DS,AX MOV AX,SSEG MOV SS,AX MOV SP,SIZE SKTOP MOV AH,01H;輸入 INT 21H SUB AL,30H MOV DL,AL;保存在

4、DL中 PUSH DX MOV DL,'';輸出符號 MOV AH,02H INT 21H POP DX MOV AH,01H;輸入n INT 21H SUB AL,30H MOV BL,AL;保存n在BL中 XOR BH,BH;BH清零 PUSH DX MOV DL,'=';輸出=號 MOV AH,02H INT 21H POP DX MOV AL,DL;默認的入口條件AL存X數據 CALL CIMI;調用子函數 MOV RLT,AX;保存結果在RLT單元 MOV BL,AL;保存結果便于輸出 MOV BH,AL MOV CL,4 SHR BH,CL MOV

5、DL,BH;輸出結果高四位 CMP DL,9 JNA SHU1 ADD DL,7SHU1: ADD DL,30H MOV AH,02H INT 21H MOV DL,BL;輸出結果低四位 AND DL,0FH CMP DL,9 JNA SHU2 ADD DL,7SHU2: ADD DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21HCIMI PROC NEAR;子程序清單 AND BX,BX JZ CIMI1 DEC BX CALL CIMI;遞歸調用 MUL DL RETCIMI1: MOV AL,1 RETCIMI ENDPCSEG ENDS END S

6、TART運行結果如下如圖6-1圖5-1 內容1的運行結果52 實驗內容2子程序設計思路:設計四個子程序,分別完成兩數相加、相減、相乘、相除的功能。子程序說明文件1:1子程序名:JIA;2子程序功能:計算兩個數a,b之和;3入口條件:a的值放在BH中,b的值放在BL中;4出口條件:結果值在AL中;5受影響的存放器:AX,BX。子程序說明文件2:1子程序名:JIAN;2子程序功能:計算兩個數a,b之和;3入口條件:a的值放在BH中,b的值放在BL中;4出口條件:結果值在AL中;5受影響的存放器:AX,BX。子程序說明文件3:1子程序名:CHENG;2子程序功能:計算兩個數a,b之和;3入口條件:a

7、的值放在AL中,b的值放在BL中;4出口條件:結果值在AL中;5受影響的存放器:AX,BX。子程序說明文件4:1子程序名:CHU;2子程序功能:計算兩個數a,b之和;3入口條件:a的值放在AX中,b的值放在BL中;4出口條件:結果值在AL中;5受影響的存放器:AX,BX。程序清單如下:DSEG SEGMENTRLT DW 0DSEG ENDSSSEG SEGMENT STACKSKTOP DB 100 DUP(0)SSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME SS:SSEGSTART: MOV AX,DSEG MOV DS,AX MOV

8、 AX,SSEG MOV SS,AX MOV SP,SIZE SKTOP MOV AH,01H INT 21H SUB AL,30H MOV BH,AL;輸入第一個數據保存在BH中 MOV AH,01H INT 21H MOV CH,AL ;輸入符號保存在CH中 MOV AH,01H INT 21H SUB AL,30H MOV BL,AL ;輸入第二個數據保存在BL中 CMP CH,'+' ;輸入的是+轉 JZ JIA1 CMP CH,'-' ;輸入的是-轉 JZ JIAN1 CMP CH,'*' ;輸入的是*轉 JZ CHENG1 CALL

9、CHU ;否那么認為是輸入/順序執(zhí)行 JMP OUT1JIA1: CALL JIA JMP OUT1JIAN1: CALL JIAN JMP OUT1CHENG1: CALL CHENG JMP OUT1OUT1: MOV CL,04H MOV BH,AL MOV BL,AL MOV DL,'=';輸出= MOV AH,02H INT 21H SHR BH,CL MOV DL,BH ADD DL,30H;輸出結果高四位 MOV AH,02H INT 21H AND BL,0FH MOV DL,BL;輸出結果低四位 ADD DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21HJIA PROC NEAR;子程序JIA實現兩數相加 ADD BH,BL MOV AL,BH RETJIA ENDPJIAN PROC NEAR;子程序JIAN實現兩數相減 SUB BH,BL MOV AL,BH RETJIAN ENDPCHENG PROC NEAR;子程序CHENG實現兩數相乘 MOV AL,BH MUL BL RETCHENG ENDPCHU PROC NEAR;子程序CHU實現兩數相除 MOV AL,BH XOR AH,AH DIV BL RETCHU ENDPCSEG ENDS E

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論