微機(jī)原理第一次實(shí)驗(yàn)_第1頁
微機(jī)原理第一次實(shí)驗(yàn)_第2頁
微機(jī)原理第一次實(shí)驗(yàn)_第3頁
微機(jī)原理第一次實(shí)驗(yàn)_第4頁
微機(jī)原理第一次實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、微機(jī)原理第一次實(shí)驗(yàn)電氣310 張端鴻 2130401287注:為了適配win8.1 64bit系統(tǒng),采用masm for Windows軟件,初始化過程有些許不同。實(shí)驗(yàn)一 順序程序的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.學(xué)習(xí)8086/8088指令系統(tǒng)中一些基本指令的用法和程序設(shè)計(jì)的的基本方法2熟悉在PC機(jī)上建立、匯編、連接、調(diào)試與運(yùn)行8086/8088匯編語言程序的全過程;二、實(shí)驗(yàn)內(nèi)容設(shè)a、b、c、d四個(gè)數(shù)分別以單字節(jié)壓縮BCD碼形式存放在內(nèi)存NUM開始的四個(gè)單元,計(jì)算(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三、實(shí)驗(yàn)程序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(bǔ)

3、+b的結(jié)果保存在AL中 DAA;BCD碼調(diào)整 MOV CL,AL;把a(bǔ)+b的結(jié)果復(fù)制到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;恢復(fù)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.查看初始時(shí)寄存器與內(nèi)存中的內(nèi)容3.a=09,b=06,0c=04,d=07時(shí),在偏移地址為0011H(DAA)處設(shè)置斷點(diǎn),AL保存的即是經(jīng)過未經(jīng)DAA操作后的a+b的結(jié)果0FH4.在偏移地址為0011H(DAA)處設(shè)置斷點(diǎn),AL保存的即是經(jīng)過未經(jīng)DAA操作后的c+d的結(jié)果0BH 5.在偏移地址為0020H(DAS)處設(shè)置斷點(diǎn)

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

6、將斷點(diǎn)設(shè)置在每一位的顯示后以觀察是否正常顯示。3.a=90,b=34,c=33,d=44結(jié)果為47a=12,b=19,c=25,d=33與預(yù)期結(jié)果-27不符原因:(a+b)-(c+d)為負(fù)數(shù)現(xiàn)考慮結(jié)果為負(fù)數(shù)的情況,同時(shí)考慮是否存在百位,改進(jìn)程序如下: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é)果為負(fù) SUB CL,AL MOV AL,CL DAS JMP DONELLOW: SUB AL,CL DAS MOV BL,AL MOV DL,'-' MOV AH,02H INT 21H ;輸出負(fù)號(hào) 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實(shí)驗(yàn)二 分支程序的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)提示信息的顯示及鍵盤輸入字符的方法。2、掌握分支程序的設(shè)計(jì)方法。二、實(shí)驗(yàn)內(nèi)容在提示信息下,從鍵盤上輸入原碼表示的二位十六進(jìn)制有符號(hào)數(shù)當(dāng)此數(shù)大于0時(shí),屏幕上顯示此數(shù)為正數(shù)此數(shù)等于0時(shí),屏幕上顯示此數(shù)為0此數(shù)小于0時(shí),屏幕上顯示此

9、數(shù)為負(fù)三、實(shí)驗(yàn)原理分支程序是程序通過判斷和比較形成不同邏輯框并產(chǎn)生相應(yīng)的分支程序。它的結(jié)構(gòu)有兩種:一種是二分支,一種是多分支它們的共同特點(diǎn)是:運(yùn)行方向總是向前的,在某種確定的條件下,只能執(zhí)行多個(gè)分支中的一個(gè)分支。四、實(shí)驗(yàn)過程程序編制完成后,先靜態(tài)檢查,無誤后,建立匯編文件,生成可執(zhí)行文件,然后先進(jìn)入DEBUG中用G命令加斷點(diǎn)的方式,分段調(diào)試,無誤之后,再在DEBUG下連續(xù)運(yùn)行,最后再將程序在DOS中運(yùn)行,如果正確,則使用DEBUG命令改變a,b,c,d的值反復(fù)驗(yàn)證結(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í)際輸入字符數(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 ;當(dāng)?shù)扔?時(shí)跳轉(zhuǎn)至此MOV AH,09HINT 21HJMP NEXTBELOW:MOV DX,OFFSET MESS3 ;小于0時(shí)跳轉(zhuǎn)至此MOV AH,09HINT 21HJMP NEXTABOVE:MOV DX,OFFSET MESS2 ;大于0時(shí)跳轉(zhuǎn)至此MOV AH,09HINT 21HNEXT:MOV AX,4C00HINT 21HCODE ENDSEND STA

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論