IBM-PC匯編語言程序設(shè)計實驗報告_第1頁
IBM-PC匯編語言程序設(shè)計實驗報告_第2頁
IBM-PC匯編語言程序設(shè)計實驗報告_第3頁
IBM-PC匯編語言程序設(shè)計實驗報告_第4頁
IBM-PC匯編語言程序設(shè)計實驗報告_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、中南大學(xué)IBM-PC匯編語言程序設(shè)計實驗報告學(xué)生姓名 學(xué) 院 專業(yè)班級 完成時間 目 錄匯編語言實驗一31.實驗?zāi)康呐c要求32.實驗內(nèi)容與實現(xiàn)原理33.實驗具體設(shè)計實現(xiàn)及結(jié)果44.源代碼7匯編語言實驗二81.實驗?zāi)康呐c要求82.實驗內(nèi)容與實現(xiàn)原理83.實驗具體設(shè)計實現(xiàn)及結(jié)果94.源代碼9匯編語言實驗三 求Fibonacci遞歸數(shù)111.實驗?zāi)康呐c要求112.實驗內(nèi)容與實現(xiàn)原理123.實驗具體設(shè)計實現(xiàn)及結(jié)果124.源代碼12匯編語言實驗四 分類統(tǒng)計字符個數(shù)171.實驗?zāi)康呐c要求172.實驗內(nèi)容與實現(xiàn)原理173.實驗具體設(shè)計實現(xiàn)及結(jié)果184.源代碼18總結(jié)21IBM-PC匯編語言程序設(shè)計匯編語言實

2、驗一1.實驗?zāi)康呐c要求【實驗?zāi)康摹繉W(xué)習(xí)程序設(shè)計的基本方法和技能,熟練掌握用匯編語言設(shè)計、編寫、調(diào)試和運行程序的方法,熟悉DEBUG調(diào)試程序和DOS功能表的查看,為后續(xù)實驗打下堅實基礎(chǔ)。【實驗要求】通過實驗掌握下列知識: 1、8086指令:MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。3、ASCII碼及用16進制數(shù)表示二進制碼的方法。4、8086寄存器: AX,BX,CX,DX,F,IP。2.實驗內(nèi)容與實現(xiàn)原理DEBUG 命令:1、打 DEBUG 進入 DEBUG,顯示提示苻 '_ '。2、退出DEBUG命令:Q3、

3、顯示內(nèi)存命令:D 起始地址 結(jié)束地址4、修改內(nèi)存命令:E 起始地址,連續(xù)修改打空格鍵。打回車鍵退出E命令。5、檢查寄存器命令:R6、修改寄存器命令:R 寄存器名7、小匯編命令:A 起始地址,不輸入指令打回車鍵退出A命令。8、反匯編命令:U 起始地址 結(jié)束地址9、文件命名命令:N 盤號:文件名10、讀文件命令:L 內(nèi)存地址11、寫文件命令:W 內(nèi)存地址12、讀扇區(qū)命令:L 內(nèi)存地址 盤號(0-A:,1-B:) 扇區(qū)號 扇區(qū)數(shù)13、寫扇區(qū)命令:W 內(nèi)存地址 盤號 扇區(qū)號 扇區(qū)數(shù)14、運行命令:G=起始地址 結(jié)束(斷點)地址15、單步命令:T=起始地址 運行指令數(shù),進入子程序內(nèi)部。16、單步命令:P

4、=起始地址 運行指令數(shù),不進入子程序內(nèi)部。17、內(nèi)存搬家命令:M 起始地址 結(jié)束地址 目的地址3.實驗具體設(shè)計實現(xiàn)及結(jié)果實驗結(jié)果如下,輸入debug指令后截圖:4.源代碼'Hello World'程序:DATAS SEGMENT STRING DB 13,10,'Hello World!',13,10,'$'DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA DX,STRING MOV AH,9 INT 21H MOV AH,4CH I

5、NT 21HCODES ENDSEND START匯編語言實驗二1.實驗?zāi)康呐c要求【實驗?zāi)康摹?1) 掌握循環(huán)程序的設(shè)計方法;(2)掌握匯編語言源程序的編輯、匯編、連接及調(diào)試過程;(3)進一步熟悉利用DEBUG程序修改參數(shù)的方法,并檢查和驗證結(jié)果的正確性;(4) 學(xué)會針對不同的問題,選用不同的組織循環(huán)的方法。【實驗要求】掌握循環(huán)程序的過程和匯編實現(xiàn)原理,進一步熟練掌握DEBUG操作指令以及匯編語言源程序的編輯、匯編、連接及調(diào)試過程。2.實驗內(nèi)容與實現(xiàn)原理掌握循環(huán)排序算法的思想:1、二進制到十六進制轉(zhuǎn)換程序;2、起泡排序算法的程序?qū)崿F(xiàn);3、查找匹配字符串。注:第1個必須做,2、3選做一個3.實驗

