微機(jī)原理及應(yīng)用03_3_第1頁(yè)
微機(jī)原理及應(yīng)用03_3_第2頁(yè)
微機(jī)原理及應(yīng)用03_3_第3頁(yè)
微機(jī)原理及應(yīng)用03_3_第4頁(yè)
微機(jī)原理及應(yīng)用03_3_第5頁(yè)
已閱讀5頁(yè),還剩29頁(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、第3章 80 x86指令系統(tǒng)3.4 8086/8088指令系統(tǒng)3.4.3 邏輯運(yùn)算與移位類(lèi)指令(續(xù))2. 移位類(lèi)指令名稱助記符指令操作數(shù)類(lèi)型操作說(shuō)明Shift Logical leftSHL src,1 SHL src,CLB,W B,Wsrc邏輯左移一位,填0 src邏輯左移CL位,填0Shift Ari-thmetic leftSAL src,1 SAL src,CLB,W B,Wsrc算術(shù)左移一位,填0 src算術(shù)左移CL位,填0Shift Lo-gical RightSHR src,1 SHR src,CLB,W B,Wsrc 邏輯右移一位,填0src 邏輯右移CL位,填0Shift

2、Arith-metic RightSAR src,1 SAR src,ALB,W B,Wsrc算術(shù)右移一位,填符號(hào)src算術(shù)右移CL位,填符號(hào)移位指令操作示意圖CF最高位src0CF最高位src0SAL SHL 由圖可見(jiàn),算術(shù)左移指令與邏輯左移指令的功能完全相同。左移一次,末位補(bǔ)0,相當(dāng)于乘以2。利用移位指令可實(shí)現(xiàn)快速乘法。如:SAL AL,1;相當(dāng)于(AL)(AL)2MOV CL,4SAL AX,CL;相當(dāng)于(AX)(AX)24移位指令操作示意圖CF最高位srcCF最高位src0SARSHR SHR與SAR功能不同,SHR移動(dòng)一次相當(dāng)于無(wú)符號(hào)數(shù)除2運(yùn)算,而SAR移動(dòng)一次相當(dāng)于帶符號(hào)數(shù)除2運(yùn)算

3、。因而,可用右移指令實(shí)現(xiàn)快速除法運(yùn)算。3. 循環(huán)移位指令名稱助記符指令操作數(shù)類(lèi)型操作說(shuō)明Rotate leftROL src,1 ROL src,CLB,W B,W循環(huán)左/右移位不通過(guò)CFRotate RightROR src,1 ROR src,CLB,W B,WRotate left though carryRCL src,1 RCL src,CLB,W B,W循環(huán)左/右移位通過(guò)CFRotate right though carryRCR src,1 RCR src,ALB,W B,W循環(huán)移位指令操作示意圖CF最高位srcCF最高位srcCF最高位srcCF最高位src0ROLRCLROR

4、RCR 不含進(jìn)位循環(huán)移位指令又稱小循環(huán),含進(jìn)位循環(huán)移位指令又稱大循環(huán)。例:SALAX,1RCL DX,1;實(shí)現(xiàn)(DX),(AX)(DX),(AX)2運(yùn)算。例:SALFIRSTWORD,1RCL SECONDWORD,1;可實(shí)現(xiàn)存于連續(xù)兩個(gè)存儲(chǔ)單元的32位數(shù)據(jù)2。 從示意圖,可以看出所有移位指令對(duì)CF直接有影響,對(duì)其余標(biāo)志位也有影響。但對(duì)AF的影響無(wú)實(shí)際意義。3.4.4 串操作(String Manipulation)類(lèi)指令操作類(lèi)型串傳送指令MOVS dst,src MOVSB MOVSW(ES:DI) (DS:SI) ,DF=0:+ (SI)(SI), (SI)(SI) 字節(jié)傳送 1,字傳送

5、2串比較指令CMPS dst,src CMPSB CMPSW(DS:SI)(ES:DI) 建立標(biāo)志(其余同上)串搜索指令SCANS dst SCANSB SCANSW(AX)(ES:DI) 建立標(biāo)志(其余同上)取字符串指令LODS src LODSB LODSW(AX)(DS:SI) 建立標(biāo)志(其余同上)存字符串指令STOS dst STOSB STOSW((ES:D I)) (AX) 建立標(biāo)志(其余同上)助記符指令名稱B,W B WB,W B WB,W B WB,W B WB,W B W操作說(shuō)明重復(fù)前綴助記符與功能助記符格式功能說(shuō)明REP MOVS 或REP STOS 當(dāng)(CX)0時(shí),重復(fù)執(zhí)

6、行MOVS(或STOS),(CX)(CX)1REPE CMPS 或REPZ CMPS REPE SCAS 或REPZ SCAS 當(dāng)(CX)0,且ZF1時(shí),重復(fù)執(zhí)行CMPS(或SCAS),(CX)(CX)1。REPNE CMPS 或REPNZ CMPS REPNE SCAS 或REPNZ SCAS當(dāng)(CX)0,且ZF0時(shí),重復(fù)執(zhí)行CMPS(或SCAS),(CX)(CX)1。串傳送指令應(yīng)用例:將DS:AREA1開(kāi)始存放的100個(gè)字節(jié)搬到ES:AREA2為首趾的區(qū)域中。MOVSI,OFFSET AREA1MOVDI,OFFSET AREA2MOVCX,100AGAIN:MOVSAREA2,AREA1

7、DECCXJNZAGAIN 方框中的3條指令可用一條帶前綴的指令完成:REPMOVSAREA2,AREA1例:比較DS段和ES段中的兩個(gè)字節(jié)串。它們分別存放在DS:FLAGS和ES:STATUS開(kāi)始的單元中。長(zhǎng)度5,試比較二者是否相同,如不同,把不同時(shí)位置,記入DS:POINT單元。LEA SI,FLAGSLEA DI,STATUSMOV CX,5REPE CMPSBJNEFOUTDSAME:RETFOUTD:INCCXMOV WORD PTR POINT,CXRET串比較指令應(yīng)用串搜索指令應(yīng)用例:AL存放收到字符,DS:COMMAND開(kāi)始的16個(gè)單元,存放“012DEF”16個(gè)ASCCII字

8、符命令串。若AL收到的字符與其中的某個(gè)相同則顯示,否則出錯(cuò)處理。MOVDI,OFFSET COMMANDMOVBX,DSMOVES,BXCLDMOVCX,10HREPNZSANSBJNZERROR顯示子程序ERROR:RET 存字符串指令應(yīng)用例:將ES段中04000500H單元清0 。;LEADI,0400HMOVCX,0080HCLDXORAX,AXREPSTRSW 取字符串指令應(yīng)用 因?yàn)锳L(或AX)中的內(nèi)容會(huì)被最后取入的字符覆蓋,所以 LODS 指令不能加重復(fù)前綴。3.4.5 控制轉(zhuǎn)移(Contronl Jump)類(lèi)指令無(wú)條件轉(zhuǎn)移(Jump)調(diào)用(CALL)和返回(RETURN)類(lèi)指令條

