34邏輯運(yùn)算指令_第1頁
34邏輯運(yùn)算指令_第2頁
34邏輯運(yùn)算指令_第3頁
34邏輯運(yùn)算指令_第4頁
34邏輯運(yùn)算指令_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1復(fù)習(xí):復(fù)習(xí):算術(shù)運(yùn)算指令l比較指令比較指令 cmpl加加/ /減減1 1指令指令inc,decl不帶進(jìn)位的加不帶進(jìn)位的加/ /減法指令減法指令 add,subl帶進(jìn)位的加帶進(jìn)位的加/ /減法指令減法指令 adc,sbb23.4 邏輯運(yùn)算指令 運(yùn)算規(guī)則:按位操作,無進(jìn)運(yùn)算規(guī)則:按位操作,無進(jìn)/ /借位,包括以借位,包括以下兩類:下兩類: 邏輯位運(yùn)算邏輯位運(yùn)算 移位、循環(huán)移位移位、循環(huán)移位cf of sf zf pf af 0 0 * * * 無定義無定義 根據(jù)運(yùn)算結(jié)果設(shè)置根據(jù)運(yùn)算結(jié)果設(shè)置 對標(biāo)志位的影響對標(biāo)志位的影響( (除除notnot指令外指令外) ): 31、邏輯運(yùn)算指令有有5條指令。條

2、指令。(1)“與與”運(yùn)算指令運(yùn)算指令and(2)“或或”運(yùn)算指令運(yùn)算指令or(3)“異或異或”運(yùn)算指令運(yùn)算指令xor(4)“非非” 運(yùn)算指令運(yùn)算指令not(5)測試指令)測試指令test4(1) 邏輯”與” and對兩個(gè)操作數(shù)進(jìn)行按位邏輯對兩個(gè)操作數(shù)進(jìn)行按位邏輯“與與”操作。操作。格式:格式:and dst, src功能:功能: (dst)(src)(dst)用途:保留操作數(shù)的某幾位,其他位清零。用途:保留操作數(shù)的某幾位,其他位清零。 例1:and al,0fhand al,0fh 若執(zhí)行前:(al)=35h (即5:字符5的ascii碼值) 執(zhí)行: 0011 0101 0000 1111 分

3、離了al后4位 0000 0101例:例:and dx, 0ff00h and dx, 0ff00h ;分離;分離dxdx內(nèi)容的高內(nèi)容的高8 8位位 and al, 0f0h and al, 0f0h ;分離;分離alal內(nèi)容的高內(nèi)容的高4 4位位執(zhí)行后:(al)=05h(al)=05h ( (保留保留al中低中低4位,高位,高4位清位清0) ) 即:and al , 0fh sub al , 30h6例例2:al中有字符中有字符az, 將其轉(zhuǎn)換成大將其轉(zhuǎn)換成大寫。寫。;az61h7ah ;az41h5ah; a a20h z z20hand al,1101 1111b7例例3:測試:測試al

4、的的bit7,bit5,bit2是否都是是否都是1。 and al, 1010 0100bcmp al, 1010 0100b jz yes yes: 8對兩個(gè)操作數(shù)進(jìn)行按位邏輯對兩個(gè)操作數(shù)進(jìn)行按位邏輯”或或”操作。操作。格式:格式:or dst, src功能:功能: (dst)(src)(dst)用途:對操作數(shù)的某幾位置用途:對操作數(shù)的某幾位置1; 對兩操作數(shù)進(jìn)行組合。對兩操作數(shù)進(jìn)行組合。(2) 邏輯“或” or9例例1 1:把把a(bǔ)l的第的第5位置為位置為1。 or al, 00100000b例例2:把把a(bǔ)lal中的非壓縮中的非壓縮bcdbcd碼變成相應(yīng)十進(jìn)制數(shù)的碼變成相應(yīng)十進(jìn)制數(shù)的asci

