Win32汇编语言程序设计 - 常用指令


常用指令

1. 数据传送指令

1.1 MOV

从源操作数向目的操作数复制数据

用法:

MOV DST,SRC

说明:

  • 两个操作数尺寸必须一致。例如MOV EBX,AX是错误的

  • 两个操作数不能同时为内存操作数。例如MOV [var],[2000H]是错误的

  • 目的操作数不能是CS,EIP和IP。例如MOV CS,AX是错误的

  • 立即数不能直接送至段寄存器。例如MOV SS,2000H是错误的

1.2 MOVZX

将源操作数内容复制到目的操作数并将该值零扩展到16位或者32位

用法:

MOVZX DST,SRC

说明:

  • 只适用于无符号整数
  • 目的操作数必须是寄存器

1.3 MOVSX

将源操作数内容复制到目的操作数并将该值符号扩展到16位或者32位

用法:

MOVZX DST,SRC

说明:

  • 只适用于有符号整数
  • 目的操作数必须是寄存器

1.4 LAHF

将EFLAGS寄存器的低字节复制到AH寄存器中

用法:

LAHF

说明:

被复制的标志包含符号标志,零标志,辅助进位标志,奇偶标志和进位标志

1.5 SAHF

复制AH寄存器的值到EFLAGS寄存器的低字节

用法:

SAHF

说明:

用于恢复FLAGS低字节标记位

1.6 XCHG

交换两个操作数的内容

用法:

XCHG SRC1,SRC2

说明:

不接受立即操作数,其它和MOV指令规则一致

1.7 直接偏移操作数

对变量地址进行偏移得到新的地址

用法:

var+n

说明:

偏移数目n为字节,所以在数组元素大小不是1字节时,取下一个元素偏移也不是1


文章作者: shigc
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 shigc !
  目录