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 R1,R2 3 - 2 X - - - X X X X X R1+R2 --> R1
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 [C]<--[7<----0]<--0
SAL/SHL R,CL 8+4/bit - 2 # 算术,逻辑左移 1 次或 CL 位
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 +->[C] +-->|7|-->0|---+
SAR R,CL 8+4/bit - 2 # |_________________________|
SAR M,1 15(23)+EA 2 2-4 # 算术右移 1 次或 CL 位
SAR M,CL 20(28)+EA+4/bit 2 2-4 #

SHR R,1 2 - 2 X - - - X X U X X +->[C] 0->[7-->0]-+
SHR R,CL 8+4/bit - 2 # |_____________________|
SHR M,1 15(23)+EA 2 2-4 # 逻辑右移 1 位或 CL 位
SHR M,CL 20(23)+EA+4/bit 2 2-4 #

ROL R,1 2 - 2 X - - - - - - - X [C]<--+--[7<--0]<-+
ROL R,CL 8+4/bit - 2 # |___________|
ROL M,1 15(23)+EA 2 2-4 # 不通过进位的循环左移 1 位或 CL 位
ROL M,CL 20(28)+EA+4/bit 2 2-4 #

ROR R,1 2 - 2 # [C]-+->[7-->0]-+
ROR R,CL 8+4/bit - 2 # |__________|
ROR M,1 15(23)+EA 2 2-4 # 不含进位的循环右移 1 位或 CL 位
ROR M,CL 20(28)+EA+4/bit 2 2-4 #

RCL R,1 2 - 2 # [C]<--[7<--0]<--+
RCL R,CL 8+4/bit - 2 # |______________|
RCL M,1 15(23)+EA 2 2-4 # 含进位的循环左移 1 位或 CL 位
RCL M,CL 20(28)+EA+4/bit 2 2-4 #

RCR R,1 2 - 2 # +-->[C]-->[7-->0]-+
RCR R,CL 8+4/bit - 2 # |_________________|
RCR M,1 15(23)+EA 2 2-4 # 含进位的循环右移 1 位或 CL 位
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 # R1 | R2 --> R1
OR R,M 9(13)+EA 1 2-4 # R | M --> R
OR R,IMM 4 - 3-4 # R | IMM --> R
OR A,IMM 4 - 2-3 # A | IMM --> A
OR M,IMM 17(25)+EA 2 3-6 # M | IMM --> M
OR M,R 16(24)+EA 2 2-4 # M | 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)

控制传送指令 时钟数 访问次数 字节数 对标志位影响 指令意义

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,转向标号行指令

O D I T S Z A P C
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

处理器控制指令 时钟数 访问次数 字节数 指令意义 对标志位影响

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 无