5、iascii碼。(求數(shù)字碼。(求數(shù)字0 09 9的的asciiascii碼)碼) or al, 30h;09 = 30h39h10對操作數(shù)進(jìn)行按位邏輯對操作數(shù)進(jìn)行按位邏輯”非非”操作。操作。格式格式:not mem/reg(3) 邏輯“非”(取反) not 按位取反,原來是按位取反,原來是“0”的位變的位變?yōu)闉椤?”;原來是;原來是“1”的位變?yōu)榈奈蛔優(yōu)椤?”例:例:已知已知 cx0011 0101b 35hnot cx;cx1100 1010b0cah11對兩個(gè)操作數(shù)按位進(jìn)行對兩個(gè)操作數(shù)按位進(jìn)行”異或異或”操作。操作。格式:格式:xor dst, src功能:功能: (dst) (src)(

6、dst)用途:對用途:對regreg清零清零( (自身異或自身異或) ) 把把reg/memreg/mem的某幾位變反的某幾位變反( (與與11異或異或) )(4) 邏輯”異或” xor 例例1 1:把:把a(bǔ)xax寄存器清零。寄存器清零。 例例2 2:把:把dhdh的高的高4 4位求反位求反, ,低低4 4位變不變位變不變 mov ax,0 xor ax,ax and ax,0 sub ax,ax xor dh,0f0h12三種運(yùn)算指令的操作數(shù)通用寄存器通用寄存器通用寄存器通用寄存器立即數(shù)立即數(shù)存儲器存儲器 立即數(shù)立即數(shù)通用寄存器通用寄存器 存儲器存儲器目的操作數(shù)目的操作數(shù)源操作數(shù)源操作數(shù)13

7、三種運(yùn)算指令的主要作用三種運(yùn)算指令的主要作用指指 令令作作 用用舉舉 例例and使目的操作數(shù)某些位不變,使目的操作數(shù)某些位不變,某些位變成某些位變成0保留保留ax的最后的最后4位位不變,其余清不變,其余清0orxor使目的操作數(shù)某些位使目的操作數(shù)某些位不變,不變,某些位變成某些位變成1想把想把bx的低的低8位位置置1,其余不變,其余不變可以將目的操作數(shù)中的可以將目的操作數(shù)中的某某些位取反些位取反;還可以將還可以將通用寄存器清通用寄存器清0想把想把cx的內(nèi)容的內(nèi)容清清014andand指令可用于復(fù)位某些位(同指令可用于復(fù)位某些位(同0 0相與),不影響相與),不影響其他位:將其他位:將blbl中

8、中d d3 3和和d d0 0位清位清0 0,其他位不變,其他位不變and bl,1111 and bl,1111 0 011110 0b boror指令可用于置位某些位(同指令可用于置位某些位(同1 1相或),不影響其相或),不影響其他位:將他位:將blbl中中d d3 3和和d d0 0位置位置1 1,其他位不變,其他位不變or blor bl, 0000 , 0000 1 100001 1b bxorxor指令可用于求反某些位(同指令可用于求反某些位(同1 1相異或),不影相異或),不影響其他位:將響其他位:將blbl中中d d3 3和和d d0 0位求反,其他不變位求反,其他不變xor

9、 blxor bl, 0000 , 0000 1 100001 1b b總結(jié):總結(jié):15操作與操作與andand指令類似指令類似, ,但不將但不將”與與”的結(jié)果送回的結(jié)果送回, ,只影只影響標(biāo)志位。響標(biāo)志位。testtest指令常用于位測試指令常用于位測試, ,與條件轉(zhuǎn)移指令一起用。與條件轉(zhuǎn)移指令一起用。(5) 測試指令test類似類似cmp例:測試?yán)簻y試al的內(nèi)容是否為負(fù)數(shù)。的內(nèi)容是否為負(fù)數(shù)。 test al,80h ;檢查檢查al中中d7=1? jnz minus ;是是1(負(fù)數(shù)負(fù)數(shù)),轉(zhuǎn),轉(zhuǎn)minus ;否則為正數(shù)否則為正數(shù)minus:162、移位指令(1)邏輯移位指令)邏輯移位指令(

10、2)算術(shù)移位指令)算術(shù)移位指令(3)循環(huán)循環(huán)移位指令移位指令(4)帶進(jìn)位位)帶進(jìn)位位循環(huán)循環(huán)移位指移位指令令目的操作數(shù)可以是字節(jié)或字;目的操作數(shù)可以是字節(jié)或字;以以cl為源操作數(shù)的移位指令執(zhí)行以后,為源操作數(shù)的移位指令執(zhí)行以后,cl的的值不變值不變。有有8條指令,分為以下四類。條指令,分為以下四類。1cl,存儲器存儲器通用寄存器通用寄存器目的操作數(shù)目的操作數(shù)源操作數(shù)源操作數(shù)17 邏輯左移指令邏輯左移指令 shl(shift leftshift left) 邏輯右移指令邏輯右移指令 shr(shift rightshift right) 算術(shù)左移指令算術(shù)左移指令 sal(shift arithm

11、etic leftshift arithmetic left) 算術(shù)右移指令算術(shù)右移指令 sar(shift arithmetic rightshift arithmetic right)這這4 4條指令的格式相同條指令的格式相同, ,以以salsal為例:為例:(1)非循環(huán)移位指令cl ;移位位數(shù)大于移位位數(shù)大于1時(shí)時(shí)1 ;移位位數(shù)等于移位位數(shù)等于1時(shí)時(shí) sal mem/reg sal mem/reg, ,18邏輯左移指令shl(shift logical left) 格式:格式:shl dst,count功能功能:將:將dst中的中的8位或位或16位數(shù)向左移動(dòng)位數(shù)向左移動(dòng)count次,最次

