X86 汇编/逻辑
< X86 汇编
汇编的逻辑操作对被操者逐位进行, 及逐位逻辑运算. 类似高级语言之位运算, 而非高级语言之逻辑运算.
逐位取反:
not X ; X<-not X, 不影响标存器
逐位与,或及异或: X<-X {and,or,xor} Y, 更新SF,ZF,PF标志
and X, Y;
or X,Y;
xor X,Y;
位测试及操作: op X,Y; 将X中的第Y位存入CF标志, 再做op操作
bt X, Y ; CF<-X之Y位
bts X, Y; CF<-X之Y位, 再置X之Y位
btr X, Y; CF<-X之Y位, 再清X之Y位
btc X, Y; CF<-X之Y位, 再反X之Y位
寻1:
bsf 靶, 源 ; bsf对源从低权位向高权位逐位寻找,找到1停止, 并将此1之权位入靶. bsr逆向寻1. 若未找到, 则置ZF否则清0.
移位 X, Y ; 将X左或右移Y位, shl,sal左移, shl同sal, shr,sar右移, Y为立即数或CL暂存器.
shl al, cl ; 将al左移cl位, al右空位补0, 最后移出位存CF中.
shr al, 5 ; 将al右移5位, 最后移出位存CF中, shr对al左空位补零, sar对al左空位补以al初始值之符号位.
补移 D,S,IC ; 将D左移或右移IC位, D之空位补以S同侧cl位,S值不变
shld ax,bx,cl ; 将ax左移cl位, ax右之空位由bx左cl位补齐, bx不变
shrd [di],ax,6; 将[di]右移6位, [di]左侧空位由ax右6位补齐, ax不变
位转圈 D, S ; 将D转动S位
rol D, S ; 将D左移出S位并按移出次序补于D之右空位
rcl D, S ; 将D左移出S位并按移出次序补于D之右空位, 并将D最后移出位存于CF标志
ror,rcr 分别为 rol,rcl之右移版
test D, S ; 逻辑比较, 做 D and S运算并更新SF,ZF,PF标志, 同and指令但不改变D.
bswap R ; 字节交换指令, 逆转R内字节顺序, 用于大小尾模式转换.