第二章 8086微处理器
第2章-8086微处理器part2

8086 CPU在最小模式中引脚定义
M/#IO:Memory/Input & Output,三态输出
存储器或I/O端口访问信号 。指示8086的访问对象,发 给MEM或I/O接口。 M/# IO为高电平时,表示 当前CPU正在访问存储器;
M/# IO 为低电平时,表 示当前CPU正在访问I/O端 口
数据驱动器数据流向控制信 号,输出,三态。
在8086系统中,通常采用 74LS245、8286或8287作 为数据总线的驱动器,用 DT/#R信号来控制数据驱动 器的数据传送方向。 当DT/#R=1时,进行数据 发送; 当DT/#R=0时,进行数据 接收。
8086 CPU在最小模式中引脚定义
READY:准备就绪信号 由外部输入,高电平有效 ,表示CPU访问的存储器 或I/O端口己准备好传送 数据。 当READY无效时,要求 CPU插入一个或多个等待 周期Tw,直到READY信 号有效为止。
S3 0 1 0 1
当前正在使用的段寄存器 ES SS CS或未使用任何段寄存器 DS
8086 CPU在最小模式中引脚定义
#BHE/S7:高8位总线允许(Bus High Enable)
T1:指示高8位数据总线上的数据 是否有效 (#BHE:AD0)配合:00时读写字 ,01时读写奇地址字节,10时读写 偶地址字节 其他T周期:输出状态信号S7(S7 始终为逻辑1,未定义) DMA方式下,该引脚为高阻态。
最大模式引脚信号(续)
LOCK# :总线封锁(优先权锁定) 三态输出,低电平有效。 LOCK有效时表示CPU不允许其它总线主控者占用 总线。 ห้องสมุดไป่ตู้ 这个信号由软件设置。 • 当在指令前加上LOCK前缀时,则在执行这条 指令期间LOCK保持有效,即在此指令执行期 间,CPU封锁其它主控者使用总线。 在保持响应期间,LOCK#为高阻态。
第二章 8086 CPU[2-3]
![第二章 8086 CPU[2-3]](https://img.taocdn.com/s3/m/e08657c3da38376baf1faef3.png)
应用例子:发光二极管接口
+5V
D0~D7 A0~A15
IOW
20:49
D|0 Q0
1
R
D7
...
...
...
...
译
码
CP
器
R
Q7
1
74LS273
12
§2-4 8086的工作模式和总线操作
3、时钟发生器8284A
产生CLK信号,作为8086CPU的内部和外部的时间基准信号 提供系统时钟(CLK)、READY同步和RESET同步信号
第二章 8086 CPU
内容提要
引言 8086 CPU的内部结构 8086/8088 CPU的引脚功能 8086的存储器组织 8086的工作模式和总线操作
20:49
2
§2-4 8086的工作模式和总线操作
1、电源要求
8086/8088微处理器都是用+5.0V电源电压,其允许偏差为±10%。
OE
地址总线
存储器
I/O芯片
20:49
T 74LS245 /8286/82 87
OE
数据总线
15
§2-4 8086的工作模式和总线操作
2.4.3 总线操作时序
相关概念介绍
➢时钟周期
➢总线周期
➢指令周期
➢时序 ➢时序图
时序就是指系统中各总线信号(即地址、 数据和控制信号)产生的先后次序。
20:49
16
在8086/8088CPU中,一个总线周期至少包括4个时钟周期。
1~2个
若干个
T1 T2 T3 T4 Ti Ti T1 T2 T3 Tw Tw Tw T4 Ti Ti
第2章8086微处理器与汇编语言(下)

第二章微处理器与汇编语言(下)
2.3 指令系统
2.4 汇编语言
2.5 汇编语言程序设计
2.6 系统功能调用
2.7 宏指令、条件汇编及上机过程 2.8 模块化程序设计与混合编程
三、指令系统
1. 传送类指令
2. 算术运算类指令
3. 位操作类指令
4. 串操作指令
5. 循环和转移指令 6. 子程序的调用和返回指令 7. 输入输出指令
4. 表达式与运算符 (3)关系运算符 表2-4-3列出的关系运算符。
2. 汇编语言数据
(2)变量(续) ④ 带DUP表达式 DUP是定义重复数据操作符。格式如下:
表达式1是重复次数,表达式2是重复的内 容。例如: D_STR DB3)标号
标号是一条指令目标代码的符号地址。具 有以下三个属性: ● 段属性(SEG) ● 偏移量属性(OFFSET)
1. 传送类指令 (4)标志传送指令(续)
③
标志位进栈
格式:PUSHF
将标志寄存器压入堆栈。标志寄存器中各 标志位本身不受影响。
④
标志位出栈
格式:POPF
将堆栈顶部的内容弹入标志寄存器。
1. 传送类指令 (5)地址传送指令 ① 装入有效地址 格式:LEA DEST,SRC 指令对标志寄存器各位无影响。 ② 装入地址指针 格式:LDS DEST,SRC 或 LES DEST,SRC 指令对标志寄存器各位无影响。
第二章 8086微处理器与汇编语言
(下)
学习目标
1、识记80X86汇编语言指令集、伪指 令和宏、MASM表达式。 2、理解程序设计中顺序、分支、循环、 子程序的基本结构,以及实现方法。 3、识记汇编语言编程、上机调试的基 本方法。 4、识记DOS功能调用和BIOS中断调 用的方法和应用,以及混合编程的概念。
【教学课件】第2章 8086微处理器

控制 电路
局部总线 接口
SYSB/RESB
1
20
2
19
3
18
4
17
5
8289 16
6
15
7
14
8
13
9
12
10
11
INIT
BCLK BREQ BPRN BPRO BUSY CBRQ
总线仲裁 信号
AEN
V CC S1 S0 CLK
LOCK
CRQLCK ANYRQST
AEN CBRQ BUSY
2021/8/17
DEN CEN
INTA IORC AIOWC IOWC
2021/8/17
23
2.总线仲裁控制器8289
仲裁电路
状态
S2
信号
S1
S0
状态 译码器
多路总线 接口
控制 输入
LOCK CLK
CRQLCK
RESB ANYRQST
IOB
S2 IOB
RESB BCLK INIT BREQ BPRO BPRN
GND
数据总线
2021/8/17
S0
S1
S2
INTR R Q / G T0
R Q / G T1
8288 总线控制器
IN T A
8259A 及有关电路
控制总线 中 断 请 求
22
1.总线控制器8288
状态
S2
信号
S1
S0
状态 译码器
控制 输入
CLK
AEN CEN IOB
控制 电路
命令 信号 发生器
控制信号 发生器
2.3.1 最小模式和最大模式的概念
第二章 8086体系结构

8086微处理器概览
标志位寄存器(FR) • 16位标志位寄存器FR,共有9个
标志位。其中6个是状态标志位, 3个是控制标志位,用于反映 CPU运行过程中的某些状态特征。
标志位寄存器
3、标志寄存器FR
标志寄存器FR中共有9个标志位,可分成两类: ➢状态标志 表示运算结果的特征,它们是 CF、PF、AF、 ZF、SF和OF ➢控制标志 控制CPU的操作,它们是IF、DF和TF。
IP :BIU要取指令的地址。
IP
三、8086CPU的管脚及功能
8086是16位CPU。它采用高性能的N— 沟道,耗尽型负载的硅栅工艺(HMOS)制 造。由于受当时制造工艺的限制,部分管 脚采用了分时复用的方式,构成了40条管 脚的双列直插式封装
1、 8086的两种工作方式
最小模式:系统中只有8086一个处理器,所有的控制信号都 是由8086CPU产生(MN/MX=1)。
最大模式:系统中可包含一个以上的处理器,比如包含协处 理器8087。在系统规模比较大的情况下,系统控 制信号不是由8086直接产生,而是通过与8086配 套的总线控制器等形成(MN/MX=0)。
三总线结构 数据线DB 地址线AB 控制线CB
微机的三总线结构
➢ 最小模式下的引脚说明
( 1 ) AD15 ~ AD0 (Address Data Bus):
堆栈指针用于存放栈顶的逻辑偏移地 址,隐含的逻辑段地址在SS寄存器中。
寄存器的特殊用途和隐含性质
在指令中没有明显的标出,而这些寄存器参 加操作,称之为“隐含寻址”。
具体的:在某类指令中,某些通用寄存器有指 定的特殊用法,编程时需遵循这些规定,将某些 特殊数据放在特定的寄存器中,这样才能正确的 执行这些指令。采用“隐含”的方式,能有效地 缩短指令代码的长度。
第二章 8086微处理器(1)

16位微处理器概述
5. 第五代微处理器 • (1993年)Pentium(奔腾)— 32位微处理器 - 5级超标量结构、分支预测技术 64条数据线、32条地址线 - 64条数据线、32条地址线 - 常用指令硬件化,使用微程序设计
16位微处理器概述
6. 第六代微处理器 • Pentium Pro(高能奔腾) — 32位 - 64条数据线、36条地址线 64条数据线、36条地址线 - 实现了动态执行技术(乱序执行) • (1997年)Pentium II(奔腾2)— 32位微处理器 - 是Pentium Pro + MMX - 双独立总线结构 • (1999年)Pentium III(奔腾3) — 32位微处理器 - 增加了70条SSE指令(流水式单指令多数据扩充) - 首次内置序列号
3)方向标志DF(Direction Flag) 用于串操作指令中的地址减量修改(DF=1)还是增量修改 (DF=0)。 两条专门的指令可以置“1”或置“0”分别为STD,CLD。 M1 (ABC0) M2
低
SI-3 SI-2 SI-1 SI
0 C B A
0 0 C C B A A
DI-3 DI-2 DI-1 DI
高 DF=1 DF=0
(2)总线接口部件BIU )总线接口部件BIU
功能: 负责与内存(M)、输入/输出(I/O)接口之间指令或数据的传送: 1) 从内存M取指令存入指令队列,供EU使用。 2)EU执行指令需读数据/送结果时,都经过BIU。
EU
BIU存中由于各部分存放的数据性质不同,分为代码段、数据段、 堆栈段、扩展数据段。
20
差 别
2、8086与8088的编程结构 、 与 的编程结构
∑
内 部 寄 存 器
第二章-8086微处理器

