汇编工具包提取:链接:https://pan.baidu.com/s/1gzzW96a1l4vjxY1H03X_Bw?pwd=8888
提取码:8888
--来自百度网盘超级会员V5的分享
位运算指令
- AND、OR、XOR、NOT、TEST(逻辑运算指令)
- 移位运算
- SHL、SAL、SHR、SAR(非循环移位)
- RCL、RCR、ROL、ROR(循环移位 )
逻辑运算指令
概要![](https://i-blog.csdnimg.cn/blog_migrate/5a87f37c54760f552599fe5bb506003f.png)
注意事项
使用格式
AND
测试:
1、先看0和1进行比较,得0还是得1,看用得是and还是or等
2、对其进行与运算
-------------------------------------------------------------------------------------
OR
与AND相比较:
不同:在进行0和1比较的时候,只要有1就是1
相同:出了上述的不同,其余操作都是相同的
------------------------------------------------------------------------------------------------------------------------------
XOR(这里是相同为0,不同为1)
在0和1进行比较的时候,两个二进制数相同就为1,不同则为0。如下:
0 1 0 1
0 1 1 0
得1 得1 得0 得0
最后进行与运算,结果再赋值,即可
------------------------------------------------------------------------------------------------------------------------------
TEST
特点:在与运算结束后,不进行赋值。比较时与AND特点相同。
作用:一般用于测试寄存器的某一位是否是0或者1(结果虽然不会赋值,但是这里我们可以通过ZF的值去判读)
------------------------------------------------------------------------------------------------------------------------------
NOT
切记:它只有一个操作数,先取反后再赋值
------------------------------------------------------------------------------------------------------------------------------
移位运算(左移)-非循环移位
这里都是按照移动一个位置,写的。以此类推,即可
SAL (Arithmetic Left)算数左移
SHL (Logic Left)逻辑左移
测试的时候记得先把CF置0(这里有个错误,这里CF等于1。其实是左移后给的。)
测试的时候记得先把CF置1(这里有个错误,这里CF等于0。其实是左移后给的)
移位运算(左移)-非循环移位
SHR(Logic Right)逻辑右移
1111 1111
0111 11111 移出来的一位给CF 操作类似逻辑左移
SAR (Arithmetic Left)算数右移
1111 1111
111 11111
这里移出去的1给到CF。然后再看最高位是多少,那么缺少的那个位置就补多少。
这里最高位是1,所以缺少的那位就补1。
其余操作类似算数左移
------------------------------------------------------------------------------------------------------------------------------
移位运算(带进位的循环移位)
这里都是按照移动一个位置,写的。以此类推,即可
(带进位的移位):先将移出来的数字给到CF,然后再将CF送到需要补的那一位上。
移位运算(不带进位的循环移位)
(不带进位的移位):先将移出来的一位放到要补的位置,再给到CF,即可。