微機(jī)原理設(shè)計舉例_第1頁
微機(jī)原理設(shè)計舉例_第2頁
微機(jī)原理設(shè)計舉例_第3頁
微機(jī)原理設(shè)計舉例_第4頁
微機(jī)原理設(shè)計舉例_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、指令系統(tǒng)程序設(shè)計舉例 例1:從存儲器中取數(shù)的基本方法執(zhí)行下列指令后, AX寄存器中的內(nèi)容是什么? TABLEDW10,20,30,40,50 ENTRY DW3 .MOV BX,OFFSET TABLE ;取數(shù)據(jù)串偏移地址ADD BX,ENTRY ;BX=BX+3MOV AX,BX ;物理地址=DS16+(BX)答案: (AX)=400AH14H1EH28H32H03HDS:TABLEDS:ENTRY此例中要注意: 1)TABLE 和ENTRY的標(biāo)號意義,這里為數(shù)據(jù)串的偏移地址的首地址。2)從存儲器中取數(shù)據(jù)必須要知道數(shù)據(jù)在那個段和它的偏移地址。3)得到偏移地址有兩條指令4)如果數(shù)據(jù)在ES或SS

2、段時,指令中段前綴的用法 如果數(shù)據(jù)串定義在ES段中 TABLEDW10,20,30,40,50 ENTRY DW3 .MOV BX,OFFSET TABLE ;取數(shù)據(jù)串偏移地址ADD BX, ES ENTRY ;BX=BX+3MOV AX, BX ;物理地址=ES16+(BX)答案: (AX)=400AH14H1EH28H32H03HES:TABLEES:ENTRY此例中要注意: 1)TABLE 和ENTRY的標(biāo)號在程序中只能出現(xiàn)一次,在段定義中已經(jīng)指明在ES段中。例2:在使用中容易出錯的指令用法指出下列指令的錯誤: MOV AH,BX ; 源、目的字長不一致 (2)MOV SI,BX ;源、

3、目的不能同時為存貯器尋址方式 (3)MOV AX,SIDI ;基址變址方式不能有 SI和DI的組合(4)MOV AX,BXBP ;基址變址方式不能有 BX和BP的組合(5)MOVBX,ES:AX ;AX不能作為基址寄存器使用,而且源、目的不能同時為存貯器尋址方式(6)MOV BYTE PTRBX,1000 ;1000超出一個字節(jié)的表數(shù)范圍(7)MOV AX,OFFSET SI ; OFFSET只用于標(biāo)號(8)MOV CS,AX;CS不能作為目的寄存器(9)MOV DS,BP ;段地址不能直接送入數(shù)據(jù)段寄存器例3: 推斷指令的執(zhí)行結(jié)果 DATA SEGMENTTABA DW1234HDATA E

4、NDS . MOV BX, TABALEABX, TABA請寫出上述兩條指令執(zhí)行后, BX寄存器中的內(nèi)容。答案:MOVBX,TABA ; 執(zhí)行后(BX)=1234H ,內(nèi)存中的數(shù)據(jù)LEABX,TABA ; 執(zhí)行后(BX)=OFFSET TABA,偏移地址34H12HXXXXXXXXDS:TABA例4 多字節(jié)加法的程序設(shè)計變量DATAX和DATAY定義如下: DATAX DW 0148H DW 2316H DATAY DW 0237H DW 4052H按下述要求寫出指令序列: DATAX和DATAY中的兩個字?jǐn)?shù)據(jù)相加, 和存放在DATAY和DATAY+2中。實現(xiàn)的運算為:2316 0148H+4

5、052 0237H=?MOV AX, DATAX ;取第一個要加數(shù)的低字ADDAX, DATAY ;與第二個數(shù)低字相加,結(jié)果在AX中MOV BX, DATAX+2 ;取第一個數(shù)要加的數(shù)的高字ADCBX, DATAY+2 ;與第二個數(shù)高字相加,結(jié)果在BX中MOV DATAY, AXMOV DATAY+2, BX ;保存和,注意地址為2個字節(jié)在編程時要考慮到低字相加后產(chǎn)生的進(jìn)位例5:乘法指令應(yīng)用(無符號)兩個16變量DATAY和DATAX定義如下: DATAY DW 0148H ;A DW 2316H ;B DATAX DW 0237H ;C DW 4052H ;D RESULT DW 12DUP

