微機(jī)原理課件第4單元_第1頁(yè)
微機(jī)原理課件第4單元_第2頁(yè)
微機(jī)原理課件第4單元_第3頁(yè)
微機(jī)原理課件第4單元_第4頁(yè)
微機(jī)原理課件第4單元_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、二、算術(shù)運(yùn)算指令(一)、加法指令1、ADD 不帶進(jìn)位加指令 指令格式:ADD OPD,OPS 指令功能:OPD (OPD)十(OPS)2、ADC 帶進(jìn)位加指令 指令格式:ADC OPD,OPS 指令功能:OPD (OPD)十(OPS)十CF3、INC 加1指令(增量指令) 指令格式: INC OPD 指令功能: OPD (OPD)十1(*)該指令常用于循環(huán)結(jié)構(gòu)程序中修改指針或用于循環(huán)計(jì)數(shù)。(*)對(duì)標(biāo)志位的影響例題:兩個(gè)4字節(jié)的無(wú)符號(hào)數(shù)相加,結(jié)果存放在4000H開(kāi)始的內(nèi)存中,這兩個(gè)4字節(jié)的無(wú)符號(hào)數(shù)是 分別存放在2000H的1008423H和3000H的20007F00,寫(xiě)出指令序列。(二)、減法

2、指令1、SUB 不帶借位的減法指令指令格式: SUB OPD,OPS 指令功能: OPD(OPD)(OPS)2、SBB 帶借位的減法指令指令格式: SBB OPD,OPS 指令功能: OPD(OPD)(OPS)-CF3、DEC 減1/減量指令指令格式: DEC OPD) 指令功能: OPD (OPI)14、NEG 求補(bǔ)指令指令格式: NEG OPD 指令功能: OPD 0 -(OPD)OFFH-(OPD)十1(OPD為字節(jié)時(shí)) 或 OFFFFH-(OPD)十1(OPD為字時(shí))5、 CMP 比較指令指令格式: CMP OPD,OPS 指令功能 : (OPD)(OPS)僅置標(biāo)志位不影 響OPD的值

3、兩個(gè)數(shù)比較后,根據(jù)標(biāo)志位判斷比較結(jié)果1、無(wú)符號(hào)數(shù)(1): ZF=1,相等。(2): CF=0,被減數(shù)大。(3): CF=1,被減數(shù)小。2、有符號(hào)數(shù)(1): ZF=1,相等。(2): SF異或OF,結(jié)果=0 ,被減數(shù)大。(3): SF異或OF,結(jié)果=1 ,被減數(shù)小。例題:將從內(nèi)存偏移地址2000H開(kāi)始的99個(gè)字節(jié)的無(wú)符號(hào)數(shù)和從內(nèi)存偏移地址3000H開(kāi)始的99個(gè)字節(jié)的無(wú)符號(hào)數(shù)相加,結(jié)果存放回到2000開(kāi)始的內(nèi)存單元中。movsi,2000hmovdi,3000hmovcx,99;加一條清除進(jìn)位標(biāo)志指令(第一次就使用帶進(jìn)位加法)(clc)Lab:moval,siadcal,dimovsi,alinc

4、siincdideccx;加一條判斷zf標(biāo)志并根據(jù)判斷結(jié)果轉(zhuǎn)移的指令(繼續(xù)或終止循環(huán))(jnz lab)moval,0adcal,0movsi,al例題:設(shè)X,Y,Z,W均為雙精度數(shù),它們分別存放在,X,X+2;Y;Y+2; Z,Z+2;的存儲(chǔ)單元中且為高字高地址。寫(xiě)出實(shí)現(xiàn)下列式子的指令序列 WX+Y+24-Z MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2; X+Y ADD AX,24 ADC DX,0; +24 SUB AX,Z SBB DX,Z+2; -Z MOV W,AX MOV W+2,DX;存入W(三)、乘(除)法指令 1、 MUL(IMUL) 無(wú)符

