微型计算机——指令部分总结
助记符格式 |
功能 |
注意事项 |
分类 |
|
MOV d,s |
传送 |
|
通用数据传送(5条) |
|
XCHAG d,s |
交换 |
不允许使用立即数 不允许使用段寄存器 |
||
PUSH s |
压入堆栈 |
栈顶单元SS:SP 不允许使用立即数 必须以字为单位 |
||
POP d |
弹出堆栈 |
|||
XLAT |
查表转换 |
|
||
|
|
|
|
|
LEA reg16,s |
取有效地址 |
源操作数必须为存储器寻址方式 目的操作数是16位通用寄存器,不能是段寄存器 |
地址传送(3条) |
|
LDS reg16,s |
取逻辑地址(指针) |
|
||
LES reg16,s |
取逻辑地址(指针) |
|
||
|
|
|
|
|
LAHF |
标志寄存器送AH |
|
标志传送(4条) |
|
SAHF |
AH送标志寄存器 |
|
||
PUSHF |
标志入栈 |
|
||
POPF |
标志出栈 |
|
||
|
|
|
|
|
IN |
累加器,端口地址 |
|
输入输出(2条) |
|
OUT |
数据输出至I/O端口 |
|
||
算术运算指令 |
||||
助记符格式 |
功能 |
注意事项 |
分类 |
|
ADD d,s |
加法 |
操作数不能使用段寄存器 |
加法(3) |
|
ADC d,s |
带进位加 |
CF是进位标志符 |
||
INC d |
加一 |
INC不影响CF标志 |
||
|
|
|
|
|
SUB d,s |
减法 |
|
减法(5) |
|
SBB d,s |
带借位减 |
|
||
DEC d |
减一 |
DEC不影响CF标志 |
||
NEG d |
取负 |
|
||
CMP d,s |
比较 |
|
||
|
|
|
|
|
MUL s |
无符号乘法 |
|
乘法(2) |
|
IMUL s |
有符号乘法 |
|
||
|
|
|
|
|
DIV s |
无符号数除法 |
|
除法(2) |
|
IDIV s |
有符号数除法 |
|
||
|
|
|
|
|
CBW |
字节扩展为字 |
|
符号扩展(2) |
|
CWD |
字扩展为双字 |
|
||
|
|
|
|
|
DAA |
加法压缩BCD调整 |
必须紧跟在ADD/ADC指令之后出现
|
BCD码调整(6) |
|
AAA |
加法非压缩BCD调整 |
|
||
DAS |
减法压缩BCD调整 |
|
||
AAS |
减法非压缩BCD调整 |
|
||
AAM |
乘法非压缩BCD调整 |
|
||
AAD |
除法非压缩BCD调整 |
|
||
功能 |
注意事项 |
分类 |
||
AND d,s |
用来置零 |
|
逻辑运算指令 除“非”指令不影响标志外,其他逻辑运算指令均影响标志SF、ZF和PF,而OF和CF一定被置零,AF不确定 一条指令把DX赋值为0: |
|
OR d,s |
用来使某些位置为1 |
|
||
XOR d,s |
用来某些位置取反 |
|
||
NOT d |
|
|
||
TEST d,s |
测试 |
按位与,只影响标志位,用来测试某些位是0或1 SF是对最高位的检测,ZF是对整个的检测 |
||
|
|
|
|
|
SHL d,count |
逻辑左移 |
|
移位运算指令 移位次数大于1时写入CL 影响标志OF,SF,ZF,PF,CF,但AF不确定。 移位为1时,结果使最高位符号位变化,OF=1 当移位超过1时,OF无效。 |
|
SHR d,count |
逻辑右移 |
|
||
SAL d,count |
算数左移 |
同逻辑左移 |
||
SAR d,count |
算数右移 |
|
||
ROL d,count |
向左小循环 |
|
||
ROR d,count |
向右小循环 |
|
||
RCL d,count |
向左大循环 |
|||
RCR d,count |
向右大循环 |
|
||
控制转移指令(程序不可使用MOV直接改变CS和IP的值) |
||||
助记符格式 |
功能 |
注意事项 |
分类 |
|
JMP 目标地址 |
|
|
无条件转移 |
|
CALL 子程序地址 |
|
|
||
RET或RET n |
|
|
||
JZ/JE 标号 |
|
|
单标志 |
条件转移 |
JNZ/JNE标号 |
|
|
||
JC标号 |
|
CF |
||
JNC标号 |
|
|
||
JO标号 |
|
OF |
||
JNO标号 |
|
|
||
JS标号 |
|
SF |
||
JNS标号 |
|
|
||
JP/JPE标号 |
|
PF:奇偶标志,低八位1的个数为偶数为1。 |
||
JNP/JPO标号 |
|
|
||
JA/JNBE标号 |
大于 |
|
无符号数 JZ等于 |
|
JAE/JNB标号 |
不大于 |
|
||
JB/JNAE标号 |
小于 |
|
||
JBE/JNA标号 |
不小于 |
|
||
JG/JNLE标号 |
大于 |
|
有符号数 |
|
JGE/JNL标号 |
不大于 |
|
||
JL/JNGE标号 |
小于 |
|
||
JLE/JNG标号 |
不小于 |
|
||
|
|
|
|
|
LOOP标号 |
|
|
循环控制 |
|
LOOPE/LOOPZ标号 |
|
|
||
LOOPNE/LOOPNZ标号 |
|
|
||
INT n |
|
|
中断 |
|
INTO |
|
|
||
IRET |
|
|