汇编指令备忘录

on under 二进制
1 minute read

About

记录易忘汇编指令经典解释

Detail

1.movsz/movsx
2.lodsb/lodsw[stosb/stosw]
3.cdq cdq-more
4.neg
5.sal/shl,sar/shr

sal:算术左移
shl:逻辑左移
sar:算术右移[这四个当中唯一一个要考虑符号位的]
shr:逻辑右移 6.imul S/mul S,cdq/cltd,idiv S/div S

imul S<==>{R[edx]:R[eax]<-SxR[eax]}<==>有符号全64位乘法
mul S<==>{R[edx]:R[eax]<-SxR[eax]}<==>无符号全64位乘法
cdq/cltd<==>{R[edx]:R[eax]<-SignExtend(R[eax])}<==>转为四字(cdq是intel格式,cltd是att格式)
idiv S<==>{R[edx]<-R[edx]:R[eax] mod S;R[eax]<-R[edx]:R[eax] / S}<==>有符号除法
div S<==>{R[edx]<-R[edx]:R[eax] mod S;R[eax]<-R[edx]:R[eax] / S}<==>无符号除法

上面的:代表32位和低32位的分界符号

7.标志寄存器

CF(carry flag):进位标志.最近的操作使最高位产生了进位.可用来检查无符号操作数的溢出
ZF(zero flag):零标志.最近的操作得出的结果为0
SF(sign flag):符号标志.最近的操作得到的结果为负数
OF(overflow flag):溢出标志.最近的操作导致一个补码溢出--正溢出或负溢出

cmp与sub指令在设置标志寄存器的标志位的行为一样
test与and指令在设置标志寄存器的标志位的行为一样
cmp和test改变标志寄存器,不改变操作数
sub和and改变标志寄存器,也改变操作数
汇编指令, 备忘
home
github
archive
category