微機原理第一次實驗_第1頁
微機原理第一次實驗_第2頁
微機原理第一次實驗_第3頁
微機原理第一次實驗_第4頁
微機原理第一次實驗_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理第一次實驗電氣310 張端鴻 2130401287注:為了適配win8.1 64bit系統(tǒng),采用masm for Windows軟件,初始化過程有些許不同。實驗一 順序程序的設計一、實驗目的1.學習8086/8088指令系統(tǒng)中一些基本指令的用法和程序設計的的基本方法2熟悉在PC機上建立、匯編、連接、調(diào)試與運行8086/8088匯編語言程序的全過程;二、實驗內(nèi)容設a、b、c、d四個數(shù)分別以單字節(jié)壓縮BCD碼形式存放在內(nèi)存NUM開始的四個單元,計算(a+b)-(c+d)并將結(jié)果放在Y1單元,將結(jié)果在屏幕上顯示出來。在DEBUG中,不斷改變a,b,c,d的內(nèi)容并查看結(jié)果。這里給出幾組數(shù)據(jù):1

2、. a=09,b=06,c=04,d=072. a=38,b=41,c=29,d=343. a=70,b=23,c=42,d=414. a=63,b=73,c=62,d=50三、實驗程序DATA SEGMENTNUM DB 13H,27H,11H,12HY1 DB ?DATA ENDSSTACK SEGMENT DB 20 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AL,NUM ADD AL,NUM+1;把a

3、+b的結(jié)果保存在AL中 DAA;BCD碼調(diào)整 MOV CL,AL;把a+b的結(jié)果復制到CL中 MOV AL,NUM+2 ADD AL,NUM+3;把c+d的結(jié)果保存在AL中 DAA;BCD碼調(diào)整 SUB CL,AL ;把(a+b)-(c+d)的結(jié)果保存在CL中 MOV AL,CL DAS;減法BCD碼調(diào)整 MOV Y1,AL ;結(jié)果保存于YI中 MOV BL,AL;保存AL中的內(nèi)容 MOV CL,4 ROR AL,CL AND AL,0FH;取AL中的高四位 ADD AL,30H;轉(zhuǎn)換為ASCII碼 MOV DL,AL MOV AH,02H INT 21H;顯示高位ASCII碼 MOV AL,

4、BL;恢復AL的內(nèi)容 AND AL,0FH;取低四位 ADD AL,30H;轉(zhuǎn)換為ASCII碼 MOV DL,AL MOV AH,02H INT 21H;顯示高位ASCII碼 MOV AH,4CH INT 21HCODE ENDSEND START調(diào)試過程: 1.反匯編2.查看初始時寄存器與內(nèi)存中的內(nèi)容3.a=09,b=06,0c=04,d=07時,在偏移地址為0011H(DAA)處設置斷點,AL保存的即是經(jīng)過未經(jīng)DAA操作后的a+b的結(jié)果0FH4.在偏移地址為0011H(DAA)處設置斷點,AL保存的即是經(jīng)過未經(jīng)DAA操作后的c+d的結(jié)果0BH 5.在偏移地址為0020H(DAS)處設置斷點

5、,AL保存的即是經(jīng)過未經(jīng)DAS操作后的(a+b)-(c+d)的結(jié)果04H 6.在偏移地址為0021H(DAS)處設置斷點,AL保存的即是經(jīng)過經(jīng)DAS操作后的(a+b)-(c+d)的結(jié)果04H7. 在40H設置斷點,得到輸出結(jié)果1修改abcd,a=38,b=41,c=29,d=34結(jié)果為16同理,當a=70,b=23,c=42,d=41結(jié)果為10 a=63,b=73,c=62,d=50結(jié)果為24 實驗一思考題1. 可改變abcd的值的DEBUG命令:E 可查看abcd的值的DEBUG命令:D2. 斷點設置在每一次運算后,即c+d、a+b、與(a+b)-(c+d)后以便驗證結(jié)果是否與期望相同; 還

6、將斷點設置在每一位的顯示后以觀察是否正常顯示。3.a=90,b=34,c=33,d=44結(jié)果為47a=12,b=19,c=25,d=33與預期結(jié)果-27不符原因:(a+b)-(c+d)為負數(shù)現(xiàn)考慮結(jié)果為負數(shù)的情況,同時考慮是否存在百位,改進程序如下:DSEG SEGMENT NUM DB 12H,19H,25H,33H Y1 DB ? DSEG ENDSSSEG SEGMENT PARA STACK DB 20 DUP(?)SSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART: MOV AX,DSEG MOV DS,AX MOV A

