8086指令
- 格式:doc
- 大小:172.00 KB
- 文档页数:9
8086指令
1.数据传送指令
(1)通用传送指令
指令名称 指令格式 操作
通用传送MOV MOV DST,SRC 该指令将SRC的内容传送到DST中
入栈 PUSH SRC 该指令将16位SRC数据压入堆栈
出栈 POP DST 该指令从堆栈弹出16位数据到DST中
标志入栈 PUSHF 该指令将16位标志寄存器内容压入堆栈
标志出栈 POPF 该指令将16位堆栈数据弹出送入标志寄存器中
交换 XCHG OPRD1,OPRD2 该指令将OPRD1的内容与OPRD2的内容交换
(2)累加器专用传送指令
IN输入 IN AL/AX,端口地址表达式 从8/16位端口读入一个字节/字到AL/AX寄存器中
OUT输出 OUT 端口地址表达式,AL/AX 将AL/AX寄存器中的一个字节/字写到8/16位端口
XLAT换码
XLAT或XLAT 地址标号 将BX值加上AL值作为内存的有效地址,取出内存的内容送入AL。一般用在表格检索,可以使累加器AL中的一个值变换为内存表格中的某一个值。 (AL)←((BX)+(AL))
(3)地址传送指令
装入偏址 LEA
16位寄存器名,存储器寻址方式 将源操作数的偏移地址传到16位寄存器中
(16位寄存器不允许是段寄存器)
装入偏址和数据段值 LDS 16位寄存器名,存储器寻址方式 将寻址到的存储单元的第一个字送16位寄存器,第二个字送DS寄存器(同上)
装入偏址和附加数据段值 LES 16位寄存器名,存储器寻址方式 将寻址到的存储单元的第一个字送16位寄存器,第二个字送ES寄存器(同上)
(4)标志传送指令
LAHF标志送AH
LAHF 将标志寄存器的低8位传送到AH中
SAHF AH送标志 SAHF 将AH的内容送到标志寄存器的低8位
2.算术运算指令
(1)加法指令
ADD加法 ADD DST,SRC 将DST内容与SRC内容相加,结果送到DST中,SRC不变
ADC带进位加法 ADC DST,SRC 将DST内容、SRC内容和CF相加,结果送到DST中,SRC不变
INC加1 INC OPR 将OPR内容加1后,结果存入原地址
(2)减法指令
SUB减法 SUB DST,SRC 将DST内容与SRC内容相减,结果送到DST中
SBB带借位减法 SBB DST,SRC 将DST内容减SRC内容再减CF内容,结果送到DST中
DEC减1 DEC OPR 将OPR内容减1后,结果存入原地址
NEG求补 NEG OPR 将OPR内容求补码后,结果存入原地址
CMP比较 CMP OPR1,OPR2 将OPR1内容减OPR2内容,结果不保存,只根据结果设置标志位
(3)乘法指令
MUL无符号数乘法 MUL SRC 若为字节操作(AX)←(AL)×SRC
若为字操作 (DX),(AX)←(AX)×SRC
IMUL有符号数乘法 IMUL SRC
与MUL相同,只是处理的为有符号数
(4)除法指令
DIV无符号数乘法 DIV SRC 若为字节操作(AL)←(AX)/SRC的商
(AH)←(AX)/SRC的余数
若为字操作 (AX)←(DX、AX)/SRC的商
(DX)←(DX、AX)/SRC的余数
IDIV无符号数乘法 IDIV SRC 与DIV相同,只是处理的为有符号数
(5)符号扩展指令
CBW字节转化为字 CBW 将(AL)的符号扩展到(AH)中去。如果(AL)的最高有效位为0,则(AH)=00H;如果(AL)的最高有效位为1,则(AH)=0FFH
CWD字节转化为双字 CWD 将(AX)的符号扩展到(DX)中去。如果(AX)的最高有效位为0,则(DX)=0000H;如果(AX)的最高有效位为1,则(DX)=0FFFFH
(6)十进制调整指令
DAA加法十进制调整指令 DAA 调整(AL)中的二进制BCD码的和
DAS加法十进制调整指令 DAS 调整(AL)中的二进制BCD码的差
AAA加法的非压缩调整指令 AAA 调整(AL)中的和(非压缩BCD码)
AAS减法的非压缩调整指令 AAS 调整(AL)中的差(非压缩BCD码)
3.逻辑运算和移位指令
(1)逻辑运算指令
逻辑与 AND DST,SRC DST与SRC按位相与,结果存入DST中
逻辑或 OR DST,SRC DST与SRC按位相或,结果存入DST中
逻辑非 NOT DST DST逐位取反,结果存入DST中
逻辑异或 XOR DST,SRC DST与SRC按位相异或,结果存入DST中
测试 TEST DST,SRC DST与SRC按位相与,不保存结果,只根据结果设置状态标志。通常用于在不改变原有操作数的情况下,用来检测某一位或某几位的条件是否满足
(2)移位指令
SHL逻辑左移 SHL OPR,CNT 将OPR的内容左移CNT指定的次数,最低位补入相应个数的0,CF内容为最后移入的值
SHR逻辑右移 SHR OPR,CNT 将OPR的内容右移CNT指定的次数,左边空位补入相应个数的0,CF内容为最后移入的值
SAL算数左移 SAL OPR,CNT 与SHL相同
SAR算数右移 SAR OPR,CNT 将OPR的内容右移CNT指定的次数,左边空位补入最高位内容,CF内容为最后移入的值
ROL循环左移 ROL OPR,CNT 将OPR内容的最高位与最低位连成一个环,移位时就在这个环中进行,左移次数由CNT决定,CF内容为最后移入的值
ROR循环右移 ROR
OPR,CNT 与ROL基本相同,只是移位方向向右
RCL带进位循环左移 RCL OPR,CNT 将OPR的内容连同CF标志一起向左循环移位CNT次
RCR带进位循环右移 RCR
OPR,CNT 与RCL基本相同,只是移位方向向右
注:OPR不能为立即数和段寄存器,若CNT大于1,应先将CNT存入CL寄存器中,移位指令中CNT写为CL即可。
4.串操作指令
(1)重复前缀指令
REP重复前缀 REP strpri(strpri可为MOVS、LODS或STOS) 当CX=0时不执行strpri给定的指令,否则继续执行
REPE/REPZ重复前缀 REPE/REPZ strpri
(strpri可为CMPS或SCAS) 当CX=0(数据串比较完成)或ZF=0(两个操作数不等)时不执行strpri给定的指令,否则继续执行
REPNE/REPNZ重复前缀 REPNE/REPNZ strpri
(strpri可为CMPS或SCAS) 当CX=0(数据串比较完成)或ZF=1(两个操作数相等)时不执行strpri给定的指令,否则继续执行
(2)串传送指令
MOVS串传送 MOVS DST,SRC
MOVSB(字节)
MOVSW(字) 该指令可以把由SI指向的数据段DS中的一个字(或字节)送到由DI指向的附加段ES的一个字(或字节)中去,同时根据方向标志DF及数据格式(字或字节)对SI和DI进行修改。若将传送字或字节的长度送CX,MOVS指令前加前缀REP,可实现传送一个字节块或一个字块。
LODS取串 LODS DST
LODSB
LODSW 该指令把由SI指向的数据段DS中某单元的内容送到AL或AX中,并根据方向标志DF及数据格式(字或字节)修改SI的内容。该指令一般不与REP联用。
STOS存串 STOS DST
STOSB
STOSW 该指令把AL或AX的内容存入DI指向的附加段ES的某单元中,并根据方向标志DF及数据格式修改DI的内容。该指令可与REP联用,一般用来实现清除内存某一区域。
(3)串比较指令 CMPS串比较 CMPS SRC,DST
CMPSB
CMPSW 该指令把由SI指向的数据段DS中的一个字(或字节)与由DI指向的附加段ES的一个字(或字节)相减,但不保存结果,只根据结果设置标志位。该指令可与REPE/ REPNE联用,实现两个数据串的比较。
SCAS串搜索 SCAS DST
SCASB
SCASW 该指令把AL或AX的内容与由DI指向的附加段ES中的一个字(或字节)相减,但不保存结果,只根据结果设置标志位。该指令可与REPE/ REPNE联用,实现从一个字符串中查找一个指定字符的功能。
5.控制转移指令
(1)无条件转移指令
段内直接短转移 JMP SHORT 转移地址标号 在同一段的范围内进行转移,只改变IP的值,(IP)←(IP)+8位位移量
段内直接近转移 JMP NEAR PTR 转移地址标号
JMP 数值偏移地址 在同一段的范围内进行转移,只改变IP的值,(IP)←(IP)+16位位移量
段内间接转移 JMP 16位寄存器名
JMP WORD PTR 存储器寻址方式
JMP 存储器寻址方式 跳转到当前段寻址方式确定的偏移地址处,(IP)←(EA)
段间直接转移 JMP FAR PTR 转移地址标号
JMP 段地址值:偏移地址 (IP)← 转移地址标号的偏移地址
(CS)← 转移地址标号的段地址
段间间接转移 JMP DWORD PTR 存储器寻址方式 (IP)←寻址到的存储单元的第一个字
(CS)←寻址到的存储单元的第二个字
(2)条件转移指令
①简单条件转移指令(根据某一标志位的值决定是否有转移,测试的标志位有S、Z、C、P、O 5个,每个标志位可能取“0”和“1”,共10条)
指令名 测试条件 操作
JZ(JE) ZF=1 结果为零(或相等)则转移
JNZ(JNE) ZF=0 结果不为零(或不相等)则转移
JS SF=1 结果为负则转移
JNS SF=0 结果为正则转移
JO OF=1 结果溢出则转移
JNO OF=0 结果无溢出则转移
JP(JPE) PF=1 奇偶位为1则转移
JNP(JPO) PF=0 奇偶位为0则转移
JC(JB或JNAE) CF=1 有进位则转移
JNC(JNB或JAE) CF=0 无进位则转移
②无符号数比较条件转移指令
JB(JNAE或JC) CF=1 低于,或不高于或等于,或进位为1则转移
JNB(JAE或JNC) CF=0 不低于,或高于或等于,或进位为0则转移
JA(JNBE) CF∨ZF=0 高于,或不低于或等于则转移
JNA(JBE) CF∨ZF=1 不高于,或低于或等于则转移