9、件轉(zhuǎn)移指令循環(huán)控制指令中斷及中斷返回指令1.無(wú)條件轉(zhuǎn)移調(diào)用和返回指令(1)無(wú)條件轉(zhuǎn)移指令(JMP) 段內(nèi)直接尋址(Intrasegment Direct Addressing) 近程轉(zhuǎn)移: JMP NEAR PTR TAGET;位移量位16位帶符號(hào)數(shù),尋址范圍3276832767。 短程轉(zhuǎn)移:JMP SHORT OBJECT;位移量8位的帶符號(hào)數(shù),尋址范圍128127 注:無(wú)論是近程轉(zhuǎn)移,還是短程轉(zhuǎn)移,都不能全部尋址段內(nèi)全部64KB目的地址可省略 段內(nèi)間接尋址(Intrasegment Indirect Addressing)JMPBX;EA(BX)JMPWORD PTRSI 如果(DS)=2

10、000H,(BX)=1200H,(SI)=5230H,存儲(chǔ)單元(25230H)=2450H。 則JMP BX 執(zhí)行后,EA(IP)(BX)=1200H,JMP WORD PTRSI 執(zhí)行后,EA(IP)(16(DS)+(SI))=(20000H5230H)(25230H)2540H 地址的內(nèi)容 段間直接尋址(Intersegment Direct Addressing )又稱遠(yuǎn)程轉(zhuǎn)移指令,指令格式為:JMP FAR PTR LABEL操作是:(IP)LABEL距另一段首地址偏移量, (CS)轉(zhuǎn)向地址的段地址。 段間間接尋址(Intersegment Indirect Addressing)例如

11、:JMP DWORD PTRBXSI操作:(IP)(BX)(SI), (CS)(BX)(SI)2)。轉(zhuǎn)移地址的符號(hào)段間轉(zhuǎn)移運(yùn)算符(2)調(diào)用指令 CALL指令格式為:CALLdst 操作包括: (SP)(SP)2(SP+1),(SP)(CS) (CS)SEG (SP)(SP)2(SP+1),(SP)(IP) (IP) dst段間調(diào)用段內(nèi)調(diào)用各種調(diào)用指令的格式CALL NEAR PTR ROUTCALL 1000HCALL BXCALL 2500H:1400HCALL FAR PTR SUBRCALL DWORD PTRDI段內(nèi)直接調(diào)用段內(nèi)間接調(diào)用段間直接調(diào)用段間間接調(diào)用(3)返回指令 RET格式

12、:RET Optionalpopvalue操作: (IP)(SP1),(SP) (SP)(SP)+2 (CS)(SP1),(SP) (SP)(SP)+2RET 指令還可以帶立即數(shù)n,如RET 4。作用是在返回地址出棧后,(SP)(SP)4。用途:帶參數(shù)過(guò)程(子程序)完成后,釋放??臻g。段內(nèi)返回段間返回由與之相配的CALL 中的屬性決定例:MOV SP,01FEH04F0CALL MYPROG04F3 NEXT:MOVAX,BX0500 MYPROG PROC0500 MOV CL,6 051ERET051F MYPROG ENDP01FE04F3M01F801FA01FC01FESPIP執(zhí)行調(diào)

