通用寄存器及其命名
1.IA-32系列有8个32位通用寄存器,名称分别为:EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI
2.16位寄存器有4个,AX,BX,CX,DX
简单传送指令
1.MOV 传送指令 MOV DEST,SRC
2.XCHG 交换指令 XCHG OPER1,OPER2 把操作数oper1的内容与操作数oper2的内容交换
简单加减指令
ADD 加法指令 ADD DEST,SRC
SUB 减法指令 SUB DEST,SRC
INC 加1指令 INC DEST
DEC 减1指令 DEC DEST
NEG 取补指令 NEG OPRD
标志寄存器及其使用
状态标志
CF(carry flag) 进位标志 主要反映算术运算是否产生进位或借位,若产生,则CF=1,否则CF=0
ZF 零标志 反映运算结果是否为0
SF(sign flag) 符号标志 根据运算结果的最高位,若最高位为1则SF为1,否则为0,反映了有符号数运算结果的正负(0正1负)
OF(overflow flag) 溢出标志 反映有符号数运算结果是否产生溢出,是置1,否置0
PF(parity flag) 奇偶标志 偶数置1奇数置0
AF 辅助进位标志
状态标志操作指令
CLC(clear carry flag) 清进位标志指令
STC(set carry flag) 置进位标志指令
CMC(complement carry flag) 进位标志取反指令
LAHF(load status flags into AH register) 获取状态标志操作指令
SAHF(store AH into Flags) 设置状态标志操作指令
带进位加减指令
ADC(add with carry) 带进位加法指令 ADC DEST,SRC
SBB(substraction with borrow) 带借位减法 SBB DEST,SRC
取有效地址指令
LEA(load effective address) 取有效地址指令 LEA REC,OPRD
CMP 比较指令 CMP DEST,SRC
JMP 无条件段内直接转移指令 JMP LABEL
堆栈和堆栈操作
PUSH 进栈指令 PUSH SRC 把源操作数src压入堆栈
POP 出栈指令 POP DEST 从栈顶弹出一个双字或字数据到目的操作数
PUSHA 16位通用寄存器全进栈指令 PUSHA 将所有8个16位通用寄存器的内容压入堆栈
POPA 16位通用寄存器全出栈指令 POPA 以PUSHA相反的顺序从堆栈中弹出内容,从而恢复PUSHA之前的寄存器状态
PUSHAD 32位通用寄存器全进栈指令 PUSHAD 将所有8个32位通用寄存器的内容压入堆栈
POPAD 32位通用寄存器全出栈指令 POPAD 以PUSHAD相反的顺序从堆栈中弹出内容,从而恢复PUSHAD之前的寄存器状态
过程调用和返回指令
CALL 过程调用指令 CALL LABEL 段内直接调用LABEL
RET 段内过程返回指令 RET 使子程序结束,继续执行主程序
算术逻辑运算指令
MUL 无符号数乘法指令
IMUL 有符号数乘法指令
IMUL DEST,SRC 有符号数乘法指令
IMUL DEST,SRC1,SRC2 有符号数乘法指令
DIV 无符号数除法指令
IDIV OPRD 有符号数除法指令
符号拓展指令
CBW 字节转化为字指令 CBW
CWD 字转化为双字指令 CWD
CDQ 双字转化为四字指令 CDQ
CWDE 字转化为双字指令 CWDE
拓展传送指令
MOVSX 符号拓展传送指令 MOVSX DEST,SRC 把源操作数SRC符号拓展后送至目的操作数DEST
MOVZX MOVZX DEST,SRC 把源操作数SRC零拓展后送至目的操作数DEST
逻辑运算指令
NOT 否运算指令 NOT OPRD
AND 与运算指令 AND DEST,SRC
OR 或运算指令 OR DEST,SRC
XOR 异或运算 XOR DEST,SRC
TEST 测试指令 TEST DEST,SRC
移位指令 一般移位指令
SAL 算术左移 SAL OPRD,count
SHL 逻辑左移 SHL OPRD,count
SAR 算术右移 SAR OPRD,count
SHR 逻辑右移 SHR OPRD,count
循环移位指令
ROL 左循环移位指令 ROL OPRD,count
ROR 右循环移位指令 ROR OPRD,count
RCL 带进位左循环移位 RCL OPRD,count
RCR 带进位右循环移位 RCR OPRD,count
循环指令
LOOP 计数循环指令 LOOP LABEL
LOOPE 等于循环指令 LOOPE LABEL
LOOPZ 零循环指令 LOOPZ LABEL
LOOPNE 不等于循环指令 LOOPE LABEL
LOOPNZ 非零循环指令 LOOPNZ LABEL
JECXZ 计数转移指令 JECXZ LABEL
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。