2 8086内部结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不可屏蔽中断请求,输入、上升沿有效。
有效时,表示外界向CPU申请不可屏蔽中断。
2. 读写控制信号(续2)
WR(Write)
写控制,输出、三态、低电平有效
有效时,表示CPU正在写出数据给存储器或 I/O端口 读控制,输出、三态、低电平有效
有效时,表示CPU正在从存储器或I/O端口读 入数据
RD(Read)
2. 读写控制信号(续3) READY
存储器或I/O口就绪,输入、高电平有效
物理地址:存储器的绝对地址也称实地址。 逻辑地址:程序中使用的地址。 物理地址=段地址+EA(有效地址) 段地址=(段寄存器)×16
EA=偏移地址 / [基址]+[变址]+[位移量]
物理地址
段寄存器 1000 10000H
段基址
EA=1000H
11000H 位移量 disp 11002H
例: (DS)=1000H, EA=1200H 物理地址=(段寄存器)×16+EA
数据寄存器
可用来存放16位的数据或地址,也可把他们 作为8位寄存器来使用,即把每个16位的通 用寄存器分成高8位(AL,BL,CL,DL)低8 位(AH,BH,CH,DH) 8位寄存器只能存数据,不能存地址。
AX(Accumulator Register,累加器):一般用来 存放参加运算的数据和结果,在乘除法运算,I/O 操作,BCD数运算中还有不可代替的作用 BX:(Base Register,基址寄存器)除可作为数据 寄存器外,还可存放内存的逻辑偏移地址,而 AX.CX,DX则不能 CX:(Counter数据寄存器)它既可作为数据寄 存器,又可在串指令和位移指令中作为计数用 DX:(Data Register,数据寄存器)除可作为通 用数据寄存器外,还在乘除法运算,带符号数的扩 展指令中有特殊用途
8086 CPU由BIU和EU组成 BIU部件功能:取指令,读操作数,送结果, 所有与外部的操作由其完成。 EU部件功能:从BIU队列中取指令,执行指 令,不必访问存储器或I/O端口 访问存储器或I/O端口:EU向BIU发出所需 地址,BIU中形成物理地址,然后访问存储 器或I/O端口,取得操作数送EU,或结果送 到指定内存单元或I/O端口
段寄存器
CS(Code Segment )代码段寄存器
DS(Data Segment )数据段寄存器
ES( Extra Segment )附加段寄存器 SS(Stack Segment )堆栈段寄存器
控制寄存器
IP(Instruction Pointer)指令指针寄存器 PSW(Program Status Word)/ FR(Flags)程序状态字/标志寄存器
第2 章
8086 系 统 结 构
中国科学技术大学 何克东
2.1 8086的结构
8086的内部结构从功能分成两个单元 总线接口单元BIU——管理8086与系统总线的接口,负责CPU对 存储器和外设进行访问 执行单元EU——负责指令的译码、执行和数据的运算 两个单元相互独立,分别完成各自操作 两个单元可以并行执行,实现指令取指和执行的流水线操作
DS
偏移地址
10000H
1000 0 +120 0 1120 0
∴物理地址=11200H
=1200H
11200H
二、 8086CPU的寄存器组织
寄存器的特殊用途和隐含性质
数据寄存器 15 8 7 0
AX BX CX DX AH BH CH DH AL BL CL DL 控制逻辑 指针及变址寄存器 15 SP BP 0 段寄存器 15 CS DS SS ES 0
2.2
1. 2. 3. 4. 5.
8086的引脚信号
数据和地址引脚 读写控制引脚 中断请求和响应引脚 总线请求和响应引脚 其它引脚
1. 数据和地址信号-1
AD15~AD0(Address/Data)
地址/数据分时复用引脚,双向、三态
在访问存储器或外设的总线操作周期中,这些
引脚在第一个时钟周期输出存储器或I/O端口
的低16位地址A15~A0
其他时间用于传送16位数据D15~D0
1. 数据和地址信号-2
A19/S6~A16/S3(Address/Status)
地址/状态分时复用引脚,输出、三态
这些引脚在访问存储器的第一个时钟周期输出高4 位地址A19~A16
在访问外设的第一个时钟周期全部输出低电平无效 其他时间输出状态信号S6~S3
指针及变址寄存器
4个16位寄存器主要弄来存放寄存器或I/O 端口的地址 存放操作数的段内偏移地址
SI(Source Index,源变址寄存器):多用于存放 内存的逻辑偏移地址,字符串操作中存源操作数偏 移地址,也可存放数据 DI(Destination Index,目标变址寄存器):多用 于存放内存的逻辑偏移地址,字符串操作中存目的 操作数偏移地址,也可存放数据 BP(Base Pointer,基址指针):用于存放内存的逻 辑偏移地址(隐含的逻辑段地址在堆栈段寄存器 中),栈数据基址。 SP(Stack Pointer,堆栈指针):用于存放栈顶 的逻辑偏移地址(隐含的逻辑段地址堆栈段寄存器 中),存栈顶偏移地址。
2. 读写控制信号
ALE(Address Latch Enable)
地址锁存允许,输出、三态、高电平有效 ALE引脚高有效时,表示复用引脚:AD15~
AD0和A19/S6~A16/S3正在传送地址信息。
由于地址信息在这些复用引脚上出现的时间很
短暂,所以系统可以利用ALE引脚将地址锁存
数据允许,输出、三态、低电平有效 有效时,表示当前数据总线上正在传送数据,可利 用它来控制对数据总线的驱动 数据发送/接收,输出、三态 该信号表明当前总线上数据的流向 高电平时数据自CPU输出(发送) 低电平时数据输入CPU(接收)
DT/R(Data Transmit/Receive)
0101 0100 0011 1001 +0100 0101 0110 1010 1001 1001 1010 0011 SF=?,ZF=?,PF=?,CF=?,AF=?,OF=?
例2-3 计算机进行5439H+456AH运 算后,SF、ZF、PF、CF、AF、OF的值。
0101 0100 0011 1001 +0100 0101 0110 1010 1001 1001 1010 0011 SF=1,ZF=0,PF=1,CF=0,AF=1,OF=1
一、
8086内部结构
1. 指令执行部件EU EU功能:告诉BIU从何处取指令 或数据,完成指令译码和执行 指令。 EU的组成: (1)算术逻辑运算单元ALU (2)标志寄存器FR/PSW
(3)寄存器组
(4)EU控制器
2. 总线接口部件BIU
BIU功能:地址形成、取指令、指令排队、读/写操作数和总线控制。
0101 0011 1001 0100 +1000 1000 1000 0001 1101 1100 0001 0101 SF=?,ZF=?,PF=?,CF=?,AF=?,OF=?
例2-2 计算机进行5394H+-777FH运 算后,SF、ZF、PF、CF、AF、OF的值。
0101 0011 1001 0100 +1000 1000 1000 0001 1101 1100 0001 0101 SF=1,ZF=0,PF=0,CF=0,AF=0,OF=0
起来。
2. 读写控制信号(续1)
M / IO ( Memory / Input and Output)
存储器或I/O访问,输出、三态
该引脚输出高电平时,表示CPU将访问存储器, 这时地址总线A19~A0提供20位存储器地址
该引脚输出低电平时,表示CPU将访问I/O端口, 这时地址总线A15~A0提供16位I/O口地址
25页
ALU
PSW
SI DI IP
数据寄存器
AX(Accumulator) 累加器 BX(Base) 基地址寄存器 CX(Count) 计数器 DX(Data) 数据寄存器
指针及变址寄存器
SP(Stack Pointer) 堆栈指针寄存器 BP(Base Pointer) 基地址指针寄存器 SI(Source Index) 源变址寄存器 DI(Destination Index) 目标变址寄存器
可屏蔽中断响应,输出、低电平有效
有效时,表示来自INTR引脚的中断请求已被 CPU响应,CPU进入中断响应周期。 中断响应周期是连续的两个,每个都发出有效响 应信号,以便通知外设他们的中断请求已被响应、 并令有关设备将中断向量号送到数据总线。
3. 中断请求和响应信号(续2)
NMI(Non-Maskable Interrupt)
在总线操作周期中,8086 CPU会在第3个时钟 周期的前沿测试该引脚 如果测到高有效,CPU直接进入第4个时钟周期 如果测到无效,CPU将插入等待周期Tw CPU在等待周期中仍然要监测READY信号,有 效则进入第4个时钟周期,否则继续插入等待周 期Tw。
2. 读写控制信号(续4)
DEN(Data Enable)
练习1:计算机进行5394H+-777FH运 算后,SF、ZF、PF、CF、AF、OF的值。
0101 0011 1001 0100 +1000 1000 1000 0001 1101 1100 0001 0101 SF=?,ZF=?,PF=?,CF=?,AF=?,OF=?
练习1:计算机进行5394H+-777FH运 算后,SF、ZF、PF、CF、AF、OF的值。
3. 中断请求 Request)
可屏蔽中断请求,输入、高电平有效
有效时,表示请求设备向CPU申请可屏蔽 中断 该请求的优先级别较低,并可通过关中断指 令CLI清除标志寄存器中的IF标志、从而对 中断请求进行屏蔽
3. 中断请求和响应信号(续1)
INTA(Interrupt Acknowledge)
练习2 计算机进行5439H+456AH运 算后,SF、ZF、PF、CF、AF、OF的值。
0101 0100 0011 1001 +0100 0101 0110 1010 1001 1001 1010 0011 SF=?,ZF=?,PF=?,CF=?,AF=?,OF=?
练习2 计算机进行5439H+456AH运 算后,SF、ZF、PF、CF、AF、OF的值。
CS(Code Segment,代码段寄存器): 存放程序代码段起始地址的高16位,存放当 前执行的程序的段地址。 DS(Data Segment,数据段寄存器):存 放数据段起始地址的高16位,存放当前执行 的程序所用操作数的段地址。 SS(Stack Segment,堆栈段寄存器):存 放堆栈段起始地址的高16位,存放当前执行 的程序所用堆栈的段地址。 ES(Extended Segment,扩展段寄存 器):存放扩展数据段起始地址的高16位
向EU提供指令和数据,把EU的处理结果送给存储器或接口。 BIU的组成: (1)16位段寄存器 CS — 代码段寄存器 DS — 数据段寄存器 ES — 附加段寄存器 SS — 堆栈段寄存器
(2)16位指令指针寄存器
(3)20位物理地址加法器 (4)6字节指令队列
(5)总线控制逻辑
访问存储器
物理地址形成
堆、栈其实是两种数据结构 堆栈都是一种数据项按序排列的数据结构, 只能在一端(称为栈顶(top))对数据项进行 插入和删除。 要点: 堆:顺序随意 栈:后进先出(Last-In/First-Out)
栈: 在函数调用时,第一个进栈的是主函 数中函数调用后的下一条指令(函数调用语 句的下一条可执行语句)的地址,然后是函 数的各个参数,在大多数的C编译器中,参 数是由右往左入栈的,然后是函数中的局部 变量。注意静态变量是不入栈的。 当本次函数调用结束后,局部变量先出 栈,然后是参数,最后栈顶指针指向最开始 存的地址,也就是主函数中的下一条指令, 程序由该点继续运行。 堆:一般是在堆的头部用一个字节存放 堆的大小。堆中的具体内容有程序员安排。