第3章微处理器及其系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
地址加法器将段寄存器(16位) 的内容左移4位,然后与指令 指针寄存器IP的内容相加得 到20位的物理地址。
例如: 从内存取指令时,
(CS)=5760H,(IP)=1234H, 则物理地址为:
57600H+ 1234H =57934H。
这里,先将段寄存器CS左移4位(16进 制数只需后面加一个零)。
S4
S3
段寄存器
0
0
ES
0
1
SS
1
0
CS(I/O,INT)
1
1
DS
S5用来表示中断标志状态线,当IF为1时, S5=1。 S6保持恒为0。
2020/6/19
3. BHE/ S7 :高8位数据总线允许/状态复用
2020/6/19
T1 T2 T3 Tw Tw T4
CLK
READY
空闲周期
CPU不需取指令,不需取数据时进入空闲 周期。
以时钟周期 为单位
CLK
T1 T2 T3 T4
T1 T2 T3 T4
2020/6/19
几个空闲周期
5、指令周期:计算机完成对一条指令的读取并执 行这一系列步骤所需要的时间。
指令周期包含一个或几个总线周期。 例如,执行一条8位寄存器乘法(MUL),这是 一条两字节指令,需70-77个时钟周期的执行时 间。
2020/6/19
标志寄存器
15
0
FLAGS
OF DF IF TF SF ZF
AF
PF
CF
例如: MOV AL,4FH 0100 1111 ADD AL,31H +0011 0001 1000 0000 则对标志影响为:
2020/6/19
CF=0——D7未产生进位; PF=0——1的个数为奇数; AF=1——D3有进位; ZF=0——结果非零; SF=1——最高位为1; OF=1——结果为128
3000H: 2: 000H 3000H: 2: 100H
(ES) (DI)
5000H:3000H 5000H:3100H
存储器
......
......
MOV CX, 100H
CLD......
......
MOVSB
…….
SI ,20D20/I6/具19 有自动增量和自动减量功能
DS:2000H~DS:20FFH ES:3000H~ES:30FFH
• EU部分负责指令的执行。
2020/6/19
BIU和EU的管理
BIU和EU可以并行工作,提高CPU效率。
(1)BIU监视着指令队列。当指令队列中有2个空字 节时,就自动把指令取到队列中。
(2)EU执行指令时,从指令队列头部取指令,然后 执行。如需访问存储器,则EU向BIU发出请求 ,由BIU访问存储器。
2020/6/19
(3)通用寄存器组
8086CPU有8个16位的通用寄存器,分2组。
a) 4个通用数据寄存器 : 累加寄存器 (Accumulator)
基址寄存器(Base ) 计数寄存器(Counter) 数据寄存器(Data)
b) 2个变址寄存器
源变址(Source Index) 目的变址 (Destination Index)
状态标志位反映算术或逻辑运算后结果的状态,由处理器根据计算结 果自动设置
CF——进位标志(Carry Flag) 运算结果最高位产生进位或借位,置CF=1
PF——奇偶标志(Parity Flag) 结果低8位中1的个数为偶数,置PF=1
AF——辅助进位标志(Auxiliary Carry Flag) 低4位产生进位置AF=1,用于十进制数运算调整
常用来确定数据段中某一存储单元的地址
例如:
MOV AX, [SI]
SI或DI DS
2020/6/19
指针与变址寄存器
在串处理指令中,SI、 DI作为隐含的源变址 和目的变址寄存器分 别达到在数据段和附 加段中寻址的目的。
例:
……
MOV SI , 2000H
MOV DI , 3000H
(DS) (SI)
•SP——堆栈指针(stack pointer) 用来指示栈顶的偏移地址
•BP——基址指针(base pointer)
存放堆栈段中一个数据区基地址 的偏移地址
SP或BP SS
2020/6/19
指针与变址寄存器
SI和DI为变址寄存器,用于访问数据段和附加段中 的数据
SI——存放源操作数的偏移地址 DI——存放目的操作数的偏移地址
(3)在执行转移、调用、返回指令时,需改变队列 中的指令,要等新指令装入队列中后,EU才继 续执行指令。
2020/6/19
8086地址生成方式
8086的寻址空间是1M字节,物理地址需要20位的 地址码。但CPU中的寄存器都是16位的。为解决该 问题采用了存储器分段技术。把1MB地址分段( Segment),每段64KB,其起始地址的高16位装
入一个段寄存器中,称作段基地址。
段是可独立寻址的内存单位,每个段的起始地址 由一个基址设定,它是一个段最低的地址,每个 逻辑段在实际存储器中的位置是可以浮动的 。
2020/6/19
FFFFFH
1FFFFH 1F000H 10000H
00000H
2020/6/19
段地址+偏移地址
偏移量:F000H 段首地址:10000H
T3:高4位复用线继续传送状态,低16位传送数据;
T4:总线周期结束.
高4位地址线A19-A16
CPU
16位数据、低16位地址 共用线AD15-AD0
2020/6/19
Tw状态
在某些特殊情况下,T3时钟周期内存或I/O接 口不能完成读写工作,需通知CPU,CPU将在T3后 插入一个或多个等待时钟周期——Tw状态,直到 内存或I/O接口准备好。
通用数据寄存器器
计数寄存器CX
在循环LOOP指令和串处理指令中用作隐含计数器。
例如:MOV CX , 200H AGAIN: ……
…… LOOP AGAIN ;(CX)-1(CX),结果0转AGAIN
2020/6/19
通用数据寄存器器
数据寄存器DX
一般在双字长乘除法运算时,把DX和AX组合在一 起存放一个双字长(32位)数,DX用来存放高16位;
2020/6/19
3.1.3 总线周期
1、时钟周期:是CPU的基本时间计量单位,它 由计算机主频决定。8086主频是5MHz,一个时 钟周期就是200ns。
2、总线周期:BIU完成一次访问存储器操作所需 要的时间称作一个总线周期。一个最基本的总线 周期由4个时钟周期组成,习惯上称4个状态,T1, T2, T3, T4状态。只有在CPU和内存或I/O端口之 间传递数据以及取指令时,CPU才执行总线周期。
2020/6/19
8086CPU具有16根数据线,20根地址线,为了节 省成本和空间,它们共用20个引脚
CPU
高4位地址线和状态线 公用A16- A19 /S3-S6
16位数据和低16位地 址
共用线AD15-AD0
2020/6/19
基本总线周期
T1:CPU发送20位地址信号至多路复用线;
T2:CPU向高4位复用线送状态,低16位高阻;
c) 2个指针寄存器
堆栈指针(Stack Pointer) 基数指针 ( Base Pointer )
2020/6/19
通用数据寄存器:
用来暂存计算过程中所用到的操作 数,结果或其它信息。
在进行算术运算和逻辑运算时,通用 数据寄存器任何一个都可以作为源操 作数或目的操作数。
2020/6/19
通用数据寄存器器
16位
16位
段寄存器 CS
DS SS ES IP
内部暂存器
输入/输出 控制电路
外部 总线
运算寄存器
ALU
2020/6/19
标志寄存器
执行部分 控制电路
8位 指令队列缓冲器
总线接口单元 BIU (Bus Interface Unit)
• BIU负责与存储器、I/O端口,即8086/8088CPU 与存储器之间的信息传送。具体地说,即BIU负 责从内存的指定部分取出指令,送到指令流队列 中排队;在执行指令是所需的操作数,也由BIU 从内存的指定区域取出,传送给EU部分去执行。
标志寄存器
15
0
OF DF IF TF SF ZF
AF
PF
CF
控制标志用于控制CPU的操作,由程序设置或Leabharlann Baidu除:
DF——方向标志(Direction Flag) 控制数据串操作指令的步进方向
STD指令将DF置1,使串操作过程中地址自动递减 CLD指令将DF清0,使串操作过程中地址自动递增 IF——中断允许标志(Interupt Flag) 控制可屏蔽中断 STI指令将IF置1,允许CPU接受可屏蔽中断请求 CLI指令将IF清0,禁止CPU接受可屏蔽中断请求 TF——陷阱标志(Trap Flag) 为调试程序而设 将TF置1,CPU处于单步工作方式 将TF清0, CPU正常执行程序
2020/6/19
标志寄存器
15 FLAGS
0
OF DF IF TF SF ZF
AF
PF
CF
ZF ——零标志(Zero Flag)
运算结果为0,置ZF=1
SF ——符号标志(Sign Flag)
与运算结果的最高位(符号位)相同
OF——溢出标志(Overflow Flag)
补码运算结果超过了机器表示的范围,置OF=1 可以用来判断有符号整数补码运算结果的正确性
2020/6/19
3.1.2、8086/8088的寄存器结 构
2020/6/19
(1)段寄存器
8086设置了这4个16位段寄存器,通过这 四个段寄 存器,CPU可以定位4个逻辑段:
• CS——代码段(Code Segment) • DS——数据段(Data Segment) • SS——堆栈段(Stack Segment) • ES——附加段(Extra Segment)
第3章 8086/8088微处理器及其系统
2020/6/19
3.1 8086/8088微处理器 3.2 8086/8088系统的最小/最大工作方式 3.3 8086/8088的存储器 3.4 8086/8088指令系统
2020/6/19
3.1 8086/8088微处理器
8086是Intel系列的16位微处理器, 8086有16根数据线和20根地址线,可 以处理8位或16位数据,寻址1MB的存 储单元和64KB的I/O端口。
累加器AX
是算术运算的主要寄存器。 例如:ADD AX, BX
所有I/O指令都使用这一寄存器与外部设备交换数据。 例如:IN AL, 20H OUT 30H , AX
2020/6/19
通用数据寄存器器
基址寄存器BX
在计算内存储器地址时,经常用来存放基址。 例如:MOV AX, [BX+03H]
2020/6/19
在推出8086之后不久,Intel公司还推出 了准16位微处理器8088。两者内部结构 和基本性能相同。
2020/6/19
3.1.1、8086/8088CPU的内部结 构
20位
执行单元 EU (Execution Unit)
地址加法器
通用 寄存器
AH AL BH BL
CH CL DH DL
SP BP DI SI
源数据串:默认段寄存器:DS,偏移量:SI 可制定其他段寄存器: CS ES SS
目的数据串:默认段寄存器:ES,偏移量:DI 可制定其他段寄存器: 无
2020/6/19
(4)标志寄存器FG(Flag Register)
15
0
FLAGS
OF DF IF TF SF ZF
AF
PF
CF
标志寄存器有9个标志位:6个状态标志位,3个控制标志位
当程序很大,超过64KB时,则可以定义多个代码段、数 据段和附加段。不同的逻辑段可以相交,甚至可以完全 重叠。
2020/6/19
(2)指令指针寄存器IP
用来确定代码段中当前将要被执行的指令的偏 移地址(相对于代码段基址)。 IP本质上就是程序计数器(PC)
IP由控制程序分支的指令、中断以及异常 等隐含控制,用户程序不能直接控制IP。
2020/6/19
3.1.4 8086/8088的引脚信号和功能
2020/6/19
CPU的外部结构
8086/8088CPU芯片都是40条引脚的双列直插式封装。部 分引脚采用了分时复用方式,即同一条引脚在不同的时刻 具有不同的用途。
2020/6/19
8086CPU引脚
1.AD15-AD0:分时复用的地址/数据总线 2.A19/S6-A16/S3:分时复用的地址/状态线
例如: MUL BX ; (AX)(BX)(DX)(AX)
对某些I/O操作DX可用来存放I/O的端口地址(端口 地址 256)。
例如: IN AL , DX
2020/6/19
指针与变址寄存器
用于存放偏移量地址。
偏移量地址表示某一存储单元相对于段寄存器 所指定的基址的位移量。
2020/6/19
指针与变址寄存器 SP和BP为指针寄存器,用于访问堆栈段中的数据