汇编语言: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 ;无需操作数