布尔指令

作者在 2009-11-11 14:27:06 发布以下内容

1.   AND指令

AND指令在每对操作数的对应数据位之间执行布尔()“与”操作,并将结果存放在

目的操作数中。

AND  目的操作数,源操作数

AND指令总是清除溢出标志和进位标志,它依据目的操作数的值修改符号标志、零标

志和奇偶标志。

2.   OR指令

OR指令在每对操作数的对应数据位之间执行布尔“或”操作,并将结果存放在目的操

作数个

OR 目的操作数,源操作数

OR指令总是清除溢出标志和进位标志。它根据目的操作数的值修改符号标志、零标志、

奇偶标志。

3.  XOR指令

XOR指令在每对操作数的对应数据位之间执行布尔“异或”操作.并将结果存放在目的操作数中。

XOR 目的操作数,源操作数

XOR指令总是清除溢出标志和进位标志,它依据目的操作数的值修改符号标志、零标志和奇偶标志。

4.   NOT指令

NOT指令将一个操作数的所有数据位取反,结果称为反码(one’s complement)NOT指令不影响任何状态标志。

 

5.   TEST指令

TEST指令在每对操作数的对应数据位之间执行隐含的“与”操作,并相应设置标志位。

TEST指令和AND指令之间的惟一区别在于TEST并不修改目的操作数。TEST指令的操作

数格式与AND相同,该指令在测试操作数某位是否被设置时特别有用。

    TEST指令总是清除溢出标志和进位标志,它修改符号标志、零标志、奇偶标志的方式与AND指令相同。

6.   BTBTCBTRBTS

BTBTCBTRBTS指令统称为位测试(bit testing)指令,这些指令很重要,因为它

们可以在单条指令内可执行多个步骤。这个特征与多线程程序有很大的联系,对多线程程序而言,在没有被其他线程中断的危险下对重要标志位(称为信号量)进行测试、清除、设置或求反是非常重要的。

(1)       BT(bit test)指令选择第一个操作数的第n位并将其拷贝到进位标志中:

BT bitBasen

(2)       BTC(bit test and complement)指令选择第一个操作数的第n位并将其拷贝到进位标志中,同时将这个数据位取反:

BTC bitBasen

(3)       BTR(bit test and reset)指令选择第一个操作数的第n位并将其拷贝到进位标志中,同时将第n位清零:

BTR bitBasen

(4)       BTS(bit test and set)指令选择第一个操作数的第n位并将其拷贝到进位标志中,同时将第n位置位:

BTR bitBasen

 

汇编 | 阅读 3072 次
文章评论,共0条
游客请输入验证码
浏览21178次