微机原理8086指令系统表
合集下载
微机原理(杭州电子科技大学【4】8086系统结构[2-3]
![微机原理(杭州电子科技大学【4】8086系统结构[2-3]](https://img.taocdn.com/s3/m/3b8cd1f4f90f76c661371a65.png)
15:28
22
二、系统的复位与启动
【8086CPU时序】
① 复位信号:通过RESET引脚上的触发信号来引起8086系统复位和启
动,RESET至少维持4个时钟周期的高电平。
② 复位操作:当RESET信号变成高电平时,8086/8088CPU结束现行
操作,各个内部寄存器复位成初值。
标志寄存器
清零
指令寄存器 CS寄存器 DS寄存器 SS寄存器 ES寄存器
的比例倍频后得到CPU的主频,即: CPU主频 = 外频 × 倍频系数
⑥ PC机各子系统时钟(存储系统,显示系统,总线等)是由系统频率按 照一定的比例分频得到。
15:28
5
内频 550MHz Pentium III
倍频系数5.5
L1 Cache
L2 550MHz Cache
处理机总线 100MHz
微机原理与接口技术
第四讲
15:28
第二章 8086系统结构
内容提要
z微型计算机的发展概况 z8086CPU内部结构 z8086CPU引脚及功能 z8086CPU存储器组织 z8086CPU系统配置 z8086CPU时序
15:28
2
※有关概念介绍
z 主频,外频,倍频系数 z T状态 z 总线周期 z 指令周期 z 时序 z 时序图
总线操作
读存储器操作 (取操作数)
写存储器操作 (将结果存放到内存)
读 I/O 端口操作 (取 I/O 端口中的数)
写 I/O 端口操作 (往 I/O 端口写数)
中断响应操作
总线周期
存储器读周期 存储器写周期 I/O 端口读周期 I/O 端口写周期 中断响应周期
15:28
微机原理指令系统的学习

;此时传送的操作数在数据段中,其偏移地址是 SI寄存器中的内容加上0200H 变址寻址可以有多种格式:
MOV AX, [BX+0A00H]
MOV AX, TAB[DI] 如:MOV AX, 0200H+[BX]
假设DS:3000H, BX: 1000H 则操作数所在地址:
高8位: 31201H 低8位: 31200H
存储器
格式:IN AL , PORT IN AX, PORT
功能:从PORT口输入数据到AL(AX)。
格式:OUT PORT , AL OUT PORT, AX
功能20:20/7/将17 AL(AX)中的内容从PORT口输出。
33
IN AL, 40H
OUT 40H , AL
8位
IN AX, 40H
功能: (OPRD2) OPRD1
•CPU内部寄存器之间数据的传送(除CS、IP)
•立即数传送至CPU内部的通用寄存器组
•CPU内部的寄存器(除CS、IP)与存储器(所有寻 址方式)之间
•能实现用立即数给存储单元赋值
2020/7/17
25
注意: • CS,IP不能作为目的操作数 MOV CS, AX • 两个段寄存器间不能直接传送 MOV SS, DS • 立即数不能直接传送给段寄存器 MOV DS,2000H • 内存单元间不能直接传送 MOV [SI], [2000H] • 立即数不能作为目的操作数 MOV 1000H, AX
而执行POP BX后,栈顶的物理地址是:
20190H+2H=20192H
2020/7/17
30
2020/7/17
31
3. 交换指令XCHG 格式:XCHG OPRD1, OPRD2
《微机原理》8086与PC(2-2)

特殊屏蔽方式:在高级中断服务程序执行过程中,允
许临时开放对低优先级中断源的服务
8259A的工作方式(续)
中断结束方式
中断自动结束方式:ISR中在响应时自动置1的位在进
入中断服务程序后自动清0
一般中断结束方式:在全嵌套方式下,EOI命令中不
指定结束的中断级,约定结束ISR中的最高优先级中 断,对应位将被复位
中断向量表的构成
中断向量表:把所有中断源的中断向量集中在
一起,形成中断向量表
8086在内存中地址为00000H~003FFH的 存储区内建立中断向量表,共存放256个中断向 量,每个向量占4个字节,IP在低地址单元、 CS在高地址单元
此表的查询索引为中断类型号
中断类型号及其获取
中断类型号:系统分配给每个中断源的代
为I/O设备服务
中断服务程序执行 中断返回(IRET)
断点和FLAGS从 堆栈中弹出(断点恢复)
恢复现场
给中断控制器发中 断结束(EOI)命令
回到中断前运行 的程序继续执行
中断传送流程
返回
8259A芯片
可编程中断控制器8259A主要功能为:
(1)对8个外部中断源进行管理,具有8级优 先权控制,通过级连可扩展至64级优先权控制。
五、8253/8254定时/计数器
主要功能
3个独立的16位计数器 每个计数器可以按二进制或BCD码计数 计数速率可达2MHz(8254-2达10MHz) 每个计数器有6种工作方式,可编程设置和改
变 输入输出引脚与TTL电平兼容
8253内部结构图
计数器结构
8253有三个独立的计数器(计数通道)
计数初值寄存器(16位)
先读写最低有效字节再
读写最高有效字节
许临时开放对低优先级中断源的服务
8259A的工作方式(续)
中断结束方式
中断自动结束方式:ISR中在响应时自动置1的位在进
入中断服务程序后自动清0
一般中断结束方式:在全嵌套方式下,EOI命令中不
指定结束的中断级,约定结束ISR中的最高优先级中 断,对应位将被复位
中断向量表的构成
中断向量表:把所有中断源的中断向量集中在
一起,形成中断向量表
8086在内存中地址为00000H~003FFH的 存储区内建立中断向量表,共存放256个中断向 量,每个向量占4个字节,IP在低地址单元、 CS在高地址单元
此表的查询索引为中断类型号
中断类型号及其获取
中断类型号:系统分配给每个中断源的代
为I/O设备服务
中断服务程序执行 中断返回(IRET)
断点和FLAGS从 堆栈中弹出(断点恢复)
恢复现场
给中断控制器发中 断结束(EOI)命令
回到中断前运行 的程序继续执行
中断传送流程
返回
8259A芯片
可编程中断控制器8259A主要功能为:
(1)对8个外部中断源进行管理,具有8级优 先权控制,通过级连可扩展至64级优先权控制。
五、8253/8254定时/计数器
主要功能
3个独立的16位计数器 每个计数器可以按二进制或BCD码计数 计数速率可达2MHz(8254-2达10MHz) 每个计数器有6种工作方式,可编程设置和改
变 输入输出引脚与TTL电平兼容
8253内部结构图
计数器结构
8253有三个独立的计数器(计数通道)
计数初值寄存器(16位)
先读写最低有效字节再
读写最高有效字节
计算机微机原理8086指令

8086从功能上分成两大部分: 总线接口单元BIU(Bus Interface Unit) 执行单元EU (Execution Unit)
7
总线接口单元BIU (Bus Interface Unit)
负责8086CPU与存储器和I/O设备 功能: 间的信息传送。
8
执行单元EU (Execution Unit)
14
通用寄存器的名称与符号
① AX (Accumulator) --累加器
② BX (Base) --基址寄存器
③ CX (Count) --计数寄存器 ④ DX (Data) --数据寄存器 ⑤ SI (Source Index)是源变址寄存器
数据寄存器
⑥ DI (Destination Index)是目的变址寄存器
38
物理地址和逻辑地址的转换
由于段地址一般存放在段寄存器,所以物理地 址和逻辑地址的转换关系也可表示为: (段寄存器) (CS) 物理地址= (DS) (SS ) 左移4位 + 偏移地址
(ES)
逻辑地址的形式为 段寄存器:偏移地址
39
段寄存器
8086有4个16位专门存放段地址的段寄存器 CS--(Code Segment)(代码段)指明代码段的起 始地址 SS-- (Stack Segment)(堆栈段)指明堆栈段的起 始地址 DS-- (Data Segment)(数据段)指明数据段的起 始地址 ES-- (Extra Segment)(附加段)指明附加段的起 始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻 辑段均有各自的用途
27
数据信息的表达单位
计算机中信息的单位 二进制位Bit:存储一位二进制数:0或1, 记做b 字节Byte:8个二进制位,D7~D0,记做B 字Word:16位,2个字节,D15~D0 双字DWord:32位,4个字节,D31~D0
7
总线接口单元BIU (Bus Interface Unit)
负责8086CPU与存储器和I/O设备 功能: 间的信息传送。
8
执行单元EU (Execution Unit)
14
通用寄存器的名称与符号
① AX (Accumulator) --累加器
② BX (Base) --基址寄存器
③ CX (Count) --计数寄存器 ④ DX (Data) --数据寄存器 ⑤ SI (Source Index)是源变址寄存器
数据寄存器
⑥ DI (Destination Index)是目的变址寄存器
38
物理地址和逻辑地址的转换
由于段地址一般存放在段寄存器,所以物理地 址和逻辑地址的转换关系也可表示为: (段寄存器) (CS) 物理地址= (DS) (SS ) 左移4位 + 偏移地址
(ES)
逻辑地址的形式为 段寄存器:偏移地址
39
段寄存器
8086有4个16位专门存放段地址的段寄存器 CS--(Code Segment)(代码段)指明代码段的起 始地址 SS-- (Stack Segment)(堆栈段)指明堆栈段的起 始地址 DS-- (Data Segment)(数据段)指明数据段的起 始地址 ES-- (Extra Segment)(附加段)指明附加段的起 始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻 辑段均有各自的用途
27
数据信息的表达单位
计算机中信息的单位 二进制位Bit:存储一位二进制数:0或1, 记做b 字节Byte:8个二进制位,D7~D0,记做B 字Word:16位,2个字节,D15~D0 双字DWord:32位,4个字节,D31~D0
微机原理课件第二章 8086系统结构

但指令周期不一定都大于总线周期,如MOV AX,BX
操作都在CPU内部的寄存器,只要内部总线即可完成,不 需要通过系统总线访问存储器和I/O接口。
2021/8/17
17
• 8086CPU的典型总线时序,充分体现了总 线是严格地按分时复用的原则进行工作的。 即:在一个总线周期内,首先利用总线传 送地址信息,然后再利用同一总线传送数 据信息。这样减少了CPU芯片的引脚和外 部总线的数目。
• 执行部件(EU)
• 功能:负责译码和执行指令。
2021/8/17
5
• 联系BIU和EU的纽带为流水指令队列
• 队列是一种数据结构,工作方式为先进先出。写入的指令 只能存放在队列尾,读出的指令是队列头存放的指令。
2021/8/17
6
•BIU和EU的动作协调原则 BIU和EU按以下流水线技术原则协调工作,共同完成所 要求的任务: ①每当8086的指令队列中有空字节,BIU就会自动把下 一条指令取到指令队列中。 ②每当EU准备执行一条指令时,它会从BIU部件的指令 队列前部取出指令的代码,然后译码、执行指令。在执 行指令的过程中,如果必须访问存储器或者I/O端口, 那么EU就会请求BIU,完成访问内存或者I/O端口的操 作; ③当指令队列已满,且EU又没有总线访问请求时,BIU 便进入空闲状态。(BIU等待,总线空操作) ④开机或重启时,指令队列被清空;或在执行转移指令、 调用指令和返回指令时,由于待执行指令的顺序发生了 变化,则指令队列中已经装入的字节被自动消除,BIU会 接着往指令队列装入转向的另一程序段中的指令代码。 (EU等待)
•CF(Carry Flag)—进位标志位,做加法时最高位出现进位或 做减法时最高位出现借位,该位置1,反之为0。
微机原理16位32位CPU(8086)

中 断 允 许
半 进 借 位 标 志
奇 偶 标 志
进 借 位 标 志
1-有进、借位 0-无进、借位
1-低4位向高4位有进、借位 0-低4位向高4位无进、借位
④标志寄存器
根据功能,标志可以分为两类:状态标志和控制标志
状态标志:表示前面的操作执行后,ALU所处的状态,这种状态像某 种先决条件一样影响后面的操作。 控制标志:表示对某一种特定的功能起控制作用。指令系统中有专门 的指令用于控制标志的设置和清除。 状态标志有6个,即SF、ZF、AF、PF、CF和OF ①符号标志SF(Sign Flag) 和运算结果的最高位相同。表示前面运
若TF=0 正常执行程序
返回
④标志寄存器
举例:
+ 0101 0100 0011 1001 0100 0111 0110 1010
3.8086的总线周期的概念
为了取得指令或传送数据,就需要CPU的总线接口部件执行一个 总线周期。 总线周期(机器周期):CPU通过总线与存储器或I/O接口进行一 次数据传输所需的时间。 在8086/8088中,一个最基本的总线周期由4个时钟周期组成,将4
80386
80486 Pentium Pentium IV
32
32 32 32
27.5万
120万 310万 4200万
12.5M,后提高到 20M,25M,33M
25MHz逐步提高到 33MHz、50MHz 60MHZ和66MHZ, 后提高到200MHZ 2.4G
0.1us
2.1 16位微处理器8086
式下各位引脚功能,如出现功能不同的引脚再具体讲解 。
DIP双列直插式封装
QFP塑料方型扁平式封装
Pentium4 3.2GHz LGA775 栅格阵列封装
微机原理第3章-指令系统

▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB
码
器
PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:
微机原理5_8086指令系统08

• 指令中的操作数:
– 可以是一个具体的数值 – 可以是存放数据的寄存器 – 或指明数据在主存位置的存储器地址
6
双操作数指令
MOV dst, src ; (dst) (src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: MOV AH,BL MOV AX,1234H
ADD dst, src ; (dst) (dst)+(src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: ADD AL,36H ADD BX,CX 大多数运算型指令都是双操作数指令,对这种指令, 有的机器(大中型)使用“三地址”指令:除给出参加 运算的两个操作数外,还要指出运算结果的存放地址 7
18
寄存器寻址
19
特 点
(1) 操作数就在寄存器中,不需要访问存
储器来取得操作数(指令执行时,操作就在 CPU的内部进行),因而执行速度快。
(2)寄存器号比内存地址短 * 在编程中,如有可能,尽量使用这种寻址 方式的指令。 * 寄存器寻址方式既可用于源操作数,也可 用于目的操作数,还可以两者都用于寄存器寻 址方式(如 MOV BX , AX )
物理地址 = 16d (DS) +
BP (SS)
(SI)
(DI)
28
物理地址 = 16d (SS) + (BP)
例:
MOV AX, [BX] MOV ES:[BX] , AX MOV DX, [BP] • MOV AX , [BX] ;
设 ( DS) = 2000H ,(BX) = 1000H PA =20000H + 1000H =21000H 指令的执行结果为: (AX) = 50A0H *指令中也可以通过“段跨越前缀”取 得其他段中的数据, 例如: MOV AX,ES: [BX] PA = 16d (DS) + (BX) PA = 16d (ES) + (BX) PA = 16d (SS) + (BP)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
INC
INC Dest
(Dest) ← (Dest) +1
ODITSZAPC= x---xxxx-
减
法
SUB
SUB EST,Src
(Dest)←(Dest)- (Src)
ODITSZAPC= x---xxxxx
SBB
SBB EST,Src
(Dest)←(Dest)- (Src)-CF
ODITSZAPC= x---xxxxx
(IP)←过程的偏移地址
(CS)←过程的段地址
段间直接调用
CALL DWORD PTR Opr
SP←(SP)-2
SS:[SP]←CS
SP←(SP)-2
SS:[SP] ←IP
IP)←(EA)
(CS)←(EA+2)
段间间接调用
RET
RET
IP←SS:[SP]
SP←(SP)+2
无参数段内返回
RET n
IP←SS:[SP]
只要CX=0或ZF=0,则重复执行结束。
REPNE
/REPNZ
REPNE MPS/ SCAS
REPNZ CMPS/ SCAS
每执行一次,CX←(CX)-1,并判断ZF标志位是否为1;
只要CX=0或ZF=1,则重复执行结束。
控
制
转
移
指
令
JMP
JMP SHORT Opr
IP←(IP)+8位偏移
段内直接短转移
STOS Dest
STOSB
STOSW
ES:(DI)←(Ac)
(DI)←(DI)±1或2
CMPS
CMPS Dest,Src
CMPSB
CMPSW
DS:(SI) - ES:(DI)
(SI) ←(SI)±1或2
(DI) ←(DI)±1或2
SCAS
SCAS Dest
SCASB
SCASW
Ac - ES:(DI)
LES
LES DES,Src
(Dest) ←EA (Src)
(ES) ← EA(Src+2)
标
志
传
送
LAHF
LAHF
(AH) ←(FLAGSL)
相反操作
一般配对使用
SAHF标志位=-----rrrrr
SAHF
SAHF
(FLAGSL)← (AH)
PUSHF
PUSHF
(SP)← (SP)-2
((SP) +1,(SP)) ← (PSW)
OUT
OUT Port,Ac
OUT DX,Ac
(Port) ←Ac
((DX))←Ac
算
术
运
算
加
法
ADD
ADD EST,Src
(Dest)←(Src)+(Dest)
ODITSZAPC=x---xxxxx
ADC
ADC EST,Src
(Dest)←(Src)+ Dest)+CF
ODITSZAPC= x---xxxxx
SP←(SP)+2
SP←(SP)+n
有参数段内返回
RET
IP←SS:[SP]
SP←(SP)+2
CS←SS:[SP]
SP←(SP)+2
无参数段间返回
RET n
IP←SS:[SP]
SP←(SP)+2
CS←SS:[SP]
SP←(SP)+2
SP←(SP)+n
有参数段间返回
JXX
JC Dest
CF=1则转移
有进位/借位
西安邮电大学8086指令系统表
指令
助记符
格式
功能
备注
数
据
传
送
通
用
数
据
传
送
MOV
MOV Dest,Src
(Dest)← (Src)
Imm、CS、IP不能为Dest
Opr位数必须一致
Opr不能同为Mem
Opr不能同为Sreg
XCHG
XCHG Dest,Src
(Src) ←→ (Dest)
Opr不能为Imm,Sreg
Cnt是移位数
Cnt>1,其值要先送到CL
ODITSZAPC= x---xxuxx
SAR
SAR Dest,Cnt
SHL
SHL Dest,Cnt
SHR
SHR Dest,Cnt
ROL
ROL Dest,Cnt
将Dest从一端移出的位返回到另一端形成循环
Dest不能为Imm
Cnt是移位数
Cnt>1,其值要先送到CL
JMP NEAR PTR Opr
IP←(IP)+16位偏移量
段内直接近转移
JMP WORD PTR Opr
IP←(EA)
段内间接转移
JMP FAR PTR Opr
(IP)←Opr指定的偏移地址
(CS)←Opr指定的段地址
段间直接(远)转移
JMP DWORD PTR Opr
IP)←(EA)
(CS)←(EA+2)
段间间接转
CALL
CALL过程名
SP←(SP)-2
SS:[SP] ←IP
IP←(IP)+16位偏移量
段内直接调用
CALL Opr
SP←(SP)-2
SS:[SP] ←IP
IP←(EA)
段内间接调用
CALL FAR PTR过程名
SP←(SP)-2
SS:[SP]←CS
SP←(SP)-2
SS:[SP] ←IP
PF=1则转移
有偶数个“1”
JNP/JPO Dest
PF=0则转移
有奇数个“1”
JA/JNBE Dest
CF=0 AND Z F=0则转移
无符号数A>B
JAE/JNB Dest
CF=0 OR ZF=1则转移
无符号数A≥B
JB/JNAE Dest
CF=1 AND ZF=0则转移
无符号数A<B
JBE/JNA Dest
紧接在MUL后
ODITSZAPC= u---uuxux
AAD
AAD
(AL)(AL)非组合BCD
DIV指令之前用AAD
DIV之后用AAM
ODITSZAPC= u---xxuxu
逻
辑
运
算
AND
AND Dest,Src
(Dest)←(Dest)∧(Src)
使Dest的某些位强迫清0
ODITSZAPC= 0---xxux0
SI=DS中源串首地址
DI=ES中目的串首地址
CX=数据串的长度
CLD/TD建立方向标志
DF=0,地址增量
DF=1,地址减量
CMPS标志位= x---xxxxx
SCAS标志位= x---xxxxx
LODS
LODS Src
LODSB
LODSW
(Ac)←DS:(SI)
(SI) ←(SI)±1或2
STOS
CF=1 OR ZF=1则转移
无符号数A≤B
JG/JNLE Dest
SF=OF AND ZF=0则转移
有符号数A>B
JGE/JNL Dest
SF=OF OR ZF=1则转移
有符号数A≥B
JL/JNGE Dest
SF≠OF AND ZF=0则转移
有符号数A<B
JLE/JNG Dest
SF≠OF OR ZF=1则转移
XLAT
XLAT
(AL) ← ((BX) + (AL))
BX=首地址
AL=偏移量
地
址
传
送
LEA
LEA DES,Src
(Dest) ← EA(Src)
Dest为16位Reg
Dest不能为Sreg
Src为32位Mem
LDS
LDS DES,Src
(Dest) ←EA (Src)
(DS) ← EA(Src+2)
TEST
TEST Dest,Src
(Dest)∧(Src)
测试某位是否为0
ODITSZAPC= 0---xxux0
移
位
指
令
SAL
SAL Dest,Cnt
空出位补0,移出位进CF
SAR时空出位不变
SAL,SAR用于有符号数
SHL,SHR用于无符号数
左移乘以2的Cnt次方
右移除以2的Cnt次方
Dest不能为Imm
JNC Dest
CF=0则转移
无进位/借位
JE/JZ Dest
ZF=1则转移
相等/等于零
JNE/JNZ Dest
ZF=0则转移
不相等/不等于零
JS Dest
SF=1则转移
是负数
JNS Dest
SF=0则转移
是正数
JO Dest
OF=1则转移
有溢出
JNO Dest
OF=0则转移
无溢出
JP/JPE Dest
IDIV
IDIV Src
(AL) ← (AX)/ (Src)的商
(AH) ← (AX)/ (Src)的余数
(AX) ← (DX,AX)/ (Src)的商
(DX) ← (DX,AX)/ (Src)的余数
CBW
CBW
ALAX
正数前补0
负数前补1
无符号数不能扩展
CWD
CWD
AX(DX,AX)
B
C
INC Dest
(Dest) ← (Dest) +1
ODITSZAPC= x---xxxx-
减
法
SUB
SUB EST,Src
(Dest)←(Dest)- (Src)
ODITSZAPC= x---xxxxx
SBB
SBB EST,Src
(Dest)←(Dest)- (Src)-CF
ODITSZAPC= x---xxxxx
(IP)←过程的偏移地址
(CS)←过程的段地址
段间直接调用
CALL DWORD PTR Opr
SP←(SP)-2
SS:[SP]←CS
SP←(SP)-2
SS:[SP] ←IP
IP)←(EA)
(CS)←(EA+2)
段间间接调用
RET
RET
IP←SS:[SP]
SP←(SP)+2
无参数段内返回
RET n
IP←SS:[SP]
只要CX=0或ZF=0,则重复执行结束。
REPNE
/REPNZ
REPNE MPS/ SCAS
REPNZ CMPS/ SCAS
每执行一次,CX←(CX)-1,并判断ZF标志位是否为1;
只要CX=0或ZF=1,则重复执行结束。
控
制
转
移
指
令
JMP
JMP SHORT Opr
IP←(IP)+8位偏移
段内直接短转移
STOS Dest
STOSB
STOSW
ES:(DI)←(Ac)
(DI)←(DI)±1或2
CMPS
CMPS Dest,Src
CMPSB
CMPSW
DS:(SI) - ES:(DI)
(SI) ←(SI)±1或2
(DI) ←(DI)±1或2
SCAS
SCAS Dest
SCASB
SCASW
Ac - ES:(DI)
LES
LES DES,Src
(Dest) ←EA (Src)
(ES) ← EA(Src+2)
标
志
传
送
LAHF
LAHF
(AH) ←(FLAGSL)
相反操作
一般配对使用
SAHF标志位=-----rrrrr
SAHF
SAHF
(FLAGSL)← (AH)
PUSHF
PUSHF
(SP)← (SP)-2
((SP) +1,(SP)) ← (PSW)
OUT
OUT Port,Ac
OUT DX,Ac
(Port) ←Ac
((DX))←Ac
算
术
运
算
加
法
ADD
ADD EST,Src
(Dest)←(Src)+(Dest)
ODITSZAPC=x---xxxxx
ADC
ADC EST,Src
(Dest)←(Src)+ Dest)+CF
ODITSZAPC= x---xxxxx
SP←(SP)+2
SP←(SP)+n
有参数段内返回
RET
IP←SS:[SP]
SP←(SP)+2
CS←SS:[SP]
SP←(SP)+2
无参数段间返回
RET n
IP←SS:[SP]
SP←(SP)+2
CS←SS:[SP]
SP←(SP)+2
SP←(SP)+n
有参数段间返回
JXX
JC Dest
CF=1则转移
有进位/借位
西安邮电大学8086指令系统表
指令
助记符
格式
功能
备注
数
据
传
送
通
用
数
据
传
送
MOV
MOV Dest,Src
(Dest)← (Src)
Imm、CS、IP不能为Dest
Opr位数必须一致
Opr不能同为Mem
Opr不能同为Sreg
XCHG
XCHG Dest,Src
(Src) ←→ (Dest)
Opr不能为Imm,Sreg
Cnt是移位数
Cnt>1,其值要先送到CL
ODITSZAPC= x---xxuxx
SAR
SAR Dest,Cnt
SHL
SHL Dest,Cnt
SHR
SHR Dest,Cnt
ROL
ROL Dest,Cnt
将Dest从一端移出的位返回到另一端形成循环
Dest不能为Imm
Cnt是移位数
Cnt>1,其值要先送到CL
JMP NEAR PTR Opr
IP←(IP)+16位偏移量
段内直接近转移
JMP WORD PTR Opr
IP←(EA)
段内间接转移
JMP FAR PTR Opr
(IP)←Opr指定的偏移地址
(CS)←Opr指定的段地址
段间直接(远)转移
JMP DWORD PTR Opr
IP)←(EA)
(CS)←(EA+2)
段间间接转
CALL
CALL过程名
SP←(SP)-2
SS:[SP] ←IP
IP←(IP)+16位偏移量
段内直接调用
CALL Opr
SP←(SP)-2
SS:[SP] ←IP
IP←(EA)
段内间接调用
CALL FAR PTR过程名
SP←(SP)-2
SS:[SP]←CS
SP←(SP)-2
SS:[SP] ←IP
PF=1则转移
有偶数个“1”
JNP/JPO Dest
PF=0则转移
有奇数个“1”
JA/JNBE Dest
CF=0 AND Z F=0则转移
无符号数A>B
JAE/JNB Dest
CF=0 OR ZF=1则转移
无符号数A≥B
JB/JNAE Dest
CF=1 AND ZF=0则转移
无符号数A<B
JBE/JNA Dest
紧接在MUL后
ODITSZAPC= u---uuxux
AAD
AAD
(AL)(AL)非组合BCD
DIV指令之前用AAD
DIV之后用AAM
ODITSZAPC= u---xxuxu
逻
辑
运
算
AND
AND Dest,Src
(Dest)←(Dest)∧(Src)
使Dest的某些位强迫清0
ODITSZAPC= 0---xxux0
SI=DS中源串首地址
DI=ES中目的串首地址
CX=数据串的长度
CLD/TD建立方向标志
DF=0,地址增量
DF=1,地址减量
CMPS标志位= x---xxxxx
SCAS标志位= x---xxxxx
LODS
LODS Src
LODSB
LODSW
(Ac)←DS:(SI)
(SI) ←(SI)±1或2
STOS
CF=1 OR ZF=1则转移
无符号数A≤B
JG/JNLE Dest
SF=OF AND ZF=0则转移
有符号数A>B
JGE/JNL Dest
SF=OF OR ZF=1则转移
有符号数A≥B
JL/JNGE Dest
SF≠OF AND ZF=0则转移
有符号数A<B
JLE/JNG Dest
SF≠OF OR ZF=1则转移
XLAT
XLAT
(AL) ← ((BX) + (AL))
BX=首地址
AL=偏移量
地
址
传
送
LEA
LEA DES,Src
(Dest) ← EA(Src)
Dest为16位Reg
Dest不能为Sreg
Src为32位Mem
LDS
LDS DES,Src
(Dest) ←EA (Src)
(DS) ← EA(Src+2)
TEST
TEST Dest,Src
(Dest)∧(Src)
测试某位是否为0
ODITSZAPC= 0---xxux0
移
位
指
令
SAL
SAL Dest,Cnt
空出位补0,移出位进CF
SAR时空出位不变
SAL,SAR用于有符号数
SHL,SHR用于无符号数
左移乘以2的Cnt次方
右移除以2的Cnt次方
Dest不能为Imm
JNC Dest
CF=0则转移
无进位/借位
JE/JZ Dest
ZF=1则转移
相等/等于零
JNE/JNZ Dest
ZF=0则转移
不相等/不等于零
JS Dest
SF=1则转移
是负数
JNS Dest
SF=0则转移
是正数
JO Dest
OF=1则转移
有溢出
JNO Dest
OF=0则转移
无溢出
JP/JPE Dest
IDIV
IDIV Src
(AL) ← (AX)/ (Src)的商
(AH) ← (AX)/ (Src)的余数
(AX) ← (DX,AX)/ (Src)的商
(DX) ← (DX,AX)/ (Src)的余数
CBW
CBW
ALAX
正数前补0
负数前补1
无符号数不能扩展
CWD
CWD
AX(DX,AX)
B
C