汇编杂谈-逻辑运算指令和移位指令
目录
逻辑运算指令
- AND / TEST, TEST 执行 AND 指令但是不更新寄存器,只更新 EFLAGS
- SUB / CMP,同上,CMP 指令不更新寄存器,但更新 EFLAGS
- OR
- XOR
- NOT
TEST 和 CMP 指令会更新 EFLAGS 寄存器,详见 EFLAGS 寄存器
例: cmp oprd 1, oprd 2 当执行到 CMP 指令的时候会读取这两个寄存器的内容,并加以减法运算,结果本身不保留,并按照结果设置符号位(属算术运算)。
如何判断大小: 若执行指令后:ZF=1, 则说明两个数相等,因为 zero 为 1 说明结果为0.
移位指令
- CLC 进位清零
- SHL / SHR 移位
- ROL / ROR 循环移位
- RCL / RCR 带进位循环移位
是否带进位区别如下:
- 不带进位
|
|
- 带进位
|
|