匯編第2次上機(jī)實驗報告_第1頁
匯編第2次上機(jī)實驗報告_第2頁
匯編第2次上機(jī)實驗報告_第3頁
匯編第2次上機(jī)實驗報告_第4頁
匯編第2次上機(jī)實驗報告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

匯編語言上機(jī)實驗報告時間:2013-4-19,19:00-21:30地點:南一樓803室實驗人員:王濤實驗一一、題目從鍵盤輸入兩串字符分別存入BUF1和BUF2區(qū),比較兩串內(nèi)容是否相等,相等顯示“MATCH!”,不相等顯示“NOMATCH!”。二、實驗要求(1)使用10號功能調(diào)用輸入字符串;(2)使用9號功能調(diào)用輸出提示信息。三、寄存器分配和變量定義說明1. 存儲單元分配 2. 寄存器分配四、流程圖開始開始將將DATA中的數(shù)據(jù)放置到DS:數(shù)據(jù)段中調(diào)用調(diào)用10號指令輸入字符串BUF1并放置到數(shù)據(jù)段的BUF1中輸出數(shù)據(jù)段輸出數(shù)據(jù)段CRLF 中的回車換行調(diào)用10調(diào)用10號指令輸入字符串BUF2并放置到數(shù)據(jù)段的BUF2中輸出輸出數(shù)據(jù)段CRLF 中的回車換行將輸入的兩個字符將輸入的兩個字符串的實際長度分放到BUF1+1和BUF2+1中,且將字符串1的長度->CX((BUF1+1)==(BUF2+1) N Y(BUF1(BUF1+2)==(BUF2+2) BUF1++,BUF1++,BUF2++;(CX)--輸出“NOMATCH!”輸出“NOMATCH!” (CX)==0輸出輸出“MATCH!”結(jié)束結(jié)束五、源程序.386DATASEGMENTUSE16BUF1 DB 50 DB ? DB 50DUP(0)BUF2 DB 50 DB ? DB 50DUP(0)CRLF DB 0DH, 0AH, '$'SENT1 DB "MATCH!$"SENT2 DB "NOMATCH!$"DATA ENDSSTACK SEGMENT USE16 STACK DB 300 DUP(0)STACK ENDSCODE SEGMENT USE16 ASSUME DS:DATA,SS:STACK,CS:CODESTART: MOV AX, DATA MOV DS, AX LEA DX, BUF1 MOV AH, 10 INT 21H LEA DX, CRLF MOV AH, 9 INT 21H LEA DX, BUF2 MOV AH, 10 INT 21H LEA DX, CRLF MOV AH, 9 INT 21H MOV BL, BUF1+1 MOV BH, 0 MOV DL, BUF2+1 MOV DH, 0 MOV CX, BX CMP DX, BX JNZ L1 JZ L2L1: MOV DX, OFFSETSENT2 MOV AH, 9 INT 21H JMP EXIT L2: MOV DL, BUF1+2 MOV BL, BUF2+2 CMP DL, BL JNZ L1 INC BUF1 INC BUF2 DEC CX JNZ L2 JZ L3L3: MOV DX, OFFSETSENT1 MOV AH, 9 INT 21H JMP EXIT EXIT: MOV AH, 4CH INT 21H CODE ENDS END START六、實驗步驟1.使用編輯程序EDIT.EXE錄入源程序,存盤文件名為T1.ASM。2.使用MASM6.0匯編源文件。即MASMT1;3.觀察提示信息,若出錯,則用編輯程序修改錯誤,存盤后重新匯編,直至不再報錯為止。4.使用連接程序LINK.EXE將匯編生成的T1.OBJ文件連接成執(zhí)行文件。即LINKT1;5.若連接時報錯,則依照錯誤信息修改源程序。之后重新匯編和連接,直至不再報錯并生成T1.EXE文件。6.執(zhí)行該程序。即在命令行提示符后輸T1后回車,觀察執(zhí)行現(xiàn)象。7.使用TD.EXE觀察T1的執(zhí)行情況。即TDT1回車(1)觀察CS、IP、SP、DS、ES、SS的值。(2)單步執(zhí)行開始2條指令,觀察DATA的實際值,以及DS的改變情況。(3)觀察DS:0開始數(shù)據(jù)區(qū),找到各變量在數(shù)據(jù)段中的位置和值。(4)(5)(6)七、實驗記錄(包括實驗條件、輸入/輸出、錯誤和修改等信息的記錄)八、體會實驗二一、題目 編寫一個向用戶提供指定字符串的ASCII碼的程序。二、實驗要求若用戶需要知道某個字符的ASCII碼,則從鍵盤上鍵入該字符,此時程序調(diào)用子程序RADIX將該字符的ASCII碼按十六進(jìn)制和十進(jìn)制輸出。例如:THEASCIICODEOFAIS41H(65D)三、寄存器分配和變量定義說明1. 存儲單元分配 2. 寄存器分配 四、流程圖開始開始將將DATA中的數(shù)據(jù)放置到DS:數(shù)據(jù)段中調(diào)用1號調(diào)用1號指令鍵盤輸入一個字符放到AL,和ECX中判斷(AL)==0DH判斷(AL)==0DH ECX->EAX16->EBXECX->EAX16->EBX將BUF的偏移地址放到SI中給BUF末尾給BUF末尾加上字符‘H’和’$’調(diào)用子程序RADIX輸出調(diào)用子程序RADIX輸出字符的16進(jìn)制用相同的方法用相同的方法輸出字符的十進(jìn)制 結(jié)束 結(jié)束 五、源程序.386DATA SEGMENT USE16SENT1 DB "THEASCIICODEOF$"SENT2 DB "IS$"BUF DB 15DUP(0)DATA ENDSSTACK SEGMENT USE16 STACK DB 200 DUP(0)STACK ENDSCODE SEGMENT USE16 ASSUME DS:DATA, SS:STACK, CS:CODESTART: MOV AX, DATA MOV DS, AX LEA DX, OFFSET SENT1 MOV AH, 9 INT 21H MOV AH, 1 INT 21H XOR ECX, ECX MOV CL, AL CMP AL, 0DH ;遇到回車結(jié)束程序 JZ EXIT LEA DX, OFFSET SENT2 MOV AH, 9 INT 21H MOV EAX, ECX MOV EBX, 16 LEA SI, BUF CALL RADIX ;調(diào)用子程序顯示十六進(jìn)制 MOV BYTEPTR[SI],'H' MOV BYTEPTR[SI+1],'$' LEA DX, BUF MOV AH, 9 INT 21H MOV DL, '' ;顯示空格 MOV AH, 2 INT 21H MOV DL, '(' ;顯示左括號'(' MOV AH, 2 INT 21H MOV EAX, ECX MOV EBX, 10 LEA SI, BUF CALL RADIX ;調(diào)用子程序顯示十進(jìn)制 MOV BYTEPTR[SI], 'D' MOV BYTEPTR[SI+1], '$' LEA DX, BUF MOV AH, 9 INT 21H MOV DL, ')' ;顯示左括號( MOV AH, 2 INT 21H JMP EXITRADIX PROC PUSH CX PUSH EDX XOR CX, CXLOP1: XOR EDX, EDX DIV EBX PUSH DX INC CX OR EAX, EAX JNZ LOP1LOP2: POP AX CMP AL, 10 JB L1 ADD AL, 7L1: ADD AL, 30H MOV [SI], AL INC SI LOOP LOP2 POP EDX POP CX RETRADIX ENDP EXIT: MOV AH, 4CH INT 21HCODE ENDS END START六、實驗步驟1.使用編輯程序EDIT.EXE錄入源程序,存盤文件名為T2.ASM。2.使用MASM6.0匯編源文件。即MASMT2;3.觀察提示信息,若出錯,則用編輯程序修改錯誤,存盤后重新匯編,直至不再報錯為止。4.使用連接程序LINK.EXE將匯編生成T2.OBJ文件連接成可執(zhí)行文件。即LINKT2;5.若連接時報錯,則依照錯誤信息修改源程序。之后重新匯編和連接,直至不再報錯并生成T1.EXE文件。6.執(zhí)行該程序。即在命令行提示符后輸T1后回車,觀察執(zhí)行現(xiàn)象。7.使用TD.EXE觀察T1的執(zhí)行情況。即TDT1回車(1)觀察CS、IP、SP、DS、ES、SS的值。(2)單步執(zhí)行開始2條指令,觀察DATA的實際值,以及DS的改變情況。(3)觀察DS:0開始數(shù)據(jù)區(qū),找到各變量在數(shù)據(jù)段中的位置和值。(4)(5)(6)七、實驗記錄(包括實驗條件、輸入/輸出、錯誤和修改等信息的記錄)八、體會實驗三一、題目輸入一個字符(0–9之間),輸出其對應(yīng)的英文單詞。例如:輸入1,則輸出one.二、實驗要求在輸出字符串時,不允許使用分支語句(轉(zhuǎn)移指令)三、寄存器分配和變量定義說明1. 存儲單元分配 2. 寄存器分配四、流程圖開始開始將將DATA中的數(shù)據(jù)放置到DS:數(shù)據(jù)段中MON:MON:其中存放著0~9數(shù)字的英文單詞NUM:存放著0~9數(shù)字在MON中的偏移量調(diào)用1調(diào)用1號指令從鍵盤輸入1個數(shù)字(0~9)放到AL中0<=(0<=(AL)<=9 N將MON的將MON的偏移地址給BXAL——>BX,DS:[BX]——>SI將NUM的偏移地址將NUM的偏移地址給BX[BX][SI]——>DX調(diào)用9號指令輸出DX指向的字符串 結(jié)束 結(jié)束 五、源程序.386DATA SEGMENT USE16INPUT DB "PLEASE INPUT X(0~9):$"ENG DB "ZERO$ONE$TWO$THREE$FOUR$FIVE$SIX$SEVEN$EIGHT$NINE$"NUM DB 0,5,9,13,19,24,29,33,39,45INERR DB 0AH,0DH,"INPUTERROR!TRYAGAIN$"CRLF DB 0DH, 0AH, '$'DATA ENDSSTACK SEGMENT USE16 STACK DB 250DUP(0)STACKENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX, DATA MOV DS, AXNEXT: MOV DX, OFFSETINPUT MOV AH, 9 INT 21H MOV AH, 1 INT 21H CMP AL, 48 JB ERROR CMP AL, 57 JA ERROR AND AL, 0FH MOV BX, OFFSETNUM ADD BL, AL AND BH, 00H MOV SI, DS:[BX] MOV BX, OFFSETENG LEA DX, CRLF MOV AH, 9 INT 21H LEA DX, [BX][SI] AND DH, 00H MOV AH, 9 INT 21H JMP EXITERROR:LEA DX, CRLF MOV AH, 9 INT 21H MOV DX, OFFSETINERR MOV AH, 9 INT 21H JMP EXITEXIT: MOV AH, 4CH INT 21HCODE ENDS END START六、實驗步驟1.使用編輯程序EDIT.EXE錄入源程序,存盤文件名為T3.ASM。2.使用MASM6.0匯編源文件。即MASMT3;3.觀察提示信息,若出錯,則用編輯程序修改錯誤,存盤后重新匯編,直至不再報錯為止。4.使用連接程序LINK.EXE將匯編生成的

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論