1.数据传送指令
指令 |
参数 |
备注 |
mov |
dest,source |
数据传送 |
CBW |
|
字节转换成字 |
CWD |
|
字转换成双字 |
LAHF |
|
FLAGS低8位装入AH寄存器 |
SAHF |
|
AH寄存器内容送到FLAGS低8位 |
LDS |
dest,source |
设定数据段指针 |
LES |
dest,source |
设定附加段指针 |
LEA |
dest,source |
装入有效地址 |
PUSH |
source |
将一个字压入栈顶 |
POP |
dest |
将一个字从栈顶弹出 |
PUSHF |
|
将标志寄存器FLAGS的内容压入栈顶 |
POPF |
|
将栈顶内容弹出到标志寄存器FLAGS |
XCHG |
dest,source |
交换 |
XLAT |
source |
表转换 |
2.算数运算指令
指令 |
参数 |
备注 |
汇编格式 |
|
指令的操作 |
AAA |
|
加法的ASCII调整 |
AAD |
|
除法的ASCII调整 |
AAM |
|
乘法的ASCII调整 |
AAS |
|
减法的ASCII调整 |
DAA |
|
加法的十进制调整 |
DAS |
|
减法的十进制调整 |
MUL |
source |
无符号乘法 |
IMUL |
source |
整数乘法 |
DIV |
source |
无符号除法 |
IDIV |
|
整数除法 |
ADD |
dest,source |
加法 |
ADC |
dest,source |
带进位加 |
SUB |
dest,source |
减法 |
SBB |
dest,source |
带借位减 |
CMP |
dest,source |
比较 |
INC |
dest |
加1 |
DEC |
dest |
减1 |
NEG |
dest |
求补 |
3.逻辑运算指令
指令 |
参数 |
备注 |
AND |
dest,source |
逻辑‘与’ |
OR |
dest,source |
逻辑‘或’ |
XOR |
dest,source |
逻辑‘或非’ |
NOT |
dest |
逻辑‘非’ |
TEST |
dest,source |
测试(非破坏性逻辑‘与’) |
4.移位指令
指令 |
参数 |
备注 |
RCL |
dest,count |
通过进位循环左移 |
RCR |
dest,count |
通过进位循环右移 |
ROL |
dest,count |
循环左移 |
ROR |
dest,count |
循环右移 |
SHL/SAL |
dest,count |
逻辑左移/算数左移 |
SHR |
dest,count |
逻辑右移 |
SAR |
dest,count |
算术右移 |
5.串操作指令
指令 |
参数 |
备注 |
MOVS/MOVSB/MOVSW |
dest,source |
字符串传送 |
CMPS/CMPSB/CMPSW |
dest,source |
字符串比较 |
LODS/LODSB/LODSW |
source |
装入字节串或字串到累加器 |
STOS/STOSB/STOSW |
dest |
存储字节串或字串 |
SCAS/SCASB/SCASW |
dest |
字符串扫描 |
6.程序控制指令
指令 |
参数 |
备注 |
CALL |
dest |
调用一个过程(子程序) |
RET |
|
[弹出字节数(必须为偶数)]从过程(子程序)返回 |
INT |
int_type |
软件中断 |
INTO |
|
溢出中断 |
IRET |
|
从中断返回 |
JMP |
dest |
无条件转移 |
JG/JNLE |
short_label |
大于或不小于等于转移 |
JGE/JNL |
short_label |
大于等于或不小于转移 |
JL/JNGE |
short_label |
小于或不大于等于转移 |
JLE/JNG |
short_label |
小于等于或不大于转移 |
JA/JNBE |
short_label |
高于或不低于等于转移 |
JAE/JNB |
short_label |
高于等于或不低于转移 |
JB/JNAE |
short_label |
低于或不高于等于转移 |
JBE/JNA |
short_label |
低于等于或不高于转移 |
JO |
short_label |
溢出标志为1转移(溢出转移) |
JNO |
short_label |
溢出标志为0转移(无溢出转移) |
JS |
short_label |
符号标识为1转移(结果为负转移) |
JNS |
short_label |
符号标识为1转移(结果为正转移) |
JC |
short_label |
进位标志为1转移(有进位转移) |
JNC |
short_label |
进位标志为0转移(无进位转移) |
JZ/JE |
short_label |
零标志为1转移(等于或为0转移) |
JNZ/JNE |
short_label |
零标志为0转移(不等于或不为0转移) |
JP/JPE |
short_label |
奇偶标志为1转移(结果中有偶数个1转移) |
JNP/JPO |
short_label |
奇偶标志为0转移(结果中有奇数个1转移) |
JCXZ |
short_label |
若CX=0则转移 |
LOOP |
short_label |
CX不等于0时循环 |
LOOPE/LOOPZ |
short_label |
CX不等于0且ZF=1时循环 |
LOOPNE/LOOPNZ |
short_label |
CX不等于0且ZF=0时循环 |
STC |
|
进位标志置1 |
CLC |
|
进位标识置0 |
CMC |
|
进位标志取反 |
STD |
|
方向标志置1 |
CLD |
|
方向标志置0 |
STI |
|
中断标志置1(允许可屏蔽中断) |
CLI |
|
中断标志置0(禁止可屏蔽中断) |
ESC |
|
CPU交权 |
HLT |
|
停机 |
LOCK |
|
总线封锁 |
NOP |
|
无操作 |
WAIT |
|
等待至TEST(上边有个横线)信号有效为止 |
7.输入/输出指令
指令 |
参数 |
备注 |
IN |
acc,source |
从外设接口输入字节或字 |
OUT |
dest,acc |
向外设接口输出字节或字 |
备注:
dest 目的操作数、目的串
source 源操作数、源串
acc 累加器
count 计数值
int_type 中断类型号
short_label 短距离标号
基于转载文章修改,原文链接:https://blog.csdn.net/hanqdi_/article/details/84785038