13、用前例:MOV SP,01FEH04F0CALL MYPROG04F3 NEXT:MOVAX,BX0500 MYPROG PROC0500 MOV CL,6 051ERET051F MYPROG ENDP01FC0500M01F801FA01FC01FESPIPF304執(zhí)行調(diào)用之后例:MOV SP,01FEH04F0CALL MYPROG04F3 NEXT:MOVAX,BX0500 MYPROG PROC0500 MOV CL,6 051ERET051F MYPROG ENDP01FE04F3M01F801FA01FC01FESPIP執(zhí)行返回后2. 條件轉(zhuǎn)移指令 格式:JCC TargetCC

14、成立?(IP)Target(IP)(IP)2JCC TargetNY條件轉(zhuǎn)移指令的分類(lèi)(1)根據(jù)單個(gè)標(biāo)志條件進(jìn)行測(cè)試,作為轉(zhuǎn)移的依據(jù):(2)根據(jù)標(biāo)志間的組合條件進(jìn)行測(cè)試,轉(zhuǎn)移的依據(jù):(3)根據(jù)CX寄存器值進(jìn)行測(cè)試,作為轉(zhuǎn)移的依據(jù)。(1)單個(gè)標(biāo)志為條件測(cè)試轉(zhuǎn)移指令指令助記符格式條件說(shuō)明測(cè)試標(biāo)志JZ/JE Target結(jié)果為0ZF=1JNZ/JNE Target結(jié)果不為0ZF=0JS Target結(jié)果為負(fù)SF=1JNS Target結(jié)果為正SF=0JP/JPE Target結(jié)果低8位1個(gè)數(shù)為偶數(shù)PF=1JNP/JPO Target結(jié)果低8位1個(gè)數(shù)為奇數(shù)PF=0JO Target結(jié)果溢出OF=1JN

15、O Target 結(jié)果未溢出OF=0JB/JNAE/JC Target結(jié)果低于(無(wú)符號(hào))CF=1JNB/JAE/JNC Target結(jié)果不低于(無(wú)符號(hào))CF=0(2)根據(jù)標(biāo)志間組合條件測(cè)試轉(zhuǎn)移指令條件說(shuō)明測(cè)試標(biāo)志CFZF1(CF0)(ZF0)結(jié)果小于(帶符號(hào))指令助記符格式JBE/JNA TargetJNBE/JA TargetJL/JNGE TargetJNL/JGE TargetJLE/JNG TargetJNLE/JG Target結(jié)果不高于(無(wú)符號(hào))結(jié)果高于(無(wú)符號(hào))教科書(shū)有錯(cuò)誤結(jié)果不小于(帶符號(hào))結(jié)果不大于(帶符號(hào))結(jié)果大于(帶符號(hào))(SF OF)=1(SF OF)=0(SF OF)

16、ZF=1(SF OF)ZF=0(3)根據(jù)對(duì)CX寄存器值進(jìn)行測(cè)試為轉(zhuǎn)移依據(jù)指令指令格式:JCXZTarget(IP)Target(IP)(IP)2(CX)=0?N Y3. 循環(huán)控制指令(1)LOOP 指令格式:LOOPSHORTlabel功能:(CX)(CX)1,(CX)0時(shí)轉(zhuǎn)到label,否則執(zhí)行下一條指令。(2)LOOPZ/LOOPE 指令格式: LOOPZ/LOOPE SHORTlabel功能:(CX)(CX)1, (CX)0且ZF1時(shí),轉(zhuǎn)到label,否則執(zhí)行下一條指令。注:(CX)=0不影響ZF。(3)LOOPNZ/LOOPNE 指令格式: LOOPNZ/LOOPNE SHORTlab

17、el功能:(CX)(CX)1, (CX)0且ZF0時(shí),轉(zhuǎn)到label,否則執(zhí)行下一條指令。注:(CX)=0不影響ZF。例:計(jì)算兩個(gè)字節(jié)數(shù)組ARRAY1和ARRAY2之和,若遇到兩個(gè)數(shù)組中的項(xiàng)同時(shí)為0,結(jié)束,并把非0數(shù)組長(zhǎng)度存于NO單元。MOVAL,0MOVSI,1MOVCX,8NONZERO:INCSIMOVAL,ARRAY1SIADDAL,ARRAY2SIMOVSUMSI,ALLOOPNZNONZEROJZORENTRYZERO:RETORENTRY:INCCXMOVWORD PTRNO,CXJMPZERO3.4.6 處理器控制(Processor Control)指令名稱助記符指令功能進(jìn)位標(biāo)志清0CLCCF0進(jìn)位

溫馨提示

  • 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)論