常用汇编指令

作者: paranoid 分类: 汇编语言 发布时间: 2019-01-28 20:50

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依次弹出堆栈.

XCHG交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数)
CMPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX)
XADD先交换再累加.(结果在第一个操作数里)

ADD加法。
ADC带进位加法。
INC加1。
AAA加法的ASCII码调整。
DAA加法的十进制调整。
SUB减法。
SBB带借位减法。
DEC减1。
NEC求反(以0减之)。
CMP比较.(两操作数作减法,仅修改标志位,不回送结果)。
AAS减法的ASCII码调整。
DAS减法的十进制调整。
MUL无符号乘法。
IMUL整数乘法。
AAM乘法的ASCII码调整。
DIV无符号除法。
IDIV整数除法。
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通过进位的循环右移.

程序转移指令
1.简单的条件转移指令
JZ(或jE)OPR—————结果为零转移,测试条件ZF=1
JNZ(或jNE)OPR————–结果不为零转移,测试条件ZF=0
JSOPR———————-结果为负转移,测试条件SF=1
JNSOPR———————结果为正转移,测试条件SF=0
JOOPR———————溢出转移,测试条件OF=
JNOOPR——————–不溢出转移,测试条件SF=0
JPOPR———————结果为偶转移,测试条件SF=1
JNPOPR——————–结果为奇转移,测试条件SF=0
JCOPR——————–有进位转移,测试条件SF=1
JNCOPR——————–无进位转移,测试条件SF=0

2.无符号比较条件转移指令(以下指令经常是CMPOPD,OPS后面的指令根据比较结果来实现转移)
JB(或JNAE)opd————–小于或者不大于等于则转移
JNB(或JAE)opd—————不小于或者大于等于则转移
JA(或NJBE)OPD—————大于或者不小于等于则转移
JNA(或JBE)OPD—————不大于或者小于等于则转移

3.带符号比较条件转移指令
JL(或JNGE)————–小于或者不大于等于则转移
JNL(或JGE)————–不小于或者大于等于则转移
JG(或NJLE)—————大于或者不小于等于则转移
JNG(或JLE)—————不大于或者小于等于则转移

调用子程序与返回指令
CALL子程序调用指令
RET子程序返回指令

其它指令
OFFSET——————–返回偏移地址
SEG——————–返回段地址
EQU(=)——————–等值语句
PURGE——————–解除语句
DUP——————–操作数字段用复制操作符
SEGMENT,ENDS——————–段定义指令
ASSUME——————–段地址分配指令
ORG——————–起始偏移地址设置指令
$——————–地址计数器的当前值
PROC,ENDP——————–过程定义语句
NAME,TITLE,END——————–程序开始结束语句
MACRO,ENDM——————–宏定义指令
XLAT(TRANSLATE)——————–换码指令—-

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注