7、X,SSEG MOV SS,AX MOV AL,NUM ADD AL,NUM+1 DAA MOV CL,AL MOV AL,NUM+2 ADD AL,NUM+3 DAA CMP CL,AL JL LLOW ;如果CL<AL跳轉(zhuǎn),即結(jié)果為負 SUB CL,AL MOV AL,CL DAS JMP DONELLOW: SUB AL,CL DAS MOV BL,AL MOV DL,'-' MOV AH,02H INT 21H ;輸出負號 XOR DL,DL MOV AL,BL XOR BL,BL JMP DONEDONE: MOV NUM+4,AL MOV BL,AL AND

8、AL,0F0H MOV CL,4 SHR AL,CL ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AL,BL AND AL,0FH ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AX,4C00H INT 21HCSEG ENDSEND START實驗二 分支程序的設計一、實驗目的1、學習提示信息的顯示及鍵盤輸入字符的方法。2、掌握分支程序的設計方法。二、實驗內(nèi)容在提示信息下,從鍵盤上輸入原碼表示的二位十六進制有符號數(shù)當此數(shù)大于0時,屏幕上顯示此數(shù)為正數(shù)此數(shù)等于0時,屏幕上顯示此數(shù)為0此數(shù)小于0時,屏幕上顯示此

9、數(shù)為負三、實驗原理分支程序是程序通過判斷和比較形成不同邏輯框并產(chǎn)生相應的分支程序。它的結(jié)構(gòu)有兩種:一種是二分支,一種是多分支它們的共同特點是:運行方向總是向前的,在某種確定的條件下,只能執(zhí)行多個分支中的一個分支。四、實驗過程程序編制完成后,先靜態(tài)檢查,無誤后,建立匯編文件,生成可執(zhí)行文件,然后先進入DEBUG中用G命令加斷點的方式,分段調(diào)試,無誤之后,再在DEBUG下連續(xù)運行,最后再將程序在DOS中運行,如果正確,則使用DEBUG命令改變a,b,c,d的值反復驗證結(jié)果,如果不正確,則調(diào)試直至完成為止。程序CRLF MACRO ;定義宏MOV AH,02H MOV DL,0DHINT 21H ;

10、顯示回車MOV AH,02HMOV DL,0AHINT 21H ;顯示回車ENDM ;宏結(jié)束DATA SEGMENTMESS1 DB'INPUT DATA:',0DH,0AH,'$'MESS2 DB'THIS DATA IS+',0DH,0AH,'$'MESS3 DB'THIS DATA IS-',0DH,0AH,'$'MESS4 DB'THIS DATA IS ZERO',0DH,0AH,'$' ;定義的結(jié)果信息DATABUF DB 3 ;定義可以接收的最大字符數(shù)A

11、CTION DB ? ;實際輸入字符數(shù)STRING DB 3 DUP(?) ;輸入字符緩沖區(qū)DATA ENDSSSEG SEGMENT PARA STACK'STACK'DB 50 DUP(0)SSEG ENDSCODE SEGMENTASSUME CS:CODE,SS:SSEG,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,SSEGMOV SS,AXMOV DX,OFFSET MESS1MOV AH,09H ;顯示提示信息INT 21HMOV AH,0AHMOV DX,OFFSET DATABUFINT 21H ;接收二位字符CRLF ;回

12、車換行MOV AL,STRINGCMP AL,38HJGE BELOWCMP AL,30HJNE ABOVEMOV AL,STRING+1CMP AL,30HJNE ABOVEDENG:MOV DX,OFFSET MESS4 ;當?shù)扔?時跳轉(zhuǎn)至此MOV AH,09HINT 21HJMP NEXTBELOW:MOV DX,OFFSET MESS3 ;小于0時跳轉(zhuǎn)至此MOV AH,09HINT 21HJMP NEXTABOVE:MOV DX,OFFSET MESS2 ;大于0時跳轉(zhuǎn)至此MOV AH,09HINT 21HNEXT:MOV AX,4C00HINT 21HCODE ENDSEND STA

13、RT六、實驗過程1、實驗中JZ,JGE,JNE等指令的使用是體現(xiàn)分支程序多分支特點的重要一環(huán)。2、接收鍵入的字符,要用DOS功能調(diào)用的0AH號功能。3、此外,本程序中的宏指令,采用了DOS功能調(diào)用的02H號功能,顯示一個字符并將回車符和換行符在顯示屏上顯示出來4、接收在緩沖區(qū)的字符是用ASCII碼表示的,對于元碼表示的有符號數(shù)來說:大于0,高位字符第7位為0,即高位字符的ASCII碼小于38H大于0,高位字符第7位為1,即高位字符的ASCII碼大于等于38H等于0,必須兩個字符都為30H測試3組數(shù)據(jù)33、00、81 以輸入A4為例,可見為正數(shù)。實驗思考題1、斷點應設在各個CMP指令處,以觀察符號位的變化,進而進一步判斷分支走向。查看符號位的變化可以調(diào)用-R指令,如下圖:即為標志寄存位。2、以輸入33為例,利用-R:得到

溫馨提示

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

評論

0/150

提交評論