常用汇编指令

作者: 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)--------------------换码指令----

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

发表评论

邮箱地址不会被公开。