5、號(hào)數(shù)乘法指令(帶符號(hào)數(shù)乘法指令) 指令格式: MUL OPS(IMUL OPS) 指令功能: AX (AL)(OPS) (OPS類型為字節(jié)) DX,AX (AX)(OPS) (OPS類型為字)2、 DIV(IDIV)無(wú)符號(hào)數(shù)除法指令(有符號(hào)數(shù)除法指令) 指令格式: DIV OPS( IDIV OPS) 字節(jié)除法:(AX) (OPS) AL(商)、AH(余數(shù)) 字除法: (DX,AX) (OPS) Ax(商)、DX(余數(shù))(*)源操作數(shù)OPS可以是寄存器或存儲(chǔ)器操作數(shù),但不能是立即數(shù)(*)操作數(shù)是有符號(hào)還是無(wú)符號(hào)由使用的指令來(lái)決定(*)有一個(gè)操作數(shù)是隱含的(*)除法余數(shù)的符號(hào)與被除數(shù)相同,被除數(shù)

6、要比除數(shù)長(zhǎng)一倍3、有符號(hào)數(shù)的擴(kuò)展指令(最高位向前擴(kuò)展)CBW:字節(jié)擴(kuò)展成字AL-AXCWD:字?jǐn)U展成雙字AX-DX,AX4、BCD碼調(diào)整指令加法:DAA,AAA減法:DAS,AAS乘法:AAA除法:AAD三、邏輯運(yùn)算與移位指令(一)、邏輯運(yùn)算指令指令名稱指令助記符非NOT OPD與AND OPD, OPS或OR OPD, OPS異或XOR OPD, OPS測(cè)試TEST OPD, OPS例題:X,Y,Z均為雙字節(jié)有符號(hào)數(shù),求完成下式的指令序列 W(XY+Z) X MOV AX,X IMUL Y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD AX,CX ADC DX,B

7、X IDIV V(*)進(jìn)行的是按位操作(*)注意標(biāo)志位的變化例題:分別對(duì)AL中的0,1位進(jìn)行 置0 置1 測(cè)試是否為0 測(cè)試是否為1 將0,1位取反 將AL清零 測(cè)試BX中內(nèi)容是否與地址 VALUME相匹配1.AND AL,OFCH2.OR AL,33.TEST AL,34.NOT AL TEST AL,35.XORAL,36.XOR AL,AL7.XOR AX,VALUME(二)、移位指令指令名稱指令助記符邏輯左移SHL OPD,計(jì)數(shù)值算術(shù)左移SAL OPD,計(jì)數(shù)值邏輯右移SHR OPD,計(jì)數(shù)值算術(shù)右移SAR OPD,計(jì)數(shù)值循環(huán)左移ROL OPD,計(jì)數(shù)值循環(huán)右移ROR OPD,計(jì)數(shù)值帶進(jìn)位循

8、環(huán)左移RCL OPD,計(jì)數(shù)值帶進(jìn)位循環(huán)右移RCR OPD,計(jì)數(shù)值CFCFCFCFS SH HL LS SA AL L0 00 00 0S SH HR RS SA AR RCFCFCFCFROLROLROLROL(*)當(dāng)移位次數(shù)大于一時(shí),由CL來(lái)計(jì)數(shù)例題:將AL中的的數(shù)乘以10 SAL AL,1 MOV BL,AL MOV CL,2 SAL AL,CL ADD AL,BL測(cè)試題1:假設(shè)(BX)=0E3H,變量VALUE中存放的內(nèi)容為76H,確定下列各條指令單獨(dú)執(zhí)行后的結(jié)果。XOR BX,VALUE ;(BX)= HAND BX,VALUE ;(BX)= HOR BX,VALUE ;(BX)= H

9、XOR BX,0FFH ;(BX)= HAND BX,0 ;(BX)= HTEST BX,01H ;(BX)= H測(cè)試題2:假定(DX)=0B9H,(CL)=3,(CF)=1,確定下列各指令單獨(dú)執(zhí)行后DX中的值。SHR DX,1 ;(DX)= HSAR DX,CL ;(DX)= HSHL DX,CL ;(DX)= HSHL DL,1 ;(DX)= HROR DX,CL ;(DX)= HROL DL,CL ;(DX)= HSAL DH,1 ;(DX)= HRCL DX,CL ;(DX)= HRCR DL,1 ;(DX)= H例題:將BX中的數(shù)變成ASCII碼在屏幕上顯示出來(lái) MOV CH,4LA