6、(0)按下述要求寫出指令序列:DATAY和DATAX兩個字相乘(用MUL)。 A B C D E F G H H G F E D C B A N N N N N N N N N M M M M M M M M M A A A A A A A A A B B B B B B B B B C C C C C C C C C D D D D D D D D D E E E E E E E E E F F F F F F F F FX X X X X X X X X X X X X X X X X A B C D E F G H H G F E D C B A N N N N N M M M M M

7、A A A A A B B B B B DX(0) AX(0) A B C D E F G H H G F E D C B A C C C C C D D D D D E E E E E F F F F F DX(1) AX(1) A B C D E F G H H G F E D C B A N N N N N M M M M M A A A A A B B B B B DX(2) AX(2) A B C D E F G H H G F E D C B A C C C C C D D D D D E E E E E F F F F F DX(3) AX(3) DX(0) AX(0) DX(1

8、) AX(1) DX(2) +AX(2) DX(3) AX(3) C1 字1 字0 + C2 + C1 字3 C2 字2字相乘后位相加的要求MOVAX,WORD PTR DATAX ;取乘數(shù)第一個字MOVBX,WORD PTR DATAY ;取被乘數(shù)第一個字MULBX;(AC)MOVRESULT,AX ;結(jié)果低字 AX(0)MOVRESULT+2,DX ;結(jié)果高字 DX(0) MOVAX,WORD PTR DATAX ;取乘數(shù)第一個字MOVAX,WORD PTR DATAY+2 ;取被乘數(shù)第二個字MULBX ;(AD) MOVRESULT+4,AX;結(jié)果低字 AX(1)MOVRESULT+6,

9、DX ;結(jié)果高字 DX(1) MOVAX,WORD PTR DATAX+2 ;取乘數(shù)第二個字MOVBX,WORD PTR DATAY ;取被乘數(shù)第一個字MULBX ;(BC)MOVRESULT+8,AX ;結(jié)果低字 AX(2)MOVRESULT+10,DX ;結(jié)果高字 DX(2) MOVAX,WORD PTR DATAX+2 ;取乘數(shù)第二個字MOVBX,WORD PTR DATAY+2 ;取被乘數(shù)第一個字MULBX ;(BD)MOVRESULT+12,AX;結(jié)果低字 AX(3)MOVRESULT+14,DX ;結(jié)果高字 DX(3)MOV AX,RESULT+2MOV BX,RESULT+4MO

10、V DX,RESULT+8ADDAX,BXADCAX,DX ;DX(0)+AX(1)+AX(2)MOV RESULT+2, AXMOV AX,RESULT+6MOV BX,RESULT+10MOV DX,RESULT+12ADCAX,BXADCAX,DX ;DX(1)+DX(2)+AX(3)MOV RESULT+4, AX MOVAX,RESULT14ADCAX,0000H ; DX(3)+CMOVRESULT6, AX例6:移位指令應(yīng)用試分析下面的程序段完成什么操作?MOVCL,04SHLDX,CL ;DX左移4位。左移次數(shù)CL中的數(shù)MOVBL,AH SHLAX,CL ; AX左移4位SHR

11、BL,CL ; BL右移4位答案: 將DX、AX中的字左移4位, BL右移4位例7:變量N1和N2均為2字節(jié)的非壓縮BCD數(shù)碼,請寫出計算N1與N2之差的指令序列。非壓縮BCD碼格式:0000XXXXHMOV AX, 0 ;(MOV AH,00H)AX高8位清0 MOV AL, N1 ;取個位數(shù)SUBAL, N2 ;個位減AAS ;非壓縮的BCD數(shù)的減法結(jié)果進(jìn)行調(diào)整MOV DL, AL ;將正確結(jié)果保存在DL中MOV AL, N1+1 ;取十位數(shù)SBCAL, N2+2 ;十位減,考慮個位有借位AAS ;非壓縮的BCD數(shù)的減法結(jié)果進(jìn)行調(diào)整MOV DH, AL ;將正確結(jié)果保存在DH中 例8:假設(shè)

