




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第3章 80 x86指令系統(tǒng)3.4 8086/8088指令系統(tǒng)3.4.3 邏輯運算與移位類指令(續(xù))2. 移位類指令名稱助記符指令操作數(shù)類型操作說明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算術左移一位,填0 src算術左移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算術右移一位,填符號src算術右移CL位,填符號移位指令操作示意圖CF最高位src0CF最高位src0SAL SHL 由圖可見,算術左移指令與邏輯左移指令的功能完全相同。左移一次,末位補0,相當于乘以2。利用移位指令可實現(xiàn)快速乘法。如:SAL AL,1;相當于(AL)(AL)2MOV CL,4SAL AX,CL;相當于(AX)(AX)24移位指令操作示意圖CF最高位srcCF最高位src0SARSHR SHR與SAR功能不同,SHR移動一次相當于無符號數(shù)除2運算,而SAR移動一次相當于帶符號數(shù)除2運算
3、。因而,可用右移指令實現(xiàn)快速除法運算。3. 循環(huán)移位指令名稱助記符指令操作數(shù)類型操作說明Rotate leftROL src,1 ROL src,CLB,W B,W循環(huán)左/右移位不通過CFRotate RightROR src,1 ROR src,CLB,W B,WRotate left though carryRCL src,1 RCL src,CLB,W B,W循環(huán)左/右移位通過CFRotate right though carryRCR src,1 RCR src,ALB,W B,W循環(huán)移位指令操作示意圖CF最高位srcCF最高位srcCF最高位srcCF最高位src0ROLRCLROR
4、RCR 不含進位循環(huán)移位指令又稱小循環(huán),含進位循環(huán)移位指令又稱大循環(huán)。例:SALAX,1RCL DX,1;實現(xiàn)(DX),(AX)(DX),(AX)2運算。例:SALFIRSTWORD,1RCL SECONDWORD,1;可實現(xiàn)存于連續(xù)兩個存儲單元的32位數(shù)據(jù)2。 從示意圖,可以看出所有移位指令對CF直接有影響,對其余標志位也有影響。但對AF的影響無實際意義。3.4.4 串操作(String Manipulation)類指令操作類型串傳送指令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) 建立標志(其余同上)串搜索指令SCANS dst SCANSB SCANSW(AX)(ES:DI) 建立標志(其余同上)取字符串指令LODS src LODSB LODSW(AX)(DS:SI) 建立標志(其余同上)存字符串指令STOS dst STOSB STOSW((ES:D I)) (AX) 建立標志(其余同上)助記符指令名稱B,W B WB,W B WB,W B WB,W B WB,W B W操作說明重復前綴助記符與功能助記符格式功能說明REP MOVS 或REP STOS 當(CX)0時,重復執(zhí)
6、行MOVS(或STOS),(CX)(CX)1REPE CMPS 或REPZ CMPS REPE SCAS 或REPZ SCAS 當(CX)0,且ZF1時,重復執(zhí)行CMPS(或SCAS),(CX)(CX)1。REPNE CMPS 或REPNZ CMPS REPNE SCAS 或REPNZ SCAS當(CX)0,且ZF0時,重復執(zhí)行CMPS(或SCAS),(CX)(CX)1。串傳送指令應用例:將DS:AREA1開始存放的100個字節(jié)搬到ES:AREA2為首趾的區(qū)域中。MOVSI,OFFSET AREA1MOVDI,OFFSET AREA2MOVCX,100AGAIN:MOVSAREA2,AREA1
7、DECCXJNZAGAIN 方框中的3條指令可用一條帶前綴的指令完成:REPMOVSAREA2,AREA1例:比較DS段和ES段中的兩個字節(jié)串。它們分別存放在DS:FLAGS和ES:STATUS開始的單元中。長度5,試比較二者是否相同,如不同,把不同時位置,記入DS:POINT單元。LEA SI,FLAGSLEA DI,STATUSMOV CX,5REPE CMPSBJNEFOUTDSAME:RETFOUTD:INCCXMOV WORD PTR POINT,CXRET串比較指令應用串搜索指令應用例:AL存放收到字符,DS:COMMAND開始的16個單元,存放“012DEF”16個ASCCII字
8、符命令串。若AL收到的字符與其中的某個相同則顯示,否則出錯處理。MOVDI,OFFSET COMMANDMOVBX,DSMOVES,BXCLDMOVCX,10HREPNZSANSBJNZERROR顯示子程序ERROR:RET 存字符串指令應用例:將ES段中04000500H單元清0 。;LEADI,0400HMOVCX,0080HCLDXORAX,AXREPSTRSW 取字符串指令應用 因為AL(或AX)中的內(nèi)容會被最后取入的字符覆蓋,所以 LODS 指令不能加重復前綴。3.4.5 控制轉(zhuǎn)移(Contronl Jump)類指令無條件轉(zhuǎn)移(Jump)調(diào)用(CALL)和返回(RETURN)類指令條
9、件轉(zhuǎn)移指令循環(huán)控制指令中斷及中斷返回指令1.無條件轉(zhuǎn)移調(diào)用和返回指令(1)無條件轉(zhuǎn)移指令(JMP) 段內(nèi)直接尋址(Intrasegment Direct Addressing) 近程轉(zhuǎn)移: JMP NEAR PTR TAGET;位移量位16位帶符號數(shù),尋址范圍3276832767。 短程轉(zhuǎn)移:JMP SHORT OBJECT;位移量8位的帶符號數(shù),尋址范圍128127 注:無論是近程轉(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,存儲單元(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 )又稱遠程轉(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)移地址的符號段間轉(zhuǎ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ù)過程(子程序)完成后,釋放??臻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)移指令的分類(1)根據(jù)單個標志條件進行測試,作為轉(zhuǎn)移的依據(jù):(2)根據(jù)標志間的組合條件進行測試,轉(zhuǎn)移的依據(jù):(3)根據(jù)CX寄存器值進行測試,作為轉(zhuǎn)移的依據(jù)。(1)單個標志為條件測試轉(zhuǎn)移指令指令助記符格式條件說明測試標志JZ/JE Target結果為0ZF=1JNZ/JNE Target結果不為0ZF=0JS Target結果為負SF=1JNS Target結果為正SF=0JP/JPE Target結果低8位1個數(shù)為偶數(shù)PF=1JNP/JPO Target結果低8位1個數(shù)為奇數(shù)PF=0JO Target結果溢出OF=1JN
15、O Target 結果未溢出OF=0JB/JNAE/JC Target結果低于(無符號)CF=1JNB/JAE/JNC Target結果不低于(無符號)CF=0(2)根據(jù)標志間組合條件測試轉(zhuǎn)移指令條件說明測試標志CFZF1(CF0)(ZF0)結果小于(帶符號)指令助記符格式JBE/JNA TargetJNBE/JA TargetJL/JNGE TargetJNL/JGE TargetJLE/JNG TargetJNLE/JG Target結果不高于(無符號)結果高于(無符號)教科書有錯誤結果不小于(帶符號)結果不大于(帶符號)結果大于(帶符號)(SF OF)=1(SF OF)=0(SF OF)
16、ZF=1(SF OF)ZF=0(3)根據(jù)對CX寄存器值進行測試為轉(zhuǎn)移依據(jù)指令指令格式:JCXZTarget(IP)Target(IP)(IP)2(CX)=0?N Y3. 循環(huán)控制指令(1)LOOP 指令格式:LOOPSHORTlabel功能:(CX)(CX)1,(CX)0時轉(zhuǎn)到label,否則執(zhí)行下一條指令。(2)LOOPZ/LOOPE 指令格式: LOOPZ/LOOPE SHORTlabel功能:(CX)(CX)1, (CX)0且ZF1時,轉(zhuǎn)到label,否則執(zhí)行下一條指令。注:(CX)=0不影響ZF。(3)LOOPNZ/LOOPNE 指令格式: LOOPNZ/LOOPNE SHORTlab
17、el功能:(CX)(CX)1, (CX)0且ZF0時,轉(zhuǎn)到label,否則執(zhí)行下一條指令。注:(CX)=0不影響ZF。例:計算兩個字節(jié)數(shù)組ARRAY1和ARRAY2之和,若遇到兩個數(shù)組中的項同時為0,結束,并把非0數(shù)組長度存于NO單元。MOVAL,0MOVSI,1MOVCX,8NONZERO:INCSIMOVAL,ARRAY1SIADDAL,ARRAY2SIMOVSUMSI,ALLOOPNZNONZEROJZORENTRYZERO:RETORENTRY:INCCXMOVWORD PTRNO,CXJMPZERO3.4.6 處理器控制(Processor Control)指令名稱助記符指令功能進位標志清0CLCCF0進位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廠房出租合同(含金融融資支持)
- 2025年度車輛進出口損害賠償協(xié)議范本
- 2025房產(chǎn)中介合伙人投資合作及退出機制合同
- 2025年理發(fā)、美容服務項目建議書
- 提高護理文書書寫規(guī)范的實施措施計劃
- 倉庫節(jié)能降耗工作的總結與展望計劃
- 新年自我反思與成長計劃
- 創(chuàng)造多元環(huán)境培養(yǎng)幼兒園小班的藝術表達能力計劃
- 調(diào)整工作節(jié)奏的方法計劃
- 經(jīng)驗教訓與未來目標的思考計劃
- 部編版二年級下冊語文教案全冊
- 解放牌汽車CA10B后鋼板彈簧吊耳加工工藝及夾具設計哈
- 高中地理高清區(qū)域地理填圖冊
- 培根鑄魂征文800字
- 連續(xù)梁0號塊施工課件
- 旋挖鉆機入場安全教育記錄
- 第二章直線和圓的方程(單元測試卷)(原卷版)
- 第二篇-安全操作規(guī)程
- 罪犯教育學課程
- 紀檢監(jiān)察辦案談話應注意的問題研討
- 落實國家組織藥品集中采購使用檢測和應急預案
評論
0/150
提交評論