10、B:MOV CL,4 ROL BX,CL MOV AL,BL AND AL,OHF ADD AL,30H CMP AL,3AH JL NEXT ADD AL,7NEXT: 顯示操作 DEC CH JNZ LAB四、串處理指令串(字符串) :是指存放在存儲(chǔ)器中的一組字節(jié)數(shù)據(jù)或一組字?jǐn)?shù)據(jù),組成符串的每一個(gè)字節(jié)或字稱為字符串的元素,一個(gè)字符串的長(zhǎng)度最長(zhǎng)64K字節(jié)指令名稱指令助記符串傳送MOVSB(W)串比較CMPSB(W)串掃描 SCASB(W)讀串LODSB(W)寫(xiě)串STOSB(W)無(wú)條件重復(fù)REP相等重復(fù)REPE/REPZ不相等重復(fù)REPNE/REPNZ例題:將偏移地址為1000H開(kāi)始的一百個(gè)內(nèi)

11、存單元中的內(nèi)容按地址增的方向復(fù)制到偏移地址為2000H開(kāi)始的一百個(gè)內(nèi)存單元中去。 MOV SI,1000H MOV DI,2000H MOV CX,64HLAB:MOV AL,SI MOV DI,AL INC SI INC DI DEC CX JNZ LAB用循環(huán)程序?qū)崿F(xiàn)需要做的工作1、源串頭地址2、目的串頭地址(還要知道地址是增還是減)3、計(jì)數(shù)次數(shù)4、傳送5、修改指針6、修改計(jì)數(shù)次數(shù)7、判斷是否結(jié)束8086指令系統(tǒng)提供 五條基本串操作指令 MOVSB(W):ES:DI DS:SI CMPSB(W):DS:SI ES:SI SCASB(W):AC ES:DI LODSB(W):AC DS:SI

12、 STOSB(W):ES:DI AC 三個(gè)重復(fù)前綴指令 REP:CX=0則退出重復(fù) REPE/REPZ: CX=0或ZF=0則退出重復(fù) REPNE/REPNZ: CX=0或ZF 0則退出重復(fù)重復(fù)前綴只與CMPS和SCANS聯(lián)用(1)串操作包括字節(jié)串操作和字串操作。(2)源串的起始地址(或末地址)用DS:SI表示。源串允許使用跨段前綴符來(lái)改變段地址。目的串的起始地址(或末地址)ES:DI表示。目的串不允許用跨段前綴符修改(3)每執(zhí)行一次串操作指令,處理一個(gè)元素,SI和DI的值會(huì)自動(dòng)修改而指向下一待處理的元素,而SI和DI的修改方向與DF標(biāo)志有關(guān)。 (4)當(dāng)DF0時(shí),SI增1(字節(jié)串)或增2(字串

13、) 當(dāng)DF1時(shí),SI減1(字節(jié)串)或減2(字串)。 STD使DF=1,CLD使DF=0。 (5)串長(zhǎng)度應(yīng)放在CX寄存器中。 (6)在基本串操作指令前加重復(fù)前綴符,可使串操作指令重復(fù)執(zhí)行直至整個(gè)串處理完畢,每重復(fù)一次,SI和DI都根據(jù)方向標(biāo)志,自動(dòng)進(jìn)行修改,CX的值自動(dòng)減1。例題: 將數(shù)據(jù)段中的100元素字節(jié)變量VAR1中的內(nèi)容傳送到附加段的變量 VAR2中去。 LEA SI,VAR1 LEA DI,VAR2 MOV CX,64H CLD REP MOVSB串處理指令執(zhí)行前的準(zhǔn)備工作SI和DI放入源和目的串的頭(尾)地址,或者AC中放入數(shù)據(jù)CX中放入初始值建立方向標(biāo)志例題:比較數(shù)據(jù)段中50元素字

