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. BT,BTC,BTR,BTS
BT,BTC,BTR和BTS指令统称为位测试(bit testing)指令,这些指令很重要,因为它
们可以在单条指令内可执行多个步骤。这个特征与多线程程序有很大的联系,对多线程程序而言,在没有被其他线程中断的危险下对重要标志位(称为信号量)进行测试、清除、设置或求反是非常重要的。
(1) BT(bit test)指令选择第一个操作数的第n位并将其拷贝到进位标志中:
BT bitBase,n
(2) BTC(bit test and complement)指令选择第一个操作数的第n位并将其拷贝到进位标志中,同时将这个数据位取反:
BTC bitBase,n
(3) BTR(bit test and reset)指令选择第一个操作数的第n位并将其拷贝到进位标志中,同时将第n位清零:
BTR bitBase,n
(4) BTS(bit test and set)指令选择第一个操作数的第n位并将其拷贝到进位标志中,同时将第n位置位:
BTR bitBase,n