答案:A
思考题
8086/8088的状态标志有 A)3 B)4 C)5 答案:D 个。 D)6
思考题
8086/8088的控制标志有 A)3 B)4 C)5 答案:A 个。 D)6
三、引脚信号和功能(图2-5 )
8086总线周期的概念: 为了取得指令或传送数据,就需要CPU的总线接 口单元(BIU)执行一个总线周期。 一个最基本的总线周期由4个时钟周期组成。 习惯上将4个时钟周期分别称为4个状态,即T1状 态、T2状态、T3状态和T4状态。 图2-17
2.方向标志DF(Direction Flag) 用于串操作指令中的地址增量修改(DF =0)还是减量修改(DF=1)。 STD使DF=1 CLD使DF=0
(三)标志寄存器-控制标志(续)
3.跟踪标志TF(Trap Flag) 若TF=1,则CPU按跟踪方式(单步方式) 执行程序,否则将正常执行程序。
思考题
指令队列的作用是 A)暂存操作数地址 。 B)暂存操作数
C)暂存指令地址
D)暂存预取指令 答案:D
思考题
8086的指令队列的长度是 A)4个 B)5个 C)6个 D)8个 字节。
答案: C
思考题
8088的指令队列的长度是 A)4个 B)5个 C)6个 D)8个 字节。
答案:A
思考题
第二章 8086/8088微处理器
8086/8088微处理器的结构 8086/8088典型时序分析
简 介
8086:16位微处理器 数据总线宽度16位:可以处理8位或16位数据 地址总线宽度20位:可直接寻址1MB存储单元和 64KB的I/O端口 8088:准16位处理器 内部寄存器及内部操作均为16位,外部数据总线8位 8088与8086指令系统完全相同,芯片内部逻辑结构、芯片引 脚有个别差异。 设计8088的目的主要是为了与Intel原有的8位外围接口芯片 直接兼容
第2章 16位微处理器8086

