80X86學習筆記 邏輯運算與移位指令

2021-06-05 06:07:14 字數 1580 閱讀 4808

格式:not oprd

該指令把運算元oprd取反,然後送回oprd,oprd可以是通用暫存器,也可是儲存器運算元,對標誌沒有影響。

格式:and orpd1, oprd2

對兩個運算元進行按位邏輯與運算,結果送到oprd1。該指令執行後,cf=0,of=0,pf,zf,sf反應運算結果,af未定義。

某個運算元自己與自己相與,雖然值不變,但可使cf清0。與操作指令主要用於使乙個運算元中若干位不變,其他若干位清0。

格式:or oprd1,oprd2

指令執行後,cf=0,of=0,pf,zf,sf反應運算結果,af未定義。某個運算元自己與自己相或,雖然值不變,但可使cf清0。

格式:xor oprd1,oprd2

該指令執行後,cf=0,of=0,pf,zf,sf反應運算結果,af未定義。

某個運算元自己與自己異或,雖然值不變,但可使cf清0。

格式:test oprd1,oprd2

與and相似,但結果不回送到oprd1。zf,pf,sf反應運算結果,cf,of被清0.

該指令通常用於檢測某些位是否為1,但又不希望原運算元值的場合。

例:要檢查al中位6或2是否有一位位1:

test al,01000100b;

若6 2 都為0,則執行指令後,zf=1,否則zf被清0.

例:1.遮蔽0,1兩位

mov al,0bfh

and al,0fch

2.第5位置1

mov al,43h

or al,20h

算術左移和邏輯左移進行相同動作,儘管為了方便提供兩個助記符,但只有一條機器指令。

格式:sal oprd, m 或 shl oprd, m

把運算元左移m,每移動一位,右邊用0不足一位,移出最高位進入標誌位cf.

格式:sar oprd, m

右移m位,每移一位,左邊符號位保持不變,移出最低位進入標誌位cf。

eg:mov cl, 5

sar [di], cl

格式:shr oprd, m

左邊用0補,移出最低位進入標誌位cf。

一般通過移位指令和邏輯運算指令進行資料的合併和分解處理。

eg:data1 data2各長4位,分別存放在al低4位和高4位中,現把它們分別存放在bl暫存器和bh暫存器的低4位中。

mov bh, al

and bl, 0fh     ;得data1

mov bh, al      ;得data2

mov cl, 4

shr bh, cl

這些指令可以一次只移動移位,也可以一次移動多位,若移動多位,那麼移位次數存放在cl暫存器中。

格式:rol oprd, m

ror oprd, m

rcl oprd, m

rcr oprd, m

運算元oprd可以是通用暫存器,儲存器運算元。前兩條指令沒有把進製標誌cf包含在迴圈環中;後兩條指令把進製標誌cf包含在迴圈環中,即作為整個迴圈的一部分。

這些指令只影響標誌cf和of.

對於帶進製的迴圈移位指令,若運算元8位,移位9次後復原。

例:把al高4位與低4位交換

rol al, 4

80X86學習筆記 邏輯運算與移位指令

格式 not oprd 該指令把運算元oprd取反,然後送回oprd,oprd可以是通用暫存器,也可是儲存器運算元,對標誌沒有影響。格式 and orpd1,oprd2 對兩個運算元進行按位邏輯與運算,結果送到oprd1。該指令執行後,cf 0,of 0,pf,zf,sf反應運算結果,af未定義。某...

80X86學習筆記 算術運算指令

加法指令add 格式 add oprd1,oprd2 操作 oprd1 oprd1 oprd2 加法指令影響標誌位,of位更具運算元符號變化情況來設定 若兩個運算元符號相同而結果與之相反時溢位,of 1,否則of 0。cf可以用來表示無符號數的溢位,最高位產生進製或借位,產生溢位,cf 1。2.帶進...

80X86學習筆記 算術運算指令

加法指令add 格式 add oprd1,oprd2 操作 oprd1 oprd1 oprd2 加法指令影響標誌位,of位更具運算元符號變化情況來設定 若兩個運算元符號相同而結果與之相反時溢位,of 1,否則of 0。cf可以用來表示無符號數的溢位,最高位產生進製或借位,產生溢位,cf 1。2.帶進...