8086指令系统
数据传送指令:
1. 通用数据传送:
指令名称 | 指令格式 | 功能 |
MOV | MOV des,sou | (sou)–>(des) |
XCHG | XCHG des,sou | 交换数据 |
PUSH | PUSH sou | 入栈 |
POP | POP sou | 出栈 |
2. 累加器AX传送
指令名称 | 指令格式 | 功能 |
XLAT | XLAT | DS:[AL+BX] –> AL |
IN | IN des,sou | 输入指令 |
OUT | OUT des,sou | 输出指令 |
3. 地址传送:
指令名称 | 指令格式 | 功能 |
LEA | LEA des,sou | sou的偏移地址–>des |
LDS | LDS des,sou | sou32位,sou高16位–>DS,sou低16位–>des |
LES | LES des,sou | sou32位,sou高16位–>ES,sou低16位–>des |
4. 标志传送:
指令名称 | 指令格式 | 功能 |
LAHF | LAHF | 标志位低8位–>AH |
SAHF | SAHF | AH–>标志位低8位 |
PUSHF | PUSHF | 标记寄存器人栈 |
POPF | POPF | 标记寄存器出栈 |
5. 数据类型传送:数据类型转换 byte到word ,word到double word
指令名称 | 指令格式 | 功能 |
CBW | CBW | (AL)>=80h AH=FFH 否则 AH=00H |
CWD | CWD | (AX)>=8000h DX=FFFFH 否则 DX=0000H |
算术运算指令:
减法指令:
指令名称 | 指令格式 | 功能 |
NEG | NEG des | des取反加一(求补码操作) |
乘法指令:
指令名称 | 指令格式 | 功能 |
MUL | MUL src | 无符号乘法:src为byte:AL*(src)–> AX ,src为word:AX*(src)–> DX,AX |
IMUL | IMUL src | 有符号乘法:src为byte:AL*(src)–> AX ,src为word:AX*(src)–> DX,AX |
除法指令:
指令名称 | 指令格式 | 功能 |
DIV | DIV src | 无符号乘法:src为byte:AL*(src)–> AX ,src为word:AX*(src)–> DX,AX |
IDIV | IDIV src | 有符号乘法:src为byte:AX /(src)–> AL…AH ,src为word:DX,AX /(src)–> AX…DX |
十进制调整指令:
指令名称 | 指令格式 | 功能 | 注意 |
DAA | DAA | AL低四位>9或AF=1:AL自加6H修正,AF=1。AL高四位>9或CF=1:AL自加60H修正,CF=1 | 加法之后用,压缩码 |
DAS | DAS | AL低四位>9或AF=1:AL自加6H修正,AF=1。AL高四位>9或CF=1:AL自加60H修正,CF=1 | 减法之后用,压缩码 |
AAA | AAA | 只管AL低四位 | 加法之后用,非压缩码 |
AAS | AAS | 只管AL低四位 | 减法之后用,非压缩码 |
AAM | AAM | AL除10,商放在AH中,余数放AL,MUL之后,AL中乘积调整为非压缩的BCD码,结果放于AX | 紧跟MUL之后用,ASCII码 |
AAD | AAD | AH寄存器的内容*10+AL的内容,结果送到AL,同时AH清零 | DIV之前对被除数处理,ASCII码 |