6、具體設(shè)計實現(xiàn)及結(jié)果4.源代碼二進制轉(zhuǎn)十六進制:PROGNAM SEGMENTMAIN PROC FAR ASSUME CS:PROGNAM,DS:DATAS,SS:STACKSSTART: PUSH DS SUB AX,AX PUSH AX MOV CH,4 MOV BX,0101010011101001BROTATE: MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,7HPRINTIT: MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE RE

7、TMAIN ENDPPROGNAM ENDS END 冒泡排序:DSEG SEGMENT SCORE DB 11H,02H,15H,32H,5H,6H,7H,8H,9H,10H,90 DUP(05H) MAX DB ? MIN DB ?DSEG ENDSCSEG SEGMENT ASSUME DS:DSEG,CS:CSEGSTART: MOV AX,DSEG MOV DS,AX LEA BX,SCORE ;取數(shù)組的首地址 MOV CX,100 ;控制循環(huán)次數(shù) XOR SI,SI ;將SI清零 XOR DI,DI ;將DI清零L1: MOV AH,BX+SI ;用基變址尋址取操作數(shù), L1為外循

8、環(huán),(SI)為循環(huán)變量, ;相當(dāng)于i L2: MOV AL,BX+DI ; L2為內(nèi)循環(huán),(DI)為循環(huán)變量,相當(dāng)于j CMP AH,AL JAE L3 MOV DH,AH ;AH<Al,交換兩個數(shù) MOV AH,AL MOV AL,DH MOV BX+DI,AL ;將交換后的數(shù)存入存儲器 MOV BX+SI,AH ;這兩步很重要L3: INC DI ;AH>=AL,不需交換,(AH)直接和后一個數(shù)比較,相當(dāng)于j+ CMP DI,100 ;判斷內(nèi)層循環(huán)是否結(jié)束 JB L2 ;沒結(jié)束,繼續(xù)循環(huán) ;內(nèi)層循環(huán)結(jié)束了 INC SI ;外層變量SI加一,相當(dāng)于i+ MOV DI,SI ;相當(dāng)

9、于j=i LOOP L1 ;通過寄存器實現(xiàn)兩個存儲器數(shù)據(jù)間的交換 MOV AH,BYTE PTRBX ;基址尋址 MOV AL,BYTE PTRBX+99 MOV MAX,AH MOV MIN,AL MOV AH,4CH ;返回操作系統(tǒng) INT 21HCSEG ENDSEND START匯編語言實驗三 求Fibonacci遞歸數(shù)1.實驗?zāi)康呐c要求【實驗?zāi)康摹空莆兆映绦虻脑O(shè)計方法,熟悉遞歸程序的設(shè)計【實驗要求】掌握遞歸程序的調(diào)用、返回及入口、出口的傳遞方法2.實驗內(nèi)容與實現(xiàn)原理程序接受由用戶鍵入的數(shù)N,根據(jù)給定的N值,計算Fibonacci數(shù)。Fibonacci數(shù)的公式如下:Fib(1)=1;當(dāng)

10、n=1Fib(2)=1;當(dāng)n=2Fib(n)=Fib(n-1)+Fib(n-2)3.實驗具體設(shè)計實現(xiàn)及結(jié)果4.源代碼DATAS SEGMENT STR1 DB 'Please input a number(1-50):N=','$' STR2 DB 13,10,'FIB(N)=','$' WRONGSTR DB 13,10,13,10,'A number between 1 and 50 please!',13,10,13,10,'$' INPUTBUFFER DB 3,?,3 DUP(?) N D

11、W ? ;輸入N值 RESULT1H DW 0 RESULT1L DW 0 RESULT2H DW 0 ;結(jié)果的高16位 RESULT2L DW 0 ;結(jié)果的低16位 C10 DW 10 OUTPUTBUFFER DB 11 DUP('0')DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX CALL INPUT CALL FIB CALL OUTPUT JMP QUIT;* INPUT PROC JMP T1WRONG:LEA DX,WRONGSTR MOV AH,9 IN

12、T 21H T1:LEA DX,STR1 MOV AH,9 INT 21H LEA DX,INPUTBUFFER MOV AH,10 INT 21H MOV AX,0 MOV CL,INPUTBUFFER+1 MOV CH,0 LEA BX,INPUTBUFFER+2 T2:MUL C10 MOV DL,BX CMP DL,'0' JB WRONG CMP DL,'9' JA WRONG AND DL,0FH ADD AL,DL ADC AH,0 INC BX LOOP T2 CMP AX,0032H JA WRONG CMP AX,1 JB WRONG MOV

13、 N,AX RETINPUT ENDP;* FIB PROC CMP N,1JZ L1CMP N,2JZ L2DEC NCALL FIBMOV AX,RESULT2LMOV DX,RESULT2HMOV CX,RESULT1LADD RESULT2L,CXMOV CX,RESULT1HADC RESULT2H,CXMOV RESULT1L,AXMOV RESULT1H,DXJMP EXIT L1:MOV RESULT1L,1 MOV RESULT2L,1 JMP EXIT L2:MOV RESULT2L,1 DEC N CALL FIBEXIT:RETFIB ENDP;* OUTPUT PRO

