算术
ADD(add)加法
ADC(add with carry)带进位加法
INC(increment)加1
DEC(Decrement)减1
SUB(subtract)减法
SBB(subtract with borrow)带借位减法(DST)←(DST)-(SRC)-CF,其中CF为进位的值
NEG(Negate)求补
CMP(Compare)比较
MUL(Unsigned Multiple)无符号数乘法
IMUL(Signed Multiple)带符号数乘法
1. IMUL
al,r/m8 : AX <=AL * r/m
2. IMUL
r32,r/m32,imm32 : r32<=r/m*imm32
3. IMUL
eax,r/m32 : EDX:EAX <= EAX * r/m
DIV(Unsigned divide)无符号数除法
IDIV(Signed divide)带符号数除法
CBW(Convert byte to word)字节转换为字
CWD(Contert word to double word)字转换为双字
int add_asm(int x,int y)
{
__asm{
mov eax,x;
add eax,y;
}
}
int mul_asm(int x, int y)
{
__asm
{
mov eax,x;
imul eax,y;
}
}
int idiv_asm(int x, int y,int *m)
{
__asm{
;mov edx,0;
xor edx,edx;把被除数放在edx:eax中,edx设为0
mov eax, x;被除数x放入eax中
idiv y;edx:eax/y,商放入eax中,余数放入edx中
mov ebx,m
mov [ebx],edx;int *p = ebx; *p = edx(*m=edx)
}
}