版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章80x86指令系統(tǒng)3.48086/8088指令系統(tǒng)3.4.3邏輯運(yùn)算與移位類指令(續(xù))2.移位類指令名稱助記符指令操作數(shù)類型操作說明ShiftLogicalleftSHLsrc,1SHLsrc,CLB,WB,Wsrc邏輯左移一位,填0
src邏輯左移CL位,填0ShiftAri-thmeticleftSALsrc,1SALsrc,CLB,WB,Wsrc算術(shù)左移一位,填0src算術(shù)左移CL位,填0ShiftLo-gicalRightSHRsrc,1SHRsrc,CLB,WB,Wsrc邏輯右移一位,填0src邏輯右移CL位,填0ShiftArith-meticRightSARsrc,1SARsrc,ALB,WB,Wsrc算術(shù)右移一位,填符號(hào)src算術(shù)右移CL位,填符號(hào)移位指令操作示意圖CF最高位src0CF最高位src0SALSHL由圖可見,算術(shù)左移指令與邏輯左移指令的功能完全相同。左移一次,末位補(bǔ)0,相當(dāng)于乘以2。利用移位指令可實(shí)現(xiàn)快速乘法。如: SALAL,1;相當(dāng)于(AL)←(AL)×2 MOV CL,4 SAL AX,CL;相當(dāng)于(AX)←(AX)×24移位指令操作示意圖CF最高位srcCF最高位src0SARSHRSHR與SAR功能不同,SHR移動(dòng)一次相當(dāng)于無符號(hào)數(shù)除2運(yùn)算,而SAR移動(dòng)一次相當(dāng)于帶符號(hào)數(shù)除2運(yùn)算。因而,可用右移指令實(shí)現(xiàn)快速除法運(yùn)算。3.循環(huán)移位指令名稱助記符指令操作數(shù)類型操作說明RotateleftROLsrc,1ROLsrc,CLB,WB,W循環(huán)左/右移位不通過CFRotateRightRORsrc,1RORsrc,CLB,WB,WRotateleftthoughcarryRCLsrc,1RCLsrc,CLB,WB,W循環(huán)左/右移位通過CFRotaterightthoughcarryRCRsrc,1RCRsrc,ALB,WB,W循環(huán)移位指令操作示意圖CF最高位srcCF最高位srcCF最高位srcCF最高位src0ROLRCLRORRCR不含進(jìn)位循環(huán)移位指令又稱小循環(huán),含進(jìn)位循環(huán)移位指令又稱大循環(huán)。例:SAL AX,1 RCLDX,1;實(shí)現(xiàn)(DX),(AX)←(DX),(AX)×2運(yùn)算。例:SAL FIRST-WORD,1 RCL SECOND-WORD,1;可實(shí)現(xiàn)存于連續(xù)兩個(gè)存儲(chǔ)單元的32位數(shù)據(jù)×2。從示意圖,可以看出所有移位指令對(duì)CF直接有影響,對(duì)其余標(biāo)志位也有影響。但對(duì)AF的影響無實(shí)際意義。3.4.4串操作(StringManipulation)類指令操作類型串傳送指令MOVSdst,srcMOVSBMOVSW((ES:DI))←((DS:SI)),DF=0:+(SI)←(SI)±Δ,(SI)←(SI)±Δ字節(jié)傳送Δ=1,字傳送Δ=2串比較指令CMPSdst,srcCMPSBCMPSW((DS:SI))-((ES:DI))建立標(biāo)志(其余同上)串搜索指令SCANSdstSCANSBSCANSW(AX)-((ES:DI))建立標(biāo)志(其余同上)取字符串指令LODSsrcLODSBLODSW(AX)←((DS:SI))建立標(biāo)志(其余同上)存字符串指令STOSdstSTOSBSTOSW((ES:DI))→(AX)建立標(biāo)志(其余同上)助記符指令名稱B,WBWB,WBWB,WBWB,WBWB,WBW操作說明重復(fù)前綴助記符與功能助記符格式功能說明REPMOVS或REPSTOS當(dāng)(CX)≠0時(shí),重復(fù)執(zhí)行MOVS(或STOS),(CX)←(CX)-1REPECMPS或REPZCMPS
REPESCAS或REPZSCAS
當(dāng)(CX)≠0,且ZF=1時(shí),重復(fù)執(zhí)行CMPS(或SCAS),(CX)←(CX)-1。REPNECMPS或REPNZCMPS
REPNESCAS或REPNZSCAS當(dāng)(CX)≠0,且ZF=0時(shí),重復(fù)執(zhí)行CMPS(或SCAS),(CX)←(CX)-1。串傳送指令應(yīng)用例:將DS:AREA1開始存放的100個(gè)字節(jié)搬到ES:AREA2為首趾的區(qū)域中。
MOV SI,OFFSETAREA1 MOV DI,OFFSETAREA2 MOV CX,100AGAIN:MOVS AREA2,AREA1 DEC CX JNZ AGAIN方框中的3條指令可用一條帶前綴的指令完成:
REP MOVS AREA2,AREA1例:比較DS段和ES段中的兩個(gè)字節(jié)串。它們分別存放在DS:FLAGS和ES:STATUS開始的單元中。長度=5,試比較二者是否相同,如不同,把不同時(shí)位置,記入DS:POINT單元。
LEA SI,FLAGS LEA DI,STATUS MOV CX,5 REPE CMPSB JNE FOUTDSAME: RETFOUTD: INC CX MOV WORDPTRPOINT,CX RET 串比較指令應(yīng)用串搜索指令應(yīng)用例:AL存放收到字符,DS:COMMAND開始的16個(gè)單元,存放“012┉DEF”16個(gè)ASCCII字符命令串。若AL收到的字符與其中的某個(gè)相同則顯示,否則出錯(cuò)處理。
MOV DI,OFFSETCOMMAND MOV BX,DS MOV ES,BX CLD MOV CX,10H REPNZ SANSB JNZ ERROR
顯示子程序ERROR: RET存字符串指令應(yīng)用例:將ES段中0400~0500H單元清0。;
LEA DI,[0400H] MOV CX,0080H CLD XOR AX,AX REP STRSW取字符串指令應(yīng)用
因?yàn)锳L(或AX)中的內(nèi)容會(huì)被最后取入的字符覆蓋,所以LODS指令不能加重復(fù)前綴。3.4.5控制轉(zhuǎn)移(ContronlJump)類指令無條件轉(zhuǎn)移(Jump)調(diào)用(CALL)和返回(RETURN)類指令條件轉(zhuǎn)移指令循環(huán)控制指令中斷及中斷返回指令1.無條件轉(zhuǎn)移調(diào)用和返回指令(1)無條件轉(zhuǎn)移指令(JMP)①段內(nèi)直接尋址(IntrasegmentDirectAddressing)近程轉(zhuǎn)移:
JMPNEARPTR
TAGET;位移量位16位帶符號(hào)數(shù),尋址范圍-32768~+32767。短程轉(zhuǎn)移:JMPSHORTOBJECT;位移量8位的帶符號(hào)數(shù),尋址范圍-128~+127注:無論是近程轉(zhuǎn)移,還是短程轉(zhuǎn)移,都不能全部尋址段內(nèi)全部64KB目的地址可省略②段內(nèi)間接尋址(IntrasegmentIndirectAddressing)
JMP BX;EA=(BX)
JMP WORDPTR[SI]如果(DS)=2000H,(BX)=1200H,(SI)=5230H,存儲(chǔ)單元(25230H)=2450H。則JMPBX執(zhí)行后,EA=(IP)=(BX)=1200H,JMPWORDPTR[SI] 執(zhí)行后,EA=(IP)=(16×(DS)+(SI))=(20000H+5230H)=(25230H)=2540H
地址的內(nèi)容③段間直接尋址(IntersegmentDirectAddressing)又稱遠(yuǎn)程轉(zhuǎn)移指令,指令格式為:
JMP FAR PTR
LABEL操作是:(IP)←LABEL距另一段首地址偏移量,(CS)←轉(zhuǎn)向地址的段地址。④段間間接尋址(IntersegmentIndirectAddressing)例如:JMPDWORDPTR[BX][SI]操作:(IP)←((BX)+(SI)),(CS)←((BX)+(SI)+2)。轉(zhuǎn)移地址的符號(hào)段間轉(zhuǎn)移運(yùn)算符(2)調(diào)用指令CALL指令格式為:
CALL dst操作包括:①(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)用指令的格式CALLNEARPTRROUTCALL1000HCALLBXCALL2500H:1400HCALLFARPTRSUBRCALLDWORDPTR[DI]段內(nèi)直接調(diào)用段內(nèi)間接調(diào)用段間直接調(diào)用段間間接調(diào)用(3)返回指令RET格式:RETOptional-pop-value操作:①(IP)←((SP+1),(SP)) ②(SP)←(SP)+2 ③(CS)←((SP+1),(SP)) ④(SP)←(SP)+2RET指令還可以帶立即數(shù)n,如RET4。作用是在返回地址出棧后,(SP)←(SP)+4。用途:帶參數(shù)過程(子程序)完成后,釋放棧空間。段內(nèi)返回段間返回由與之相配的CALL中的屬性決定例:
MOV SP,01FEH ┋04F0 CALL MY-PROG04F3 NEXT:MOV AX,BX ┋0500 MY-PROG PROC0500 MOV CL,6 ┋051E RET051F MY-PROG ENDP01FE04F3M┋01F801FA01FC01FESPIP執(zhí)行調(diào)用前例:
MOV SP,01FEH ┋04F0 CALL MY-PROG04F3 NEXT:MOV AX,BX ┋0500 MY-PROG PROC0500 MOV CL,6 ┋051E RET051F MY-PROG ENDP01FC0500M┋01F801FA01FC01FESPIPF304執(zhí)行調(diào)用之后例:
MOV SP,01FEH ┋04F0 CALL MY-PROG04F3 NEXT:MOV AX,BX ┋0500 MY-PROG PROC0500 MOV CL,6 ┋051E RET051F MY-PROG ENDP01FE04F3M┋01F801FA01FC01FESPIP執(zhí)行返回后2.條件轉(zhuǎn)移指令
格式:JCCTargetCC成立?(IP)←Target(IP)←(IP)+2JCCTargetNY條件轉(zhuǎn)移指令的分類(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)移指令指令助記符格式條件說明測(cè)試標(biāo)志JZ/JETarget結(jié)果為0ZF=1JNZ/JNETarget結(jié)果不為0ZF=0JSTarget結(jié)果為負(fù)SF=1JNSTarget結(jié)果為正SF=0JP/JPETarget結(jié)果低8位1個(gè)數(shù)為偶數(shù)PF=1JNP/JPOTarget結(jié)果低8位1個(gè)數(shù)為奇數(shù)PF=0JOTarget結(jié)果溢出OF=1JNOTarget結(jié)果未溢出OF=0JB/JNAE/JCTarget結(jié)果低于(無符號(hào))CF=1JNB/JAE/JNCTarget結(jié)果不低于(無符號(hào))CF=0(2)根據(jù)標(biāo)志間組合條件測(cè)試轉(zhuǎn)移指令條件說明測(cè)試標(biāo)志CF∨ZF=1(CF=0)∧(ZF=0)結(jié)果小于(帶符號(hào))指令助記符格式JBE/JNATargetJNBE/JATargetJL/JNGETargetJNL/JGETargetJLE/JNGTargetJNLE/JGTarget結(jié)果不高于(無符號(hào))結(jié)果高于(無符號(hào))教科書有錯(cuò)誤結(jié)果不小于(帶符號(hào))結(jié)果不大于(帶符號(hào))結(jié)果大于(帶符號(hào))(SF⊕OF)=1(SF⊕OF)=0(SF⊕OF)∨ZF=1(SF⊕OF)∨ZF=0(3)根據(jù)對(duì)CX寄存器值進(jìn)行測(cè)試為轉(zhuǎn)移依據(jù)指令指令格式:JCXZ Target(IP)←Target(IP)←(IP)+2(CX)=0?NY3.循環(huán)控制指令(1)LOOP指令格式:LOOP SHORT-label功能:(CX)←(CX)-1,(CX)≠0時(shí)轉(zhuǎn)到label,否則執(zhí)行下一條指令。(2)LOOPZ/LOOPE指令格式:LOOPZ/LOOPE SHORT-label功能:(CX)←(CX)-1,(CX)≠0且ZF=1時(shí),轉(zhuǎn)到label,否則執(zhí)行下一條指令。注:(CX)=0不影響ZF。(3)LOOPNZ/LOOPNE指令格式:LOOPNZ/LOOPNESHORT-label功能:(CX)←(CX)-1,(CX)≠0且ZF=0時(shí),轉(zhuǎn)到label,否則執(zhí)行下一條指令。注:(CX)=0不影響ZF。例:計(jì)算兩個(gè)字節(jié)數(shù)組ARRAY1和ARRAY2之和,若遇到兩個(gè)數(shù)組中的項(xiàng)同時(shí)為0,結(jié)束,并把非0數(shù)組長度存于NO單元。
MOV AL,0 MOV SI,-1 MOV CX,8NONZERO: INC SI MOV AL,ARRAY1[SI] ADD AL,ARRAY
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版圖書產(chǎn)品試用及讀者評(píng)價(jià)協(xié)議3篇
- 2025年變電站電氣設(shè)備絕緣試驗(yàn)與安裝合同3篇
- 2024年魚苗供需協(xié)議2篇
- 2025年度石場(chǎng)開采與地質(zhì)勘探承包合同3篇
- 2025年文創(chuàng)商業(yè)街出售合同3篇
- 2024版鉆井工程承包合同范本
- 二零二五年度重點(diǎn)區(qū)域安全保衛(wèi)外包專項(xiàng)合同2篇
- 2024版畫室租賃與創(chuàng)作分成合同版B版
- 二零二五年度城市綠化工程承包管理協(xié)議2篇
- 2024科技公司股東之間股權(quán)轉(zhuǎn)讓協(xié)議
- 財(cái)務(wù)機(jī)器人技術(shù)在會(huì)計(jì)工作中的應(yīng)用
- 《保單檢視專題》課件
- 建筑保溫隔熱構(gòu)造
- 智慧財(cái)務(wù)綜合實(shí)訓(xùn)
- 安徽省合肥市2021-2022學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)3
- 教育專家報(bào)告合集:年度得到:沈祖蕓全球教育報(bào)告(2023-2024)
- 肝臟腫瘤護(hù)理查房
- 護(hù)士工作壓力管理護(hù)理工作中的壓力應(yīng)對(duì)策略
- 2023年日語考試:大學(xué)日語六級(jí)真題模擬匯編(共479題)
- 皮帶拆除安全技術(shù)措施
- ISO9001(2015版)質(zhì)量體系標(biāo)準(zhǔn)講解
評(píng)論
0/150
提交評(píng)論