版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
3.2.3邏輯指令
邏輯指令包括邏輯運(yùn)算指令和移位指令。由于它們都是按位進(jìn)行操作的,故又稱位操作指令。邏輯指令以二進(jìn)制位為基本單位進(jìn)行數(shù)據(jù)運(yùn)算,屬于常用指令,應(yīng)該熟練掌握。要特別注意這些指令對標(biāo)志位的影響。1、邏輯運(yùn)算指令A(yù)ND
OR
XOR
NOT
TEST2、移位指令SHL
SHR
SAR3、循環(huán)移位指令ROL
ROR
RCL
RCR2/5/20231邏輯非指令NOT指令格式:NOTOPR指令功能:本指令將給定的操作數(shù)按位求反,且不影響標(biāo)志位。
NOTreg/mem
;reg/mem←~reg/mem2/5/20232邏輯或指令OR
指令格式:ORDST,SRC指令功能:本指令將源操作數(shù)與目標(biāo)操作數(shù)按位進(jìn)行邏輯“或”運(yùn)算并將結(jié)果送入目標(biāo)操作數(shù)。
ORreg,imm/reg/mem
;reg←reg∨imm/reg/memORmem,imm/reg
;mem←mem∨imm/regOR指令設(shè)置CF=OF=0,根據(jù)結(jié)果設(shè)置SF、ZF和PF狀態(tài),而對AF未定義。2/5/20233邏輯與指令A(yù)ND指令格式:ANDDST,SRC指令功能:AND指令將源操作數(shù)和目標(biāo)操作數(shù)按位進(jìn)行邏輯“與”運(yùn)算,然后將結(jié)果送入目標(biāo)操作數(shù)。
ANDreg,imm/reg/mem
ANDmem,imm/regAND指令設(shè)置CF=OF=0,根據(jù)結(jié)果設(shè)置SF、ZF和PF狀態(tài),而對AF未定義2/5/20234邏輯異或指令XOR指令格式:XORDST,SRC指令功能:XOR指令將源操作數(shù)與目標(biāo)操作數(shù)按位進(jìn)行“異或”運(yùn)算,其結(jié)果保留在目標(biāo)操作數(shù)中。
XORmem,imm/reg
;mem←mem⊕imm/reg
XORreg,imm/reg/mem
;reg←reg⊕imm/reg/memXOR指令設(shè)置CF=OF=0,根據(jù)結(jié)果設(shè)置SF、ZF和PF狀態(tài),而對AF未定義2/5/20235TEST測試指令指令格式:TESTOPR1,OPR2指令功能:TEST指令將兩個(gè)操作數(shù)按位進(jìn)行邏輯“與”運(yùn)算,但不保存結(jié)果,只根據(jù)特征設(shè)置狀態(tài)位。TESTmem,imm/reg
;mem∧imm/regTESTreg,imm/reg/mem
;reg∧imm/reg/mem2/5/20236應(yīng)用:1)AND:使一個(gè)操作數(shù)中的若干位維持不變,而另外若干位清0;2)OR:使一個(gè)操作數(shù)中的若干位維持不變,而另外若干位置1;3)XOR:使一個(gè)操作數(shù)中的若干位維持不變,而另外若干位取反;4)TEST:用來檢測某些位是否為1,但又不改變原操作數(shù)值.例:MOV AL,34H ;AL=00110100B 11001111BANDAL,CFH ;AL=00000100BMOVAL,41H ;AL=01000001B 00100000BORAL,20H ;AL=01100001BMOV AL,34H ;AL=00110100B 00001111BXORAL,0FH ;AL=00111011B2/5/20237移位指令移位指令使操作數(shù)中的所有各位向左或向右移若干位,所移動(dòng)的位數(shù)由記數(shù)值CNT確定。當(dāng)只移1位時(shí)CNT為立即數(shù)1,若移多位,則將移位個(gè)數(shù)置于CL寄存器中。移位(含循環(huán)移位)指令對狀態(tài)位的影響是:CF位根據(jù)指令規(guī)則設(shè)置;OF位只有當(dāng)CNT=1時(shí)有效,在移位后最高有效位的值發(fā)生變化時(shí)OF置1,否則是0;SF、ZF和PF根據(jù)移位后的結(jié)果設(shè)置;而AF位的值不確定。循環(huán)移位指令不影響CF和OF以外的其他標(biāo)志。2/5/20238移位指令(1)邏輯左右移與算術(shù)左右移SHLreg/mem,1/CL;邏輯左移,最高位進(jìn)入CF,最低位補(bǔ)0SHRreg/mem,1/CL;邏輯右移,最低位進(jìn)入CF,最高位補(bǔ)0SALreg/mem,1/CL;算術(shù)左移,最高位進(jìn)入CF,最低位補(bǔ)0
SARreg/mem,1/CL;算術(shù)右移,最低位進(jìn)入CF,最高位不變演示示意圖2/5/20239移位指令的功能2/5/202310移位指令應(yīng)用舉例movcl,4moval,0f0h ;al=f0hshlal,1 ;al=e0h;CF=1,SF=1、ZF=0、PF=0,OF=0shral,1 ;al=70hsaral,1 ;al=38hsar
al,cl
;al=03h;CF=1,SF=0、ZF=0、PF=1
二進(jìn)制數(shù)據(jù)右移1位相當(dāng)于除2
左移1位相當(dāng)于乘2
2/5/202311循環(huán)移位指令將操作數(shù)從一端移出的位返回到另一端形成循環(huán),分成不帶進(jìn)位和帶進(jìn)位,分別具有左移或右移操作ROLreg/mem,1/CL ;不帶進(jìn)位循環(huán)左移RORreg/mem,1/CL ;不帶進(jìn)位循環(huán)右移RCLreg/mem,1/CL ;帶進(jìn)位循環(huán)左移RCRreg/mem,1/CL ;帶進(jìn)位循環(huán)右移示意圖示意圖2/5/202312帶進(jìn)位循環(huán)移位指令2/5/202313例:編寫程序段實(shí)現(xiàn)AX中的內(nèi)容乘10,結(jié)果存放在AX中.分析:將一個(gè)數(shù)左移一位,相當(dāng)于乘2,則
X*10=X*8+X*2程序: XOR AH,AH SHL AX,1 ;2X MOV BX,AX ;暫存2X SHL AX,1 ;4X SHL AX,1 ;8X ADD AX,BX ;8X+2X2/5/202314例:編寫程序段將DX,AX中的32位二進(jìn)制數(shù)左移一位。程序一
SHL AX,1 SHL DX,1程序二
SHL AX,1 RCL DX,1思考:編寫程序段把DX和AX中的雙字右移四位。2/5/2023153.2.4串操作指令串:字節(jié)或字的序列,在內(nèi)存中占用連續(xù)存儲(chǔ)單元。特點(diǎn):1)每條串指令有以字和字節(jié)形式來做重復(fù)處理2)成對使用ES:DI或DS:SI寄存器,DS:SI指向源串,ES:DI指向目的串3)指令自動(dòng)調(diào)整SI和DI的值,但按增量還是按減量修改,取決于標(biāo)志位DF4)方向標(biāo)志DF控制操作方向,DF=1,減址;DF=0,增址5)任何一個(gè)串操作指令,可以在前面加上一個(gè)重復(fù)操作前綴,于是指令就重復(fù)執(zhí)行,直至在寄存器CX中的操作次數(shù)滿足要求為止。2/5/202316(1)MOVS(MoveString)
功能:把由SI作為指針的源串中的一個(gè)字節(jié)或字,傳送至由DI作為指針的目的串,并且相應(yīng)地修改指針,以指向串中的下一個(gè)元素。操作:
MOVSB;MOVAL,[SI]MOVES:[DI],ALINCDI/DECDIINCSI/DECSIMOVSW;MOVAX,[SI]MOVES:[DI],AXADDDI,2/SUBDI,2ADDSI,2/SUBSI,2
說明:此指令對標(biāo)志位無影響。2/5/202317(2)CMPS(CompareString)
功能:由SI作為指針的源串與由DI作為指針的目的串(字或字節(jié))相比較(源串-目的串),但相減的結(jié)果只反映到標(biāo)志位上,而不送至任何一個(gè)操作數(shù)。同時(shí)相應(yīng)地修改源和目的串指針,指向串中的下一個(gè)元素。操作CMPSB;CMP[SI],ES:[DI]INCDI/DECDI INCSI/DECSICMPSW;CMP[SI],ES:[DI]ADDDI,2/SUBDI,2ADDSI,2/SUBSI,2說明:1)標(biāo)志位A、C、O、P、S和Z反映了目的串元素和源串元素之間的關(guān)系。2)這個(gè)指令可以用來檢查兩個(gè)串是否相同。通常在此指令之后,應(yīng)有一個(gè)條件轉(zhuǎn)移指令。2/5/202318(3)SCAS(ScanString)
功能:搜索串指令,關(guān)鍵字放在AL(字節(jié))或AX(字)中,操作時(shí)從AL(字節(jié)操作)或AX(字操作)的內(nèi)容中減去由DI作為指針的目的串元素,結(jié)果反映在標(biāo)志位上,但并不改變目的串元素以及累加器中的值。操作SCASB;CMPAL,ES:[DI] INCDI/DECDISCASW;CMPAX,ES:[DI]ADDDI,2/SUBDI,2說明:標(biāo)志位A、C、O、P、S和Z中反映了在AL或AX中的搜索值與串元素之間的關(guān)系。2/5/202319(4)LODS(LoadString)功能:本指令把由SI作為指針的串元素,傳送至AL(字節(jié)操作)或AX(字操作),同時(shí)修改SI指向串中的下一個(gè)元素。操作LODSB;MOVAL,[SI] INCSI/DECSILODSW;MOVAX,[SI]ADDSI,2/SUBSI,2說明:1)這個(gè)指令正常情況下是不重復(fù)執(zhí)行的,因?yàn)槊恐貜?fù)一次,累加器中的內(nèi)容就要改寫,只保留最后一個(gè)元素。2)此指令對標(biāo)志位無影響。2/5/202320(5)STOS(StoreString)
功能:從累加器AL(字節(jié)操作)或AX(字操作)傳送一個(gè)字節(jié)或字,到由DI作為指針的目的串中,同時(shí)修改DI以指向串中的下一個(gè)單元。操作STOSB;MOVES:[DI],AL;INCDI/DECDISTOSW;MOVES:[DI],AX;ADDDI,2/SUBDI,2說明:1)可以在串中建立一串相同的值,初始化字符串單元。2)此指令對標(biāo)志位無影響。2/5/202321(6)重復(fù)前綴
1)REP
(1)操作:判斷CX是否為0,若為0,結(jié)束;否則CX減1,重復(fù)其后的串操作
(2)用在指令MOVS和STOS之前
MOV CX,100MOV CX,100
NEXT: MOVSBREP MOVSB
LOOP NEXT
2/5/202322(6)重復(fù)前綴
2)REPZ/REPE
(1)操作:判斷CX=0或ZF=0,若CX為0或不等,結(jié)束;否則CX減1,重復(fù)其后的串操作
(2)用在指令CMPS和SCAS之前
3)REPNE/REPNZ
(1)操作:判斷CX=0或ZF=1,若CX為0或相等,結(jié)束;否則CX減1,重復(fù)其后的串操作
(2)用在指令SCAS之前2/5/202323例:將數(shù)據(jù)段中從AREA1開始存放的100個(gè)字節(jié)數(shù)搬到附加段以AREA2為首址的區(qū)域中。方法一:采用MOV指令 例方法二:采用MOVS指令 例方法三:采用重復(fù)前綴串指令例2/5/202324方法一:
LEA SI,AREA1 LEA DI,AREA2 MOV CX,100AGAIN: MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI DEC CX JNZ AGAIN
返回2/5/202325方法二: MOV SI,OFFSETAREA1 MOV DI,OFFSETAREA2 MOV CX,100 CLDAGAIN: MOVSB DEC CX JNZ AGAIN
返回2/5/202326方法三:
LEA SI,AREA1 LEA DI,AREA2 MOV CX,100 CLD REP MOVSB
返回2/5/202327例2:數(shù)據(jù)塊移動(dòng),從AREA1送到AREA2情況一:源串首地址<目的串首地址,且無重疊情況二:源串首地址>目的串首地址,且無重疊情況三:源串首地址<目的串首地址,且重疊情況四:源串首地址>目的串首地址,且重疊2/5/202328只能以減址方式傳送
STD LEA SI,AREA1+N-1 LEA DI,AREA2+N-1 MOV CX,N REP MOVSB2/5/202329
只能以增址方式傳送
CLD LEA SI,AREA1 LEA DI,AREA2 MOV CX,N REP MOVSB 2/5/202330例:編寫程序比較
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版英語七年級(jí)下冊Unit 2 復(fù)習(xí)與檢測清單
- Unit9 短語及知識(shí)點(diǎn)總結(jié)練習(xí)人教版八年級(jí)英語下冊
- 2024年度飛機(jī)場照明系統(tǒng)安裝合同
- 2024年彩鋼房建筑項(xiàng)目承包合同書
- 2024年建筑項(xiàng)目紅磚購銷協(xié)議
- 2024年度工程建設(shè)和施工分包商工程分包合同
- 2024年度醫(yī)療設(shè)備采購與技術(shù)咨詢合同
- 2024年影視廣告制作與授權(quán)合同
- 2024城市軌道交通公司與設(shè)備供應(yīng)商就采購合同
- 2024年度「惠州教育培訓(xùn)」合同標(biāo)的:教育培訓(xùn)服務(wù)及質(zhì)量
- 產(chǎn)品系統(tǒng)設(shè)計(jì)開發(fā) 課件 第4、5章 產(chǎn)品系統(tǒng)設(shè)計(jì)類型、產(chǎn)品系統(tǒng)設(shè)計(jì)開發(fā)綜合案例
- 1編譯原理及實(shí)現(xiàn)課后題及答案
- 焊接材料的質(zhì)量控制和追溯規(guī)范
- 讓閱讀成為習(xí)慣家長會(huì)課件
- 家庭健康照護(hù)服務(wù)方案
- 施工方案 誰編
- 滬教牛津版八上英語Unit-6-單元完整課件
- 新能源及多能互補(bǔ)互補(bǔ)技術(shù)
- 混凝土攪拌站安裝及拆除方案
- 電力電子技術(shù)在新能源領(lǐng)域的應(yīng)用
- 《管道營銷策略》課件
評(píng)論
0/150
提交評(píng)論