12、,最后移出的位進(jìn)入后移出的位進(jìn)入cf,右邊的,右邊的count位移入位移入0。移動(dòng)次數(shù)移動(dòng)次數(shù)count只能為只能為1或或cl。如:如:shl ax,1 shl al,clcf dstd2d4d6d0d1d3d5d7“0”d7d1d3d5 0d0d2d4d619邏輯右移指令shr(shift logical right) 格式:格式: shr dst,count功能:功能:特點(diǎn)是移出的位進(jìn)入進(jìn)位位特點(diǎn)是移出的位進(jìn)入進(jìn)位位cf,空出的,空出的位用位用“0”填入。填入。dst cfd7d6d5d4d3d2d1d0d0“0”d3d5d7d1d2d4d6 0算術(shù)左移指令sal(shift arithm

13、etic left) dst cfd2d4d6d0d1d3d5d7格式:格式: sar dst,count功能:功能:將將dst中的中的8位或位或16位數(shù)向右移動(dòng)位數(shù)向右移動(dòng)count次,次,最后移出的位進(jìn)入最后移出的位進(jìn)入cf,最左邊的位既向右移又保,最左邊的位既向右移又保持不變。持不變。算術(shù)右移指令sar(shift arithmetic right) 格式:格式: sal dst,count功能:與邏輯左移指令功能完全相同。功能:與邏輯左移指令功能完全相同。d7d0d3d5d7d1d2d4d621非循環(huán)移位指令功能示意圖最低位最高位cf0(a)算術(shù)/邏輯左移sal/shl最低位最高位cf

14、(b)算術(shù)右移sar最低位最高位cf(c)邏輯右移shr0算術(shù)/邏輯左移 shl / sal指令指令算術(shù)右移sarsar指令指令邏輯右移shrshr指令指令25movmov cl,4 cl,4movmov al,1111 0000b al,1111 0000b;al=f0hal=f0hshl al,1shl al,1;al=e0hal=e0h ;cf=1cf=1,sf=1sf=1、zf=0zf=0、pf=0pf=0,of=0of=0shr al,1shr al,1;al=70hal=70h ;cf=0cf=0,sf=0sf=0、zf=0zf=0、pf=0pf=0、of=1of=1sar al,

15、1sar al,1;al=38hal=38h ;cf=0cf=0,sf=0sf=0、zf=0zf=0、pf=0pf=0、of=of=0 0sar al,clsar al,cl;al=03hal=03h ;cf=1cf=1,sf=0sf=0、zf=0zf=0、pf=1pf=126算術(shù)移位算術(shù)移位把操作數(shù)看做把操作數(shù)看做有有符號數(shù);符號數(shù); 邏輯移位邏輯移位把操作數(shù)看做把操作數(shù)看做無無符號數(shù)。符號數(shù)。移位位數(shù)放在移位位數(shù)放在clcl寄存器中,如果只移寄存器中,如果只移1 1位位, ,也也 可以直接寫在指令中。例如:可以直接寫在指令中。例如: mov cl,4mov cl,4 shr al,cl s

16、hr al,cl ;alal中的內(nèi)容右移中的內(nèi)容右移4 4位位影響影響c,p,s,z,oc,p,s,z,o標(biāo)志。標(biāo)志。結(jié)果未溢出時(shí):結(jié)果未溢出時(shí): 左移左移1 1位位操作數(shù)操作數(shù)* *2 2 右移右移1 1位位操作數(shù)操作數(shù)/2/227例:把例:把a(bǔ)l中的數(shù)中的數(shù)x乘乘10因?yàn)橐驗(yàn)?0=8+2=23+21,所以可用移位實(shí)現(xiàn)乘,所以可用移位實(shí)現(xiàn)乘10操作。操作。程序如下:程序如下: mov cl,3sal al,1 ; 2xmov ah,al sal al,1 ; 4x sal al,1 ; 8x add al,ah ; 8x+2x = 10 x28l用移位操作代替乘除法可提高運(yùn)算速度用移位操作代

