x01.os.6: 8086 指令

M:存储器
A:累加器
R:寄存器
SEGR:段寄存器
IMM:立即数
X:标志位状态依运算或操作结果而定
U:相应标志位未定义
-:不影响
同上: #

数据传送指令 时钟数 访问次数 字节数 对标志位影响 指令意义
MOV M,A 10(14) 1 3 - A-->M
MOV A,M 10(14) 1 3 - M-->A
MOV R1,R2 2 - 2 - R2-->R1
MOV R,M 8(12)+EA 1 2-4 - M-->R
MOV M,R 9(3)+EA 1 2-4 - R-->M
MOV R,IMM 4 - 2-3 - IMM-->R
MOV M,IMM 10(14)+EA 1 3-6 - IMM-->M
MOV SEGR,R16 2 - 2 - R16-->SEGR
MOV SEGR,M 8(12)+EA 1 2-4 - M-->SEGR
MOV R16,SEGR 2 - 2 - SEGR-->R16
MOV M,SEGR 9(13)+EA 1 2-4 - SEGR-->M
LEA R16,M 2+EA - 2-4 - OFFSET M-->R16
LDS R16,M32 24+EA 2 2-4 - M32 段地址-->DS, M32 偏移地址-->R16
LES R16,M32 24+EA 2 2-4 - M32 段地址-->ES, M32 偏移地址-->R16
SAHF 4 - 1 低8位改变 AH-->FLAG 低8位
LAHF 4 - 1 - FLAG低8位-->AH
POP R 12 1 1 - 栈顶字-->R
POP SEGR(CS非法) 12 1 1 - 栈顶字-->SEGR
POP M 25+EA 2 2-4 - 栈顶字-->M
POPF 8 1 1 各标志位均改变 栈顶字-->FLAG
PUSHF 10 1 1 - FLAGS进栈
PUSH R 15 1 1 - R进栈
PUSH SEGR(CS非法) 14 1 1 - SEGR进栈
PUSH M 24+EA 2 2-4 - M进栈
XCHG A,R 3 - 1 - A<-->R
XCHG R1,R2 4 - 2 - R1<-->R2
XCHG M,R 17(25)+EA 2 2-4 - M<-->R
XLAT 源表 11 1 1 - [BX+AL]-->AL
IN AL,IMM8 10(14) 1 2 - [IMM8]-->AL
IN AX,IMM8 10(14) 1 2 - [IMM8+1][IMM8]-->AX
IN AL,DX 8(12) 1 1 - [DX]-->AL
IN AX,DX 8(12) 1 1 - [DX+1][DX]-->AX
OUT IMM8,AL 10(14) 1 2 - AL-->[IMM8]
OUT IMM8,AX 10(14) 1 2 - AX-->[IMM8],[IMM8+1]
OUT DX,AL 8(12) 1 1 - AL-->DX
OUT DX,AX 8(12) 1 1 - AX-->[-DX],[DX+1]
算术运算指令 时钟数 访问次数 字节数 对标志位影响 指令意义
- - - - O D I T S Z A P C -
ADD R,M 9(13)+EA 1 2-4 X - - - X X X X X R+M-->R
ADD R,IMM 4 - 3-4 X - - - X X X X X R+IMM-->R
ADD A,IMM 4 1 2-3 X - - - X X X X X A+IMM-->A
ADD M,IMM 17(25)+EA 2 3-6 X - - - X X X X X M+IMM-->M
ADD M,R 16(24)+EA 2 2-4 X - - - X X X X X M+R-->M
ADC R1,R2 3 - 2 X - - - X X X X X 带进位加:目的操作数+源操作数+进位标志
ADC R,M 9(13)+EA 1 2-4 X - - - X X X X X -->目的操作数
ADC R,IMM 4 - 3-4 X - - - X X X X X
ADC A,IMM 4 - 2-3 X - - - X X X X X
ADC M,IMM 17(25)+EA 2 3-6 X - - - X X X X X
ADC M,R 16(24)+EA 2 2-4 X - - - X X X X X
INC R8 3 - 2 X - - - X X X X - R8+1-->R8
INC R16 2 - 1 X - - - X X X X - R16+1-->R16
INC M 15(23)+EA 2 2-4 X - - - X X X X - M+1-->M
AAA 4 - 1 U - - - U U X U X 调整AL中非压缩BCD之和
DAA 4 - 1 U - - - X X X X X 调整AL中的压缩BCD之和
SUB R1,R2 3 - 2 X - - - X X X X X R1-R2-->R1
SUB R,M 9(13)+EA 1 2-4 X - - - X X X X X R-M-->R
SUB R,IMM 4 - 3-4 X - - - X X X X X R-IMM-->R
SUB A,IMM 4 - 2-3 X - - - X X X X X A-IMM-->A
SUB M,IMM 17(25)+EA 2 3-6 X - - - X X X X X M-IMM-->M
SUB M,R 16(24)+EA 2 2-4 X - - - X X X X X M-R-->M
SUB R1,R2 3 - 2 X - - - X X X X X 带借位减:目的-源-进位标志
SUB R,M 9(13)+EA 1 2-4 X - - - X X X X X -->目的
SUB R,IMM 4 - 3-4 X - - - X X X X X
SUB A,IMM 4 - 2-3 X - - - X X X X X
SUB M,IMM 17(25)+EA 2 3-6 X - - - X X X X X
SUB M,R 16(24)+EA 2 2-4 X - - - X X X X X
DEC R8 3 - 2 X - - - X X X X - R8-1-->R8
DEC R16 2 - 1 X - - - X X X X - R16-1-->R16
DEC M 15(23)+EA 2 2-4 X - - - X X X X - M-1-->M
NEG R 2 - 2 X - - - X X X X X 0-R-->R
NEG M 16(24)+EA 2 2-4 X - - - X X X X X 0-M-->M
CMP R1,R2 3 - 2 X - - - X X X X X R1-R2
CMP R,M 9(13)+EA - 2-4 X - - - X X X X X R-M
CMP R,IMM 4 - 3-4 X - - - X X X X X R-IMM
CMP A,IMM 4 - 2-3 X - - - X X X X X A-IMM
CMP M,IMM 10(14)+EA - 3-6 X - - - X X X X X M-IMM
CMP M,R 9(13)+EA - 2-4 X - - - X X X X X M-R
AAS 4 - 1 U - - - U U X U X调整AL中非压缩BCD之差
DAS 4 - 1 X - - - X X X X X调整AL中压缩BCD之差
MUL R8 70-77 - 2 X - - - U U U U X AL*R8-->AX
MUL R16 118-133 - 2 X - - - U U U U X AX*R16-->DX:AX
MUL M8 (76to83)+EA 1 2-4 X - - - U U U U X AL*M-->AX
MUL M16 (128to164)+EA 1 2-4 X - - - U U U U X AX*M16-->DX:AX
IMUL R8 80-98 - 2 X - - - U U U U X 除参与运算的数为带符合整数外,与MUL同
IMUL R16 128-154 - 2 X - - - U U U U X
IMUL M8 (86to104)+EA 1 2-4 X - - - U U U U X
IMUL M16 (138to164)+EA 1 2-4 X - - - U U U U X
AMM 83 - 1 U - - - X X U X U 调整AX中的非压缩BCD之积
<-DIV R8 80-90 - 2 U - - - U U U U U AX/R8的商,余数-->AL:AH
<-DIV R16 144-162 - 2 #:同上 DX:AX/R16的商,余数-->AX:DX
<-DIV M8 (86to92)+EA 1 2-4 # AX/M8的商,余数-->AL:AH
<-DIV M16 (154to172)+EA 1 2-4 # DX:AX/M16的商,余数-->AX:DX
IDIV R8 101-112 - 2 # #:参与运算数为带符号整数
IDIV R16 165-184 - 2 #
IDIV M8 (107to118)+EA 1 2-4 #
IDIV M16 (175to194)+EA 1 2-4 #
AAD 60 - 2 U - - - X X U X U 将AX中的非压缩BCD调整,以便除
CBW 2 - 1 - 若 AL<80H,AH=0,否则AH=FFH
CWD 5 - 1 - 若 AX<8000H,DX=0;否则DX=FFFFH
逻辑运算指令 时钟数 访问次数 字节数 对标志位影响 指令意义
- - - - O D I T S Z A P C -
NOT R 3 - 2 - !R-->R
NOT M 16(24)+EA 2 2-4 - !M-->M
SAL/SHL R,1 2 - 2 X - - - X X U X X 算术,逻辑左移 1 次或 CL位
SAL/SHL R,CL 8+4/bit - 2 # #
SAL/SHL M,1 15(23)+EA 2 2-4 # #
SAL/SHL M,CL 20(28)+EA+4/bit 2 2-4 # #
SAR R,1 2 - 2 0 - - - X X U X X
SAR R,CL 8+4/bit - 2 # #
SAR M,1 15(23)+EA 2 2-4 # #
SAR M,CL 20(28)+EA+4/bit 2 2-4 # #
SHR R,1 2 - 2 X - - - X X U X X 逻辑右移 1 位或 CL位
SHR R,CL 8+4/bit - 2 # #
SHR M,1 15(23)+EA 2 2-4 # #
SHR M,CL 20(23)+EA+4/bit 2 2-4 # #
ROL R,1 2 - 2 X - - - - - - - X 不通过进位的循环左移 1 位或 CL位
ROL R,CL 8+4/bit - 2 # #
ROL M,1 15(23)+EA 2 2-4 # #
ROL M,CL 20(28)+EA+4/bit 2 2-4 # #
ROR R,1 2 - 2 # 不含进位的循环右移 1 位或 CL位
ROR R,CL 8+4/bit - 2 # #
ROR M,1 15(23)+EA 2 2-4 # #
ROR M,CL 20(28)+EA+4/bit 2 2-4 # #
RCL R,1 2 - 2 # 含进位的循环左移 1 位或 CL位
RCL R,CL 8+4/bit - 2 # #
RCL M,1 15(23)+EA 2 2-4 # #
RCL M,CL 20(28)+EA+4/bit 2 2-4 # #
RCR R,1 2 - 2 # 含进位的循环右移 1 位或 CL位
RCR R,CL 8+4/bit - 2 # #
RCR M,1 15(23)+EA 2 2-4 # #
RCR M,CL 20(28)+EA+4/bit 2 2-4 # #
AND R1,R2 3 - 2 0 - - - X X U X 0 R1&R2-->R1
AND R,M 9(13)+EA 1 2-4 # R&M-->R
AND R,IMM 4 - 3-4 # R&IMM-->R
AND A,IMM 4 - 2-3 # A&IMM-->A
AND M,IMM 17(25)+EA 2 3-6 # M&IMM-->M
AND M,R 16(24)+EA 2 2-4 # M&R-->M
TEST R1,R2 3 - 2 # R1&R2
TEST R,M 9(13)+EA 1 2-4 # R&M
TEST R,IMM 5 - 3-4 # R&IMM
TEST A,IMM 4 - 2-3 # A&IMM
TEST M,IMM 11+EA - 3-6 # M&IMM
OR R1,R2 3 - 2 # R1orR2-->R1
OR R,M 9(13)+EA 1 2-4 # R or M-->R
OR R,IMM 4 - 3-4 # R or IMM-->R
OR A,IMM 4 - 2-3 # A or IMM-->A
OR M,IMM 17(25)+EA 2 3-6 # M or IMM-->M
OR M,R 16(24)+EA 2 2-4 # M or R-->M
XOR R1,R2 3 - 2 # R1 ^R2-->R1
XOR R,M 9(13)+EA 1 2-4 # R^M-->R
XOR R,IMM 4 - 3-4 # R^IMM-->R
XOR A,IMM 4 - 2-3 # A^IMM-->A
XOR M,IMM 17(25)+EA 2 3-6 # M^IMM-->M
XOR M,R 16(24)+EA 2 2-4 # M^R-->M
串操作指令 时钟数 访问次数 字节数 对标志位影响 指令意义
- - - - O D I T S Z A P C -
MOVS 目的串,源串 18(26) 2 1 - 源串-->目的串,修改源目的串地址
REP MOVS 目的串,源串 9+17(25)/REP 2/REP 1 - #
CMPS 目的串,源串 22(30) 2 1 X - - - X X X X X 源串-目的串,
REP CMPS 目的串,源串 9+22(30)/REP 2/REP 1 # (SI+-1)/(SI+-2),(DI+-1)(DI+-2)
SCAS 目的串 15(19) 1 1 # (AL-字节串)/(AX-字符串),
REP SCAS 目的串 9+15(19)/REP 1/REP 1 # (DI+-1)/(DI+-2)
LODS 源串 12(16) 1 1 - 源串-->AL/AX,
REP LODS 源串 9+13(17)/REP 1/REP 1 - (SI+-1)/(SI+-2)
STOS 目的串 11(15) 1 1 - AL-->字节串,AX-->字串,
REP STOS 目的串 9+10(14)/REP 1/REP 1 - (DI+-1)/(DI+-2)
控制传送指令 时钟数 访问次数 字节数 对标志位影响 指令意义
- - - - O D I T S Z A P C -
CALL NEAR PROC 19(23) 1 3 - 下同:直接、间接调用近远过程(或子程序)
CALL FAR PROC 28(36) 2 5 - #
CALL M16 21(29)+EA 2 2-4 - #
CALL M32 37(57)+EA 4 2-4 - #
CALL R16 16(24) 1 2 - #
JMP 短标号 15 - 2 - 下同:无条件转向操作数所指的位置取指令
JMP NEAR-标号 15 - 3 - #
JMP FAR-标号 15 - 5 - #
JMP M16 18+EA - 2-4 - #
JMP M32 24+EA - 2-4 - #
JMP R16 11 - 2 - #
RET 20 1 1 - 下同:过程,子程序返回。段内,无操作数
RET 24 1 3 - #
RET 32 2 1 - #
RET 31 2 3 - #
JB/JNAE/JC 短标号 16/4 - 2 - 低于/不高于或等于/有进位(借位时),转向标号行指令
JAE/JNB/JNC 短标号 16/4 - 2 - 高于或等于/不低于/无进位(借位时),转向标号行指令
JE/JZ 短标号 16/4 - 2 - 等于/结果为 0时,转向标号行指令
JNE/JNZ 短标号 16/4 - 2 - 不等于/结果不为 0时,转向标号行指令
JS 短标号 16/4 - 2 - 符号标志 SF 为 1时,转向短标号行指令
JNS 短标号 16/4 - 2 - 符号标志位 SF 为 0时,转向短标号行指令
JP/JPE 短标号 16/4 - 2 - 奇偶标志 PF 为 1时,转向标号行指令
JNP/JPO 短标号 16/4 - 2 - 奇偶标志 PF 为 0时,转向标号行指令
JO 短标号 16/4 - 2 - 溢出,转向标号行指令
JNO 16/4 - 2 - 不溢出,转向标号行指令
JA/JNBE 短标号 16/4 - 2 - 高于/不低于时,转向标号行指令
JBE/JNA 短标号 16/4 - 2 - 低于或等于/不高于时,转向标号行指令
JG/JNLE 短标号 16/4 - 2 - 大于/不小于或等于时,转移
JGE/JNL 短标号 16/4 - 2 - 大于或等于/不小于时,转移
JL/JNGE 短标号 16/4 - 2 - 小于/不大于或等于时,转移
JLE/JNG 短标号 16/4 - 2 - 小于或等于/不等于时,转移
JCXZ 短标号 18/6 - 2 - CX=0时,转向标号所指的指令
LOOP 短标号 17/5 - 2 - 先 CX-1, 若 CX !=0,则循环至标号所指指令
LOOPE/LOOPZ 短标号 18/6 - 2 - 先 CX-1,若 CX!=0,且ZF=1,转向标号行指令
LOOPNE/LOOPNZ 短标号 19/5 - 2 - 先 CX-1,若 CX!=0,且ZF=0,转向标号行指令
INT IMM8(中断号=3) 52(72) 5 1 - - 0 0 - - - - - FLAG、CS、IP进栈,将相应中断向量的低字
INT IMM8(中断号!=3) 51(71) 5 2 # 送 IP,高字送CS
INTO 53(73)/4 5 1 # 溢出则FLAG、CS、IP进栈,且中断向量低字送 IP,高字送CS,不溢出则顺序执行
IRET 32(44) 3 1 X X X X X X X X X 中断返回,将栈顶连续三个字内容出栈送IP,CS,FLAG
处理器控制指令 时钟数 访问次数 字节数 对标志位影响 指令意义
- - - - O D I T S Z A P C -
CLS 2 - 1 除对指定标志操作外,对其它标志均无影响 使标志CF=0
CMC 2 - 1 # 使标志CF取反
STC 2 - 1 # 使CF=1
CLD 2 - 1 # 使标志DF=0
STD 2 - 1 # 使DF=1
CLI 2 - 1 # 使标志IF=0
STI 2 - 1 # 使IF=1
HLT 2 - 1 # 使CPU 暂停,外中断和复位信号可启动
ESC IMM,M 8(12)+EA 2-4 2-4 - 主处理器交权给协处理器
ESC IMM,R 2 2 2 - #
WAIT 3+5n - 1 - 等待到TEST 变为有效时为止
NOP 3 - 1 - 空操作,只执行IP+1
LOCK 任一指令 2 - 1 - 作为任一指令的总线封锁前缀
REP 串操作指令 2 - 1 - CX!=0 时,无条件重复其后的指令,直至 CX-1=0
REPE/REPZ 串操作指令 2 - 1 - ZF=1 且 CX!=0时,重复执行其后指令,直至 CX-1=0 或 ZF=0
REPNE/REPNZ 串操作指令 - - - - ZF=0且CX!=0 时,重复执行其后指令且 CX-1,直至 CX-1=0 或 ZF=1

posted on 2014-08-28 23:37  x01  阅读(927)  评论(0编辑  收藏  举报

导航