计算机原理讲义
执行单元EU
4) 标志寄存器 FLAG
6位状态标志,3位控制标志IF、DF、TF,剩下7位保留 位状态标志, 位控制标志IF、DF、TF,剩下7 IF 15 14 13 12 11 10 9 IF 8 7 6 5 4 AF 3 2 PF 1 0 CF
OF DF
TF SF ZF
Flag) 位标志, CF(Carry Flag)进(借)位标志,加法运算最高位产生进位或减法运算 最高位产生借位, 否则置0 最高位产生借位,则CF置1,否则置0 Flag)辅助进位标志,加法运算时第3位往第4 AF(Auxiliary Carry Flag)辅助进位标志,加法运算时第3位往第4位 有进位,或减法运算时第3位往第4位有借位, AF置 否则置0 有进位,或减法运算时第3位往第4位有借位,则AF置1,否则置0 Flag)零标志, 若当前运算结果为零, ZF置1,否则置 否则置0 ZF(Zero Flag)零标志, 若当前运算结果为零, 则ZF置1,否则置0 SF( Flag)符号标志,与运算结果最高位相同,若为负数, SF(Sign Flag)符号标志,与运算结果最高位相同,若为负数,则SF 否则置0 SF指示了当前运算结果是正还是负 置1,否则置0,SF指示了当前运算结果是正还是负 Flag)溢出标志,有符号数算术运算结果溢出, OF置 OF(Overflow Flag)溢出标志,有符号数算术运算结果溢出,则OF置1, 否则置 否则置0 PF(Parity Flag)奇偶标志,运算结果低8位所含1的个数为偶数则PF Flag)奇偶标志,运算结果低8位所含1的个数为偶数则PF 置1,否则置0 否则置 计算机原理讲义
总线接口单元(BIU) 一. 总线接口单元(BIU) 1. 具体功能
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章8086/8088微处理器及其系统结构内容提要:1.8086微处理器结构:CPU内部结构:总线接口部件BIU,执行部件EU;CPU寄存器结构:通用寄存器,段寄存器,标志寄存器,指令指针寄存器;CPU引脚及其功能:公用引脚,最小模式控制信号引脚,最大模式控制信号引脚。
2.8086微机系统存储器结构:存储器地址空间与数据存储格式;存储器组成;存储器分段。
3.8086微机系统I/O结构4.8086最小/最大模式系统总线的形成5.8086CPU时序6.最小模式系统中8086CPU的读/写总线周期7.微处理器的发展学习目标1.掌握CPU寄存器结构、作用、CPU引脚功能、存储器分段与物理地址形成、最小/最大模式的概念和系统组建、系统总线形成;2.理解存储器读/写时序;3.了解微处理器的发展。
难点:1.引脚功能,最小/最大模式系统形成;2.存储器读/写时序。
学时:8问题:为什么选择8088/8086?•简单、容易理解掌握•与目前流行的P3、P4向下兼容,形成x86体系•16位CPU目前仍在大量应用思考题1、比较8086CPU与8086CPU的异同之处。
2、8086CPU从功能上分为几部分?各部分由什么组成?各部分的功能是什么?3、CPU的运算功能是由ALU实现的,8086CPU中有几个ALU?是多少位的ALU?起什么作用?4、8086CPU有哪些寄存器?各有什么用途?标志寄存器的各标志位在什么情况下置位?5、8086CPU内哪些寄存器可以和I/O端口打交道,它们各有什么作用?6、8086系统中的物理地址是如何得到的?假如CS=2400H,IP=2l00H,其物理地址是多少?思考题1.从时序的观点分析8088完成一次存储器读操作的过程?2.什么是8088的最大、最小模式?3.在最小模式中,8088如何产生其三总线?4.在最大模式中,为什么要使用总线控制器?思考题1.试述最小模式下读/写总线周期的主要区别。
2.CPU响应中断时,为什么要执行两个连续的中断响应周期?3.当8086微处理器响应总线请求发出HLDA信号后,有哪些引脚信号处于高阻?4.8086/8088微处理器响应总线请求发出HLDA信号后,执行部件EU会立即停止操作吗?为什么?5.在8086系统中,地址/数据复用信号是如何区分的?6.总线周期的含义是什么? 8086/8088的基本总线周期由几个时钟组成?如果一个CPU的时钟频率为4.77MHz,那么它的一个时钟周期为多少?一个基本总线周期为多少?若主频为l5MHz呢?7.在最小模式总线写周期的T1、T2、T3、T4状态,8086CPU分别执行什么动作?思考题1.在8086系统的最大模式下为什么一定要用总线控制器?试述总线控制器8288的主要功能,并说明它有哪些输入和输出信号?试述8086系统中时钟发生器8284A的主要作用以及可提供的几种时钟信号。
作业:一、问答题:1、8088微处理器的逻辑地址是由哪几部分组成的?怎样将逻辑地址转换为物理地址?2、如何设置用户堆栈,在压栈和退栈操作时,堆栈指针SP的内容如何变化?3、如果一个程序在执行前(CS)=0A7F0H,(IP)=2B40H,该程序的起始地址是多少?4、如果一个堆栈是从地址1250:0100开始,(SP)=0052H,试回答以下问题:(1)SS段的段地址是多少?(2)栈顶的物理地址是多少?(3)栈底的物理地址是多少?存入字数据后,SP的内容是什么?5、有两个16位字1234H和5678H分别存放在02000H为首地址的存储单元中,试用图表示存储数据的情况。
二、填空题1、8088CPU内部结构按功能分为两部分,即和。
一、8086/8088CPU的结构1. 8086/8088 CPU的内部结构1)指令执行部件指令执行部件EU主要由算术逻辑运算单元ALU、标志寄存器FR、通用寄存器组和EU 控制器等四个部件组成。
其主要功能是执行命令。
一般情况下指令顺序执行,EU可不断地从BIU指令队列缓冲器中取得执行的指令,连续执行指令,而省去了访问存储器取指令所需的时间。
如果指令执行过程中需要访问存储器存取数据时,只需将要访问的地址送给BIU,等待操作数到来后再继续执行。
遇到转移类指令时则将指令队列中的后续指令作废,等待BIU重新从存储器中取出新的指令代码进入指令队列缓冲器后,EU才能继续执行指令。
这种情况下,EU和BIU的并行操作回受到一定的影响,但只要转移类指令出现的频率不是很高,两者的并行操作仍然能取得较好的效果。
EU中的算术逻辑运算部件ALU可完成16位或8位二进制数的运算,运算结果一方面通过内部总线送到通用寄存器组或BIU的内部寄存器中以等待写到存储器;另一方面影响状态标志寄存器FR的状态标志位。
16位暂存器用于暂时存放参加运算的操作数。
EU控制器则负责从BIU的指令队列缓冲器中取指令、分析指令(即对指令译码),然后根据译码结果向EU内部各部件发出控制命令以完成指令的功能。
2)总线接口部件BIU总线接口部件BIU主要有地址加法器、专用寄存器组、指令队列缓冲器以及总线控制电路等四个部件组成。
其主要功能是负责完成CPU与存储器或I/O设备之间的数据传送。
BIU中地址加法器将来自于段寄存器的16位地址段首地址左移4位后与来自于IP寄存器或EU提供的16位偏移地址相加(通常将“段首地址:偏移地址”称为逻辑地址),形成一个20位的实际地址(又称为物理地址),以对1MB的存储空间进行寻址。
具体讲:当CPU执行指令时,BIU根据指令的寻址方式通过地址加法器形成指令在存储器中的物理地址,然后访问该物理地址所对应的存储单元,从中取出指令代码送到指令队列缓冲器中等待执行。
指令队列一共6个字节(8088的指令队列为4个字节),一旦指令队列中空出2个(8086中)或一个(8088中)字节,BIU将自动进入读指令操作以填满指令队列;遇到转移类指令时,BIU将指令队列中的已有指令作废,重新从新的目标地址中取指令送到指令队列中;当EU 需要读写数据时,BIU将根据EU送来的操作数地址形成操作数的物理地址,从中读取操作数或者将指令的执行结果传送到该物理地址所指定的内存单元或外设端口中。
BIU的总线控制电路将CPU的内部总线与外部总线相连,是CPU与外部交换数据的通路。
对于8086而言,BIU的总线控制电路包括16条数据总线、20条地址总线和若干条控制总线;而8088的总线控制电路与外部交换数据的总线宽度是8位,总线控制电路与通用寄存器组之间的数据总线宽度也是8位,而EU内部总线仍是16位,这也是将8088称为准16位的微处理器的原因。
3)8086/8088 CPU寄存器阵列(寄存器组)8086/8088 CPU中有14个16位的寄存器,按用途分为四类:①通用寄存器:8个,分为两组:数据寄存器:累加器AX、基址寄存器BX、计数寄存器CX、数据寄存器DX,每个数据寄存器可存放16位操作数,也可拆成两个8位寄存器,用来存放8位操作数,AX、BX、CX、DX分别可拆成AH、AL、BH、BL、CH、CL、DH、DL,其中AH、BH、CH、DH 为高八位,AL、BL、CL、DL为低八位;指针和变址寄存器:堆栈指针SP、基址指针BP、源变址寄存器SI、目的变址寄存器DI,可用来存放数据和地址,但只能按16位进行存取操作。
通用寄存器的特定用法见表2.1。
②段寄存器:4个代码段寄存器CS:用于存放当前代码段的段地址;数据段寄存器DS:用于存放当前数据段的段地址;附加段寄存器ES:用于存放当前附加段的段地址;堆栈段寄存器SS:用于存放当前堆栈段的段地址。
③专用寄存器:两个标志寄存器FR:仅定义了9位,其中6位用作状态标志,3位用作控制标志。
a. 状态标志位用来反映EU执行算术或逻辑运算的结果特征,6个状态位如下:进位标志CF:当加法运算有进位,减法运算有借位时,CF=1,否则CF=0;辅助进位标志AF:在字节操作时,低4位向高4位有进位(加法)或有借位(减法);在字操作时,低字节向高字节有进位(加法)或有借位(减法)时,则AF=1,否则AF=0。
奇偶校验标志PF:当运算结果低8位“1”的个数为偶数时,PF=1,否则PF=0;零标志ZF:当运算结果位0时,ZF=1,否则ZF=0;溢出标志OF:在有符号数的算术运算时,当运算结果有溢出时,OF=1,否则OF=0;符号标志SF:在有符号数的算术运算时,当运算结果为负时,SF=1,否则SF=0;b. 控制标志位用来控制CPU的操作,3个标志位如下:方向标志DF:当DF=0时,在串操作指令中,进行自动增址操作;当DF=1时,在串操作指令中,进行自动减址操作;中断允许标志IF:当IF=0时,禁止CPU响应可屏蔽中断;当IF=1时,允许CPU响应可屏蔽中断;单步陷阱标志TF:当IF=1时,表示CPU进入单步工作方式;当IF=0时,表示CPU正常执行程序。
8086/8088 CPU寄存器结构见图2.1。
指令指针IP:用来存放要取的下一条指令在当前代码段中的偏移地址,程序不能直接访问IP,在程序运行过程中,BIU可修改IP中内容。
二、8086/8088 CPU芯片的引脚及其功能8086/8088 CPU具有40条引脚,双列直插式封装,采用分时复用地址数据总线,从而使8086/8088 CPU用40条引脚实现20位地址、16位数据、控制信号及状态信号的传输。
8086/8088 CPU芯片可以在两种模式下工作,即最大模式和最小模式。
最大模式:指系统中通常含有两个或多个微处理器(即多微处理器系统),其中一个主处理器就是8086/8088 CPU,另外的处理器可以是协处理器I/O处理器。
最小模式:在系统中只有8086/8088一个微处理器。
1. 两种模式公用的引脚的定义AD0~AD15(Address/Data Bus):分时复用的地址数据线。
双向。
在了解分时复用的概念之前必须先了解总线周期概念:总线周期:CPU对存储单元或I/O端口每读/写一次数据(一个字节或一个字)所需的时间称为一个总线周期。
通常情况下,一个总线周期分为4个时钟周期,即T1、T2、T3、T4。
下面讲解AD15~AD0的具体分时复用的问题:(8088只有AD7~AD0)在T1期间作地址线A15~A0用,此时是输出的(是存储单元的低十六位地址或I/O端口的十六位地址);在T2~T4期间作数据线D15~D0用,此时是双向的。
A19/S6~A16/S3:分时复用,输出引脚。
在T1期间,作地址线A19~A16用,对存储单元进行读写时,高四位地址线由A19~A16给出;在T2~T4期间作为S6~S3状态线用。
状态线的特征如下:S5:用来表示中断允许状态位IF的当前设置。