17、替乘除法可提高運(yùn)算速度例:前例中計(jì)算例:前例中計(jì)算x* *1010。(1)(1)采用乘法指令采用乘法指令: : mov movbl,10bl,10 mul mulblbl 共需共需70707777個(gè)個(gè)t t周期。周期。(2)(2)采用移位和加法指令采用移位和加法指令: : sal salal,1 al,1 ; 2t2t mov movah,al ah,al ; 2t 2t sal salal,1 al,1 ; 2t2t sal salal,1 al,1 ; 2t2t add addal,ah al,ah ; 3t3t 只需只需1111個(gè)個(gè)t t周期周期, ,僅相當(dāng)于乘法的僅相當(dāng)于乘法的1/71

18、/7。29 不含進(jìn)位位的循環(huán)左移指令不含進(jìn)位位的循環(huán)左移指令 rol 不含進(jìn)位位的循環(huán)右移指令不含進(jìn)位位的循環(huán)右移指令 ror 含進(jìn)位位的循環(huán)左移指令含進(jìn)位位的循環(huán)左移指令 rcl 含進(jìn)位位的循環(huán)右移指令含進(jìn)位位的循環(huán)右移指令 rcr(2)循環(huán)移位指令格式同非循環(huán)移位指令。格式同非循環(huán)移位指令。移位位數(shù)放在移位位數(shù)放在clcl寄存器中,如果只移寄存器中,如果只移1 1位位, , 也可以直接寫在指令中。也可以直接寫在指令中。循環(huán)移位指令只影響標(biāo)志位循環(huán)移位指令只影響標(biāo)志位cfcf和和ofof。30循環(huán)左移指令rol(rotate left) 格式:格式: rol dst,count功能:功能:循

19、環(huán)右移指令ror(rotate right)格式:格式: ror dst,count功能:功能:d0cfd0d3d5d7d1d2d4d6d7cfd7d1d3d5d0d2d4d6cf帶進(jìn)位位循環(huán)左移指令(rotate left through carry)格式:格式: rcl dst,count功能:功能:cfd7d1d3d5d0d2d4d6帶進(jìn)位位循環(huán)右移指令(rotate right through carry)格式:格式: rcr dst,count功能:功能:cfcfd0d3d5d7d1d2d4d632(a) rol最低位最高位cf(c) rcl最低位最高位cf (b) ror最低位最高

20、位cf(d) rcr最低位最高位cf循環(huán)移位指令功能示意圖rol指令指令ror指令指令rcl指令指令rcr指令指令37循環(huán)移位舉例:循環(huán)移位舉例:例例1:將:將al的高的高4位與低位與低4位互換。位互換。 mov cl,4 rol al,cl38dxaxcf0shl ax,1shl ax,1例:將例:將dx.axdx.ax中中3232位數(shù)值左移一位位數(shù)值左移一位rcl dx,1rcl dx,1391a02h1a00hcf cmp 1a00h,8000h ; cf1a00h的的d7 cmc;進(jìn)位標(biāo)志求反命令;進(jìn)位標(biāo)志求反命令 rcl word ptr1a02h,1 rcl word ptr1a00h,1例例2:將:將1a00h內(nèi)存單元中的雙字循環(huán)左移內(nèi)存單元中的雙字循環(huán)左移1位。位。40例例3 3:把:把a(bǔ)lal最低位送最低位送blbl最低位,保持最低位,保持alal不變不變r(jià)or bl,1ror al,1rcl bl,1rol al,1al、blcfblcfalcfal之之d041移位指令小結(jié)指指 令令主要作用主要作用邏輯左移指令邏輯左移指令shl邏輯右移指令邏輯右移指令shr將操作數(shù)乘以將操作數(shù)乘以2的的cl次。次。將操作數(shù)除以將操作數(shù)除以2的的cl次。次。算術(shù)左移指令算術(shù)左移指令sal算術(shù)右移指令算術(shù)右移指令sar將操作數(shù)乘以將操作數(shù)乘以2的的cl次。次。將補(bǔ)碼數(shù)除以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論