汇编语言:x86汇编指令大全及其注意事项
指令
作用
注意事项
示例
mov dest, src
传送指令
1.dest和src不能同时为存储器操作数
2.CS不能作为dest
3.段寄存器之间不能互相传送
4.立即数不能送入段寄存器
mov ax,word ptr[bx+si+2]
add dest,src
加法指令
dest,src不能同时为存储器操作数或段寄存器
add ax,cx
adc dest,src
带进位加法指令
dest=dest+src+CF,常用于多字节加法
inc dest
加一指令
1.此操作不影响CF的状态
inc byte ptr[si]
sub dest,src
减法指令
1.dest,src的要求与add相同
2.触发OF:异号相减且结果的符号为与被减数不同
sub ax,cx
sbb dest,src
带进位减法
常用于多字节减法
dec dest
减一指令
不影响CF的状态,但其他几个标志位都会受到影响
dec ax
mul dest
无符号乘法指
1.dest为字节数据,则与AL相乘,结果放入AX
2.dest为字数据,与AX相乘结果低16位放入AX,高16位放入DX
3.dest不能是立即数
mul ax
imul dest
有符号乘法
细节与mul完全相同,对最高位的解释不同
imul ax
div dest
无符号除法
1.dest为字节数据,用AX除以dest,商放在AL,余数放在AH
2.dest为字数据,用低16位为AX,高16位为DX的双字数据除以dest,商放在AX,余数放在DX
idiv dest
带符号除法
与无符号完全相同。除法溢出时结果无效
idiv ax
cbw
扩展AL为AX字数据
1.仅用于扩展带符号数,无符号直接清零即可
2.不带操作数
cbw
cwd
扩展AX字为DX,AX双字数据
要求与cbw相同
cwd
seg
取标号或变量的段地址
mov di,seg label
lea
取偏移地址
1.与offset作用类似
2.load efficient address的简写
lea ax,label
offset
取偏移地址
1.作用与lea相同
2.速度比lea快
mov ax,offset label
org
设定程序段起始地址(偏移)
1.是origin的缩写
2.若无org默认程序从cs:0开始存放指令代码
3.两个org指令之间空余的空间用0填充
org offsetVal
xlat
转换表指令
1.BX存放表的首地址,AL存放当前表中元素的偏移量
2.不影响F的状态
xlat ;无需操作数