14、CMOV AX,RESULT2LLEA SI,OUTPUTBUFFERMOV CX,5 R1:MOV DX,0 ;低位加入OUTPUTBUFFERDIV C10INC SIADD SI,DLLOOP R1;* MOV AX,RESULT2H LEA SI,OUTPUTBUFFER MOV CX,5 R2:MOV DX,0 DIV C10 INC SI PUSH CX ;高位加入OUTPUTBUFFER CMP DX,0 JE NOADD MOV CX,DXADDN:CALL ADD65536 LOOP ADDNNOADD:POP CX LOOP R2;*LEA DX,STR2MOV AH,9I

15、NT 21H LEA SI,OUTPUTBUFFER MOV BX,10 R3:CMP BYTE PTR SI+BX,'0' JA PRINT DEC BX ;顯示十進制結(jié)果 JMP R3PRINT:MOV DL,SI+BX MOV AH,2 INT 21H DEC BX CMP BX,1 JAE PRINT RETOUTPUT ENDP;*ADD65536 PROC ;高位算法 ADD BYTE PTR SI,6 MOV DL,0 CMP BYTE PTR SI,3AH JB A1 SUB BYTE PTR SI,10 MOV DL,1 A1:ADD BYTE PTR SI+

16、1,3 ADD BYTE PTR SI+1,DL MOV DL,0 CMP BYTE PTR SI+1,3AH JB A2 SUB BYTE PTR SI+1,10 MOV DL,1 A2:ADD BYTE PTR SI+2,5 ADD BYTE PTR SI+2,DL MOV DL,0 CMP BYTE PTR SI+2,3AH JB A3 SUB BYTE PTR SI+2,10 MOV DL,1 A3:ADD BYTE PTR SI+3,5 ADD BYTE PTR SI+3,DL MOV DL,0 CMP BYTE PTR SI+3,3AH JB A4 SUB BYTE PTR SI+

17、3,10 MOV DL,1 A4:ADD BYTE PTR SI+4,6 ADD BYTE PTR SI+4,DL MOV DL,0 CMP BYTE PTR SI+4,3AH JB A0 SUB BYTE PTR SI+4,10 MOV DL,1 A5:ADD BYTE PTR SI+5,DL MOV DL,0 CMP BYTE PTR SI+5,3AH JB A0 SUB BYTE PTR SI+5,10 MOV DL,1 A6:ADD BYTE PTR SI+6,DL MOV DL,0 CMP BYTE PTR SI+6,3AH JB A0 SUB BYTE PTR SI+6,10 MO

18、V DL,1 A7:ADD BYTE PTR SI+7,DL MOV DL,0 CMP BYTE PTR SI+7,3AH JB A0 SUB BYTE PTR SI+7,10 MOV DL,1 A8:ADD BYTE PTR SI+8,DL MOV DL,0 CMP BYTE PTR SI+8,3AH JB A0 SUB BYTE PTR SI+8,10 MOV DL,1 A9:ADD BYTE PTR SI+9,DL A0:RETADD65536 ENDP;* QUIT:MOV AH,4CH INT 21HCODES ENDS END START匯編語言實驗四 分類統(tǒng)計字符個數(shù)1.實驗?zāi)康?/p>

19、與要求【實驗?zāi)康摹空莆辗种С绦蛟O(shè)計的原理與方法,重點掌握各種程序中形成和判斷條件而產(chǎn)生的程序段的設(shè)計方法和技巧。【實驗要求】掌握分支程序的調(diào)用及基本子程序的編寫,判斷程序運行的順序。2.實驗內(nèi)容與實現(xiàn)原理程序接受用戶輸入一行字符,并按照字符串中字符所屬的類型分類,將結(jié)果輸出(例如:aaabb1234&中,字母5,數(shù)字4,其他字符1)。3.實驗具體設(shè)計實現(xiàn)及結(jié)果4.源代碼DATAS SEGMENT maxlen db 80 actlen db ? String db 80 dup(?) str1 db 'please input a String(<80) :$'

20、str2 db 0ah,0dh,'Number of chars :$' str3 db 0ah,0dh,'Number of digits:$' str4 db 0ah,0dh,'Number of others:$' Quit db 0ah,0dh,0ah,0dh,'Press any keys quit!$' char dw ? digit dw ? other dw ?DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: PUSH DS xor AX,AX push

21、Ax MOV AX,DATAS MOV DS,AX lea DX ,str1 mov AH ,9 int 21h lea DX ,maxlen mov AH, 0aH int 21H lea SI ,String mov char,0 mov digit,0 mov other,0COMPARE: mov AL, SI cmp al,0dh jz exit CMP AL ,30H JC OTHER1 CMP AL ,3aH JC NUMBER CMP AL, 41H JC OTHER1 CMP AL , 5BH JC LETTER CMP AL , 61H JC OTHER1 CMP AL, 7BH JC LETTEROTHER1: INC other JMP INCADDRNUMBER: INC digit JMP INCADDR LETTER: INC charINCADDR: INC SI JMP COMPAREexit: lea DX ,str3 mov AH ,9 int

溫馨提示

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

評論

0/150

提交評論