12、(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H,(25060)=00B0H,(SP)=0FFFEH, (CF)=1, (DF)=1, 請寫出下列各條指令單獨執(zhí)行完后, 有關(guān)寄存器及存儲單元的內(nèi)容, 若影響條件碼請給出條件碼SF、ZF、OF、CF的值。SBB AX,BX ;2060H-3000H(1)(AX)=F05FH,

13、(SF)=1, (ZF)=0, (OF)=0, (CF)=1 假設(shè)(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 請寫出下列各條指令單獨執(zhí)行完后, 有關(guān)寄存器及存儲單元的內(nèi)容, 若影響條件碼請給出條件碼SF、ZF、OF、CF的值。(2

14、) CMPAX,WORD PTRSI+0FA0H;2060H-A006H目的操作數(shù)的地址:DS16+SI+0FA0H =40000H+2060+0FA0=43000H執(zhí)行此指令后AX中的內(nèi)容不變!只影響標(biāo)志位!2060H-A006H 0010 0000 0110 0000 -1010 0000 0000 0110 0010 0000 0110 0000 +0101 1111 1111 1010 1000 0000 0101 1010結(jié)果:(SF)=1, (ZF)=0, (OF)=1, (CF)=1OF=1 兩數(shù)符號相反(正數(shù)-負(fù)數(shù)、或負(fù)數(shù)-正數(shù)),而結(jié)果符號與減數(shù)相同。OF=0 同符號數(shù)相減時

15、或不同符號數(shù)相減,而結(jié)果符號與減數(shù)不相同。 假設(shè)(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 請寫出下列各條指令單獨執(zhí)行完后, 有關(guān)寄存器及存儲單元的內(nèi)容, 若影響條件碼請給出條件碼SF、ZF、OF、CF的值。(3) MULBYTE

16、 PTRBX ;字或字節(jié)由源決定 (AX)=0260H, (OF)=1, (CF)=1MULBYTE PTRBX目的操作數(shù)的地址:DS16+(BX) =40000H+3000=43000H (43000H)=A006H此操作為:60H06H=0240H (AX)=0240H, (OF)=1, (CF)=1乘法指令運算結(jié)果影響狀態(tài)標(biāo)志,但對CF、OF有特殊的定義。 當(dāng)乘積的高半部分為0(AH=0或DX(高位)=0)時,CF=0、OF=0,表示高半部分無有效數(shù),否則CF=1、OF=1,用于指出字節(jié)運算結(jié)果是8位或16位,字運算結(jié)果是16位或32位。(不存在有進(jìn)位的可能) 假設(shè)(CS)=3000H,

17、 (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 請寫出下列各條指令單獨執(zhí)行完后, 有關(guān)寄存器及存儲單元的內(nèi)容, 若影響條件碼請給出條件碼SF、ZF、OF、CF的值。(4) DIVBH;AX/BL(2060H30H) (AX)=2060H(4) DIVBH;

18、AX/BL(2060H30H) (AX)=2060H AL=商,AH=余數(shù)2060H=40962+96=8288 828848=172 余數(shù)=32除法不影響標(biāo)志位 假設(shè)(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 請寫出下列各條指令

19、單獨執(zhí)行完后, 有關(guān)寄存器及存儲單元的內(nèi)容, 若影響條件碼請給出條件碼SF、ZF、OF、CF的值。(5) SARAX,CL ;算術(shù)右移5次(AX)=0103H, (CF)=0 2060H=0010 0000 0110 0000B 0000 0001 0000 0011 B 00000B 假設(shè) (AX)=2060H, 請寫出下列各條指令單獨執(zhí)行完后, 有關(guān)寄存器及存儲單元的內(nèi)容, 若影響條件碼請給出條件碼SF、ZF、OF、CF的值。(6) XORAX,0FFE7H 0010 0000 0110 0000B 1111 1111 1110 0111B 1101 1111 1000 0111B(AX)=0DF87H, (CF)=0, (OF)=0, (SF)=1, (ZF)=0相當(dāng)于對AX的內(nèi)容求反 假設(shè) (DS)=4000H, (ES)=2000H, (AX)=2060H, (BX)=3000H, (SI)=2060H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, 請寫出下列各條指令單獨執(zhí)行完后, 有關(guān)寄存器及存儲單元的內(nèi)容, 若影響條件碼請給出條件碼SF、ZF、OF、

溫馨提示

  • 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

提交評論