14、串VAR1和VAR2是否相同。LEA SI,VAR1LEA DI,VAR2CLDMOV CX,50MOV AX,DSMOV ES,AXREPZ CMPSW 判斷判斷CXCX是否為零是否為零例題:找到附加段中50元素字節(jié)變量VAR中第一個(gè)空格的位置。MOV CX,50LEA DI,VARMOV AL,20HCLD例題:將50元素字節(jié)變量VAR中存放的大寫(xiě)字母字符串轉(zhuǎn)換為小寫(xiě)字母。 MOV CX,50 CLD LEA SI,VAR LEA DI,VAR LAB:LODSB ADD AL,20H STOSB DEC CX JNZ LAB例題:將50元素字變量VAR整體向高地址方向移動(dòng)10個(gè)單元。LE

15、A SI,VARADD SI,49MOV DI,SIADD DI.10STDMOV CX,50REP MOVSB五、控制轉(zhuǎn)移指令指令名稱指令助記符無(wú)條件轉(zhuǎn)移子程序調(diào)用和返回CALL, RETJMP條件轉(zhuǎn)移JO(JNO),JS(JNS),JZ(JNZ),JP(JNP),JC(JNC)JB,JBE,JA,JAEJL,JLE,JG,JGEJZ,JNZ,JCXZ 循環(huán)控制LOOP,LOOPE,LOOPNE中斷和中斷返回INT,INTO,IRET(一)、無(wú)條件轉(zhuǎn)移指令(一)、無(wú)條件轉(zhuǎn)移指令 JMP(二)、條件轉(zhuǎn)移指令(二)、條件轉(zhuǎn)移指令 、單標(biāo)志測(cè)試?yán)}:測(cè)試BL寄存器中的八位二進(jìn)制數(shù)有幾位為一,測(cè)試的

16、結(jié)果存入字節(jié) 變量VAR中。 MOV VAR,0 MOV CX,8LAB:ROL BL,1 JNC NEXT INC VAR10OFJOJNOSFJSJNSZFJZ(JE)JNZ(JNE)PFJPJNPCFJCJNCMOV AL,0INC ALNEXT:DEC CX JNZ LABMOV VAR,AL有(無(wú))符號(hào)數(shù)的比較轉(zhuǎn)移指令(X1-X2)(*)比較兩個(gè)數(shù)的大小應(yīng)在判斷指令之前做一次比較。(*) JCXZ指令一般用在循環(huán)程序中類別助記符測(cè)試條件無(wú)符號(hào)數(shù)JB/JNAEJBE/JNAJA/JNBEJAE/JNBCF=1(CF=1)(ZF=1)CF=0(CF=0)(ZF=1)有符號(hào)數(shù)JL/JNGE

17、JLE/JNGJG/JNLEJGE/JNLSF OF=1(SF OFZF)=1(SF OFZF)=0SF OF=0共用JZ/JEJNZ/JNEZF=1ZF=0三、循環(huán)指令三、循環(huán)指令例題1:求1+2+3+100 MOV AX,0 MOV BX,0 MOV CX,100 LAB:INC BX ADD AX,BX LOOP LAB四、處理機(jī)控制指令四、處理機(jī)控制指令指令助記符循環(huán)退出條件LOOPCX=0LOOPE/LOOPNZCX=0或ZF=0LOOPNE/LOOPNZCX=0或ZF=1CLCCTCCMCCLDSTDCLISTIWAITESCLOCKHLTNOP1、設(shè)100個(gè)16位無(wú)符號(hào)數(shù)存放在2000H開(kāi)始的內(nèi)存中,編寫(xiě)程序求它們的和,把32位的和保存在DX(高位)和AX寄存器中。2、將在BL中的數(shù),對(duì)高4位求反,低4位保持不變。3、編寫(xiě)計(jì)算下列表達(dá)式的指令序列(X*Y+Z-1024)/75 設(shè)X、Y和Z均為16位帶符號(hào)數(shù),分別存放在XXXX、YYYY和ZZZZ的存儲(chǔ)單元中。 結(jié)果商保存在AX中,余數(shù)保存在DX中。4、將AL寄存器中的低四位存放到BL寄存器的低四位,BL寄存器高四位清零。AL 寄存器中的高四位存放到BH寄存器的低

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論