AND指令:与运算
A B C
1 0 0
0 1 0
0 0 0
1 1 1
1、当前汇编指令为and edx,ecx
2、当前ecx寄存器中的地址值为00000000,edx寄存器中的地址值11111111
3、单步步过
可以发现edx的值变为了00000000,原因是edx和ecx进行与运算,结果赋值给了edx寄存器中的地址值
OR指令:或运算
A B C
1 0 1
0 1 1
0 0 0
1 1 1
1、当前汇编指令为and edx,ecx
2、当前ecx寄存器中的地址值为11111111,edx寄存器中的地址值00000000
3、单步步过
发现结果edx中的地址为11111111,原因是进行了或运算 00000000 00000000 00000000 00000000 和 11111111 11111111 111111111 11111111 或运算结果自然是 11111111 11111111 11111111 11111111
XOR指令:异或运算
A B C
1 0 1
0 1 1
0 0 0
1 1 0
1、当前汇编指令为xor edx,ecx
2、当前ecx寄存器中的地址值为00000011,edx寄存器中的地址值00000000
3、单步步过
发现edx寄存器中的值也为00000011,原因是00000000 00000000 00000000 00010001 和 00000000 00000000 00000000 00000000
那么xor运算结果为00000000 00000000 00000000 00010001 转换为十六进制同样也就是00000011了
not指令:取反
A B
1 0
0 1
1、当前汇编指令为not ecx
2、当前ecx寄存器中的地址值为00000011
3、单步步过
结果发现ecx中的值为FFFFFFEE,原因 00000011的二进制为00000000 00000000 00000000 00010001,那么取反的话就是11111111 11111111 11111111 11101110也就是FFFFFFEE