x01.os.6: 8086 指令的更多相关文章

  1. x01.os.14: 时间都去哪儿了

    时间都去哪儿了 老帕的“花儿为什么这样红”,三分钟引起六次欢呼,却败给了张碧晨.试想一下,如果是人气更高的陈冰,即使唱得和张碧晨一模一样,可能仍然不敌老帕,为什么张碧晨就能取胜呢?有这么个笑话:一人弹 ...

  2. x01.os.13: 文件系统

    停了两天电,忽然得空闲.找来破吉他,已然不成弦.           丁丁当当敲,敲到电来到.为把时间捡,熬夜三四点. 从我的置顶随笔 x01.Lab.Download 中下载 x01.os.12.t ...

  3. x01.os.9: 进程切换

    进入内核后,当然不能无所事事.先创建三个进程,分别打印 A,B,C.虽然只是简单的打印,但却是一切扩展的基础,不可等闲视之. 进程切换,涉及一系列的寄存器需要保护,于是,就有了 ProcessStac ...

  4. x01.os.8: 加载内核

    在 x01.os.7 中,借助 freedos,学习了保护模式.但操作系统必须完成引导:boot, 加载内核:loader,kernel,进而管理process,memory,file等. 引导比较简 ...

  5. x01.os.7: 傻子一样的等

    傻子一样的等 昨日出差,办完事后,下午 2:30,准备进长途汽车站买票回家,被一人拦住,说可以带我进去,车马上就要开了,买票来不及.我以为是汽车司机,就跟了进去.进去后,他打了个电话,说 3:30 车 ...

  6. x01.os.18: MBR

    硬盘不同于软盘,它是要分区的.这时,mbr(master boot record)便不可少了.安装 os 硬盘的第一扇区,开始有一小段不多于 446 字节的程序,然后是分区表 512-446-2 字节 ...

  7. x01.os.16: 添加功能

    准备工作  1.确保是 win xp,如是 win 8,运行 nasm 需按提示同意安装组件.  2.确保 src 和 z_tools 在同一目录下,nasm 已包含在 z_tools 文件夹中.  ...

  8. x01.os.12: 在 windows 中写 OS

    在 windows 中写操作系统,需要一系列的辅助工具.在此,要感谢川谷秀实!所有工具,都在 z_tools 文件夹中.有了大师的帮助,不妨也来尝试在 windows 中写一把 OS. 源代码及工具可 ...

  9. x01.os.20: compile linux-0.11 on the ubuntu

    为什么学习 linux 正如不能依靠美国的 GPS 为我们的导弹指示目标一样,很难想像用运行 windows 的电脑去同美国进行信息战.而朝鲜的网络崩溃,再次警示国人,信息战.网络战离我们并不遥远.l ...

随机推荐

  1. Atitit 编程语言原理与概论attilax总结

    Atitit 编程语言原理与概论attilax总结 1. 语言的分类1 2. 语言评价标准1 3. 编程语言原理(第10版) 目录: 2 4. 代码之髓:编程语言核心概念2 5. <编程语言实现 ...

  2. redis持久化机制

    redis持久化 redis的数据存在内存中,所以存取性能好.但是存在内存中的数据存在一个问题,一旦机器重启,内存数据消失.为了解决这个问题,redis支持持久化.持久化就是为了解决内存数据丢失时恢复 ...

  3. ImFire即时通讯系统构建(需求)

    ImFire需求 一期需求(近期) 1.新用户(账号)注册. 2.用户登入登出,支持pc端,移动端同时登录. 3.获取好友列表,包含好友的各种信息,状态. 4.根据用户id或用户名申请添加好友. 5. ...

  4. 记一次CSR上线及总结

    终于到上线的时候了,可以好好休息了.放松了,但在没有经过用户确认之前,一切皆有可能发生...... 经历: 项目终于完成,上线文档已准备就绪,等待上线时刻. 在上线之前,忘记了解目前环境的部署架构,注 ...

  5. Face++ – 提供给你实时的脸部识别 API

    Face++ 是一个小巧,功能强大,跨平台的服务,由Megvii公司建立,致力于建立一个新的视觉平台.它使用计算机视觉尖端科技和数据挖掘,提供3个核心视觉服务(探测,识别和分析).基于 Face++ ...

  6. URL(统一资源定位符)结构和注意事项

    URL的常见结构: http://localhost/项目名称/文件1/文件2... 注意事项: 当我们在项目中在书写URL的时候,一般会出现两种情况: 第一种:在路径前面加上/,表示直接连在loca ...

  7. JavaScript数组与对象的关系

    JavaScript的数组,相比其他语言,是比较特殊的.数组是Object类型,只不过,有几个比较特殊的地方: 有索引下标 有默认的length属性 是有序的(注意,对象是无序的) 可以使用一些特殊的 ...

  8. 一次失败的APP业务渗透测试

    作者:whoamiecho 来源:ichunqiu 本文参加i春秋社区原创文章奖励计划,未经许可禁止转载! 一.  过程 1.1.事情起因:暴力破解 测试给了个普通用户账号,可以登录.APP一来就要登 ...

  9. 转 String,StringBuffer与StringBuilder的区别??

    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...

  10. android加固系列—6.仿爱加密等第三方加固平台之动态加载dex防止apk被反编译

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5402599.html ] 此方案的目的是隐藏源码防止直接性的反编译查看源码,原理是加密编译好的 ...