-----------------------------------------
整数运算
-----------------------------------------
加法:
addx
adcx #带进位处理,多字节加法
-----------------------------------------
xor指令清零
-----------------------------------------
减法:
subx
对于无符号整数相减使用进位标志来判断是否为负数
对于有符号整数相减使用溢出标志来检测溢出情况
sbbx #带借位处理,多字节减法
-----------------------------------------
inc 递增
dec 递减
-----------------------------------------
乘法:
mul #占用eax,edx,只能用于无符号数
imul #可用于无符号数和有符号数
-----------------------------------------
除法:
div #占用eax,edx,只能用于无符号数
idiv #可用于无符号数和有符号数
结果包括商和余数
-----------------------------------------
移位:
---------------
左移
salx #向左算术移位
shlx #向左逻辑移位,结果与salx一样
移出的位保存在进位标志,移进的位补0
---------------
右移
sarx #向右算术移位,移进的位补符号位
shrx #向右逻辑移位,移进的位补0
移出的位保存在进位标志
---------------
循环移位
rol
ror
rcl #进位标志位也作为其中一位
rcr #进位标志位也作为其中一位
-----------------------------------------
十进制运算:
---------------
不打包BCD的运算
aaa 处理加法操作的结果
aas 处理减法操作的结果
aam 处理乘法操作的结果
aad 处理除法操作的结果
与add,adc,sub,sbb,mul,div组合使用
---------------
打包BCD的运算
daa 处理加法操作的结果
das 处理减法操作的结果
-----------------------------------------
逻辑操作:
---------------
布尔逻辑:按位操作
and
not
or
xor #快速清0
---------------
位测试
test 按位与操作(and),不改变目标对象的值 #常用于测试eflags寄存器的值