51CTO下载-汇编指令大全.pdf
文本预览下载声明
一、数据传输指令
───────────────────────────────────────
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
MOV 传送字或字节.
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI 依次压入堆栈.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX 依次弹出堆栈.
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI 依次压入堆栈.
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP 交换32位寄存器里字节的顺序
XCHG 交换字或字节.( 至少有一个**作数为寄存器,段寄存器不可作为**作数)
CMPXCHG 比较并交换**作数.( 第二个**作数必须为累加器AL/AX/EAX)
XADD 先交换再累加.( 结果在第一个**作数里 )
XLAT 字节查表转换.
──BX 指向一张 256 字节的表的起点,AL 为表的索引值 (0-255,即
0-FFH); 返回 AL 为查表结果.([BX+AL]-AL)
2. 输入输出端口传送指令.
INI/O端口输入.( 语法:IN 累加器,{端口号│DX} )
OUTI/O端口输出.( 语法:OUT{端口号│DX},累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
其范围是 0-65535.
3. 目的地址传送指令.
LEA 装入有效地址.
例:LEADX,string;把偏移地址存到DX.
LDS 传送目标指针,把指针内容装入DS.
例:LDS SI,string;把段地址:偏移地址存到DS:SI.
LES 传送目标指针,把指针内容装入ES.
例:LES DI,string;把段地址:偏移地址存到ES:DI.
LFS 传送目标指针,把指针内容装入FS.
例:LFS DI,string;把段地址:偏移地址存到FS:DI.
LGS 传送目标指针,把指针内容装入GS.
例:LGS DI,string;把段地址:偏移地址存到GS:DI.
LSS 传送目标指针,把指针内容装入SS.
例:LSS DI,string;把段地址:偏移地址存到SS:DI.
4. 标志传送指令.
LAHF 标志寄存器传送,把标志装入AH.
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
PUSHF 标志入栈.
POPF 标志出栈.
PUSHD 32位标志入栈.
POPD32位标志出栈.
二、算术运算指令
───────────────────────────────────────
ADD 加法.
ADC 带进位加法.
INC 加 1.
AAA 加法的ASCII 码调整.
DAA 加法的十进制调整.
SUB 减法.
SBB 带借位减法.
DEC 减 1.
NEC 求反(以 0 减之).
CMP 比较.(两**作数作减法,仅修改标志位,不回送结果).
AAS 减法的ASCII码调整.
DAS 减法的十进制调整.
MUL 无符号乘法.
IMUL 整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM 乘法的ASCII 码调整.
DIV 无符号除法.
IDIV 整数除法.
以上两条,结果回送:
商回送AL,余数回送AH,(字节运算);
或 商回送AX,余数回送DX, (字运算).
AAD 除法的ASCII 码调整.
CBW 字节转换为字.(把AL 中字节的符号扩展到AH 中去)
CWD 字转换为双字.(把AX中的字的符号扩展到DX中去)
CWDE 字转换为双字.(把AX 中的字符号扩展到EAX 中去)
CDQ 双字扩展.(把EAX 中的字的符号扩展到EDX中去)
三、逻辑运算指令
───────────────────────────────────────
AND 与运算.
OR 或运算.
XOR 异或运算.
NOT 取反.
TEST 测试.(两**作数作与运算,仅修改标志位,不回送结果).
SHL 逻辑左移.
SAL 算术左移.(=SHL)
SHR 逻辑右移.
SAR 算术右移.(=SHR)
ROL 循环左移.
ROR 循环右移.
RCL 通过进位的循环左移.
RCR 通过进位的循环右移.
以上八种移位指令,其移位次数可达255次.
移位一次时, 可直接用**作码. 如 SHLAX
显示全部