1 / 58

第二章 8086 系统结构

第二章 8086 系统结构. 2-1 8086CPU 结构. 2-2 8088/8086 的存储器组织. 2-3 8086 的系统配置及引脚功能. 2-4 8086CPU 时序. 2-1 8086CPU 结构. 第二章 8086 系统结构. 一、 8086CPU 的内部结构. 属第三代微处理器 运算能力: 数据总线: DB - 16bit ( 8086 ) / 8bit ( 8088 ) 地址总线: AB - 20bit 内存 寻址能力 2 20 = 1MB.

Download Presentation

第二章 8086 系统结构

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 8086系统结构 2-1 8086CPU结构 2-2 8088/8086的存储器组织 2-3 8086的系统配置及引脚功能 2-4 8086CPU时序

  2. 2-1 8086CPU结构 第二章 8086系统结构 一、 8086CPU的内部结构 属第三代微处理器 运算能力: 数据总线:DB-16bit(8086)/ 8bit(8088) 地址总线:AB-20bit 内存寻址能力220=1MB

  3. 2.2 IA-32微处理器的功能结构 • 8086的内部结构从功能上分成两部分: • 总线接口部件BIU: • 总线接口单元BIU,负责控制存储器读写。 • 执行部件EU: • 执行单元EU从指令队列中取出指令并执行。 • 特点: • 取指令和执行指令分开进行,提高了速度。

  4. 通用寄存器 AX AH AL BX BH BL CX CH CL DX DH DL SP BP DI SI 地址加法器 CS DS SS ES IP 暂存器 8086总线 暂 存 器 指令队列 1 2 3 4 5 6 ALU 8088 8086 总 线 控 制 逻 辑 2.2.1 8086的功能结构 20位地址总线 16位数据总线 存 储 器 接 口 16位内部总线 EU 控 制 器 8位队列总线 标志寄存器 执行部件EU 总线接口部件BIU

  5. 1.总线接口部件BIU(Bus Interface Unit) 组成:16位段寄存器,指令指针,20位地址加法器,总线控制逻辑,6字节指令队列。 作用:负责从内存指定单元中取出指令,送入指令流队列中排队;取出指令所需的操作数送EU单元去执行。 工作过程:由段寄存器与IP形成20位物理地址送地址总线,由总线控制电路发出存储器“读”信号,按给定的地址从存储器中取出指令,送到指令队列中等待执行。 *当指令队列有2个或2个以上的字节空余时,BIU自动将指令取到指令队列中。若遇到转移指令等,则将指令队列清空,BIU重新取新地址中的指令代码,送入指令队列。 *指令指针IP由BIU自动修改,IP总是指向下一条将要执行指令的地址。

  6. 2.指令执行部件EU(Exection Unit) 组成:通用寄存器,标志寄存器,ALU,EU控制系统等。 作用:负责指令的执行,完成指令的操作。 工作过程:从队列中取得指令,进行译码,根据指令要求向EU内部各部件发出控制命令,完成执行指令的功能。若执行指令需要访问存储器或I/O端口,则EU将操作数的偏移地址送给BIU,由BIU取得操作数送给EU。

  7. 3. 8086CPU结构的特点: 减少了CPU为取指令而等待的时间,提高了CPU的运行速度。

  8. 8088的指令执行过程

  9. 二、 8088/8086的寄存器结构 8088/8086有14个16位寄存器 16位 8位 8位 AX → AH AL BX → BH BL CX → CH CL DX → DH DL 1. 通用寄存器组 2. 指针/变址寄存器 3. 2个控制寄存器 4. 4个段寄存器

  10. 1. 通用寄存器组 *各寄存器隐含用法 * 4个16位的数据寄存器 (AX,BX,CX,DX)寄存器既可存放数据,也可存放地址。 * 既可作为16位寄存器也可作为8位寄存器使用。(例:AH,AL) 8bit寄存器只能存放数据。 *通用性强,对任何指令都具有相同的功能

  11. 2. 指针及变址寄存器(SP,BP,SI,DI) * BP,SP寄存器称为指针寄存器,与SS联用。 * DI,SI寄存器称为变址寄存器,与DS联用,在串指令中,SI,DI均为隐含寻址,此时,SI与DS联用, DI与ES联用。

  12. 3. 指令指针和状态寄存器 (1) 指令指针 I P是一个16位的专用寄存器。当BIU从内存中取出一条指令,自动修改IP,始终指向下一条将要执行的指令在现行代码段中的偏移量。 8086/8088中的某些指令执行后会改变IP的内容,但用户不能编写指令直接改变IP 的内容。 * I P是指令地址在代码段内的偏移量(又称偏移地址),IP要与CS配合构成共同物理地址。 (2) 状态(标志)寄存器PSW PSW 是一个16位的专用寄存器(6位状态位,3位控制位)存放运算结果的特征。

  13. D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 OF DF IF TF SF ZF AF PF CF 标 志 寄 存 器 Flags • 唯一能按位操作的寄存器 • 只定义了其中9位,另外7位未定义(保留) • 6位状态标志:OF、SF、ZF、PF、CF、AF • 3位控制标志:DF、IF、TF

  14. 状 态 标 志 用来记录程序中运行结构的状态信息。由于这些状态信息 往往作为后续条件转移指令的转移控制条件,所以也称作 条件码。 OF(Overflow Flag):符号数溢出标志 加法运算时,若两个数符号相同,但结果符号相反。 OF=1: 减法运算时,若两个数符号相反,结果符号与减数符号相同。 判定方法: OF =最高位进/借位次高位进/借位

  15. 0 0 0 0 1 0 0 1 + 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 9 + 8 17 状 态 标 志 • AF(Auxiliary Carry Flag):辅助进/借位标志,半字节进位标志。用于BCD码调整指令。 • AF=1:在字节操作时,数据的D3位向D4位产生了进/借位。这个标志主要用于十进制数算术运算指令中。

  16. 状 态 标 志 • CF(Carry Flag):进位/借位标志,当结果的最高位(字节操作时的D7或字操作时的D15)产生一个进位或借位,则CF=1。 这个标志主要用于多字节数的加、减法运算。

  17. 状 态 标 志 • SF(Sign Flag):符号标志 • 记录运算结果的符号,结果为负SF=1;否则SF=0; • ZF(Zero Flag):零标志 • ZF=1:运算结果为0(与是否进位无关)。 • ZF=0:运算结果不是0。

  18. 状 态 标 志 • PF (Parity Flag):奇偶标志(低8位) • PF=1: 表示结果有偶数个1。 • PF=0: 表示结果有奇数个1。 • 有些运算的操作会影响全部状态标志,如加法、减法运算; • 有些操作影响部分状态标志,如移位操作; • 也有些指令的操作不影响任何状态标志,如通用数据传送指令。

  19. 0 1 1 0 0 0 1 1 0 1 0 0 1 1 0 1 + 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 0 1 1 0 例:2个数相加后,分析各标志位的值 运算结果最高位为1 ∴SF=1; 运算结果本身≠0 ∴ZF=0; 低8位中1的个数为偶数个 ∴PF=1; 最高位没有进位 ∴CF=0; 第三位向第四位有进位 ∴AF=1; 两个正数相加,和为负数,和超范围 ∴OF=1; 次高位向最高位有进位 ,最高位向前没有进位→OF=10=1

  20. 思考题: • X、Y分别为下列各组数,当它们分别进行加、减运算后,其标志位:S、O、C、P、Z的状态如何? • 1)X=21H;Y=43H • 2)X=48H;Y=8DH • 3)X=9AH;Y=0BCH • 4)X=54H;Y=54H

  21. 控 制 标 志 控制标志位的值不由数据运算的结果决定,而由指令直接 赋值;可以决定后续指令的执行情况。 DF(Direction Flag):方向控制标志位 • 专用于串操作指令中控制数据串的处理方向。 • DF=1:串处理方向从高地址到低地址或是“从右到左”来处理串。 指令:STD • DF=0:串处理方向从低地址到高地址或是“从左到右”来处理串。 指令:CLD

  22. 控 制 标 志 • IF(Interupt Flag):中断标志位 • IF=1:允许外部可屏蔽中断INTR,即CPU可以响应INTR的请求。 • IF=0:关闭INTR,即CPU禁止响应INTR的请求。 • 用于控制CPU对外部可屏蔽中断的请求。 • TF(Trap Flag):跟踪标志位 • 用于程序调试时进行单步方式工作。 • TF=1:单步工作方式,每执行完一条指令自动产生一次内部中断,程序暂停供检查,用于调试程序。 • TF=0:CPU正常顺序执行不产生内部中断。 • TF无法直接由指令赋值!

  23. 4. 段寄存器 8086/8088按信息存储的不同性质分为四类,分别由四个段寄存器存放该段的首地址,或称为段地址。 * CS(代码段寄存器)指向当前的代码段,指令由此段 取出; *SS(堆栈段寄存器)指向当前的堆栈段,栈操作的对象 是该段存储单元的内容; *DS(数据段寄存器)指向当前的数据段,该段中存放程 序的操作数; *ES(附加段寄存器)指向当前的附加段,主要用于字符 串数据的存放,也可以用于一般数据 的存放。

  24. 2-2 8088/8086的存储器组织 一、存储器地址的分段 1.存储器地址的分段 矛盾:存储器地址空间1MB,20bit地址线;内部各寄存器和数据总线均为16bit。 解决方法:将整个存储器分为若干个逻辑段,每段内地址16bit,即最多地址空间64KB。 允许各逻辑段在整个存储空间浮动,段与段之间可以是连续的,也可以是分开的或重叠的。

  25. 00000H 逻辑段1起点 逻辑段1<=64KB 逻辑段2起点 逻辑段2<=64KB 逻辑段3起点 逻辑段3<=64KB 逻辑段4起点 逻辑段4<=64KB FFFFFH 每个段的首地址称为“段基值”, “段基值”必须能被16整除(XXXX0H)。 程序执行前,分别对相应的段寄存器CS,DS,SS,ES置“段基值”,若程序长度大于64KB,则可通过对CS送新的“段基值”将程序转移到新段中。

  26. 段地址0000 段内有效地址 + 0000 物理地址(20bit) 16bit 16bit 20bit 2. 20位物理地址的形成 逻辑地址:允许在程序中编排的地址; 物理地址:信息在存储器中实际存放的地址; 对给定的任一存储单元,有两部分逻辑地址: 段基址(段地址)——由CS,DS,SS,ES决定 段内偏移量(段内有效地址)——(该单元相对于段基址的距离)

  27. 操作类型 隐含段地址 替换段地址 偏移地址 取指令 CS 无 IP 堆栈操作 SS 无 SP BP间址 SS CS、DS、ES EA 存/取操作数 DS CS、SS、ES EA 源字符串 DS CS、SS、ES SI 目的字符串 ES 无 DI 3. 逻辑地址的来源; EA---有效地址,

  28. 归纳段寄存器和其他寄存器组合指向存储单元示意图如下:归纳段寄存器和其他寄存器组合指向存储单元示意图如下: 段寄存器和其他寄存器组合指向存储单元示意图

  29. 二、8086存储器的分体结构 1. 问题的提出: 8位机(MCS-51、8088)的存储器地址空间和数据存储格式以字节(8bit)为单位组织存储器地址空间,访问一次存储器,获得一个字节的数据。 而8086CPU的数据总线为16位,CPU除了可以对一个字节寻址外,还必须能进行一个字的读写。即:如何组织数据存储格式使CPU访问一次存储器,获得一个字的数据。

  30. D15 D8 D7 D0 00001 00000 00003 00002 00005 00004 512K*8bit A0=1 512K*8bit A0 =0 FFFFF FFFFE (3)用地址线A0和BHE信号选择存储体 硬件条件: (1)将1M的存储空间分成两个存储体:偶地址和奇地址存储体 (2)将数据总线的低8位与偶地址存储体数据线相连,数据总线的高8位与奇地址存储体数据线相连。

  31. A1—A19 地址 锁存 器 8086 A0—A19 偶 存储 体 奇 存储 体 A0 D8—D15 D0—D7 BHE A0 操作 总线使用情况 0 0 从偶地址开始读/写一个字 AD15--AD0 0 1 从奇地址开始读/写一个字节 AD15--AD8 1 0 从偶地址开始读/写一个字节 AD7--AD0 1 1 无效 BHE BHE

  32. 1422DH 1422EH L(低8bit) 字节地址 字节地址 H(高8bit) 1422FH 字(16bit)数据地址1422EH 低位在低地址,高位在高地址 14230H 数据存放格式条件: 存储器二个连续字节组成一个字,一个字中的每一个字节都有各自的字节地址。存入时以低位字节在低地址,高位字节在高地址的次序存放,字单元的地址以低位地址表示。若要求8086在一个总线周期访问一个整字(16位)时,则该字的地址为偶地址(“对准好”的字)。如果则该字的地址为奇地址(“未对准好”的字),则8086要用两个连续的总线周期访问一个整字,每个周期访问一个字节。

  33. 三、堆栈的概念 堆栈是利用RAM区中某一指定区域(由用户规定),用来暂存数据或地址的存储区。堆栈段是由段定义语句在内存中定义的一个段,段基址由SS指定。 堆栈存取数据的原则是“先进后出”,存取数据的方法是压入(PUSH)和弹出(POP)。 堆栈区的栈底是固定的最高地址,其栈顶根据堆栈数据的压入或取出的变化不断改变。栈顶是堆栈区的最低地址,用堆栈指针SP指示。 每执行一条PUSH指令, SP=(SP)-2,向堆栈压入16bit数据。以字为单元操作。 每执行一条POP指令,从堆栈弹出16bit数据, SP=(SP)+2。

  34. (AX)=9536H (BX)=0475H 36H 95H (AX)=0475H (BX)=9536H 00FAH 00FBH 00FCH 00FDH 00FEH 00FFH 0100H 4、(00FCH)→ AL (00FDH)→AH (SP)+2→SP (SP)=00FEH 2、 (SP)-2→SP (AH)→00FFH (AL)→00FEH (SP)=00FEH 3、 (SP)-2→SP (BH)→00FDH (BL)→00FCH (SP)=00FCH 75H 04H 75H 36H 04H 95H 5、 (00FEH) →BL (00FFH) →BH (SP)+2→SP (SP)=0100H 1、设栈底 (SP)=0100H 例:执行压栈和出栈的过程 1、MOV SP,0100H 2、PUSH AX 3、PUSH BX 4、POP AX 5、POP BX

  35. 人。(躯干 -> 手脚->引脚) • 功能(眼睛 ->看 嘴->说 手->拿 脚->走) 各个引脚都有其作用,功能复用(残疾手) 理解各个引脚的专门作用. • 拿东西我(给我一个笔(眼看,嘴说,腿走->手拿)) • 你 (给你一个笔 (眼看,手拿,嘴说)) • 特殊情况我要 手拿……………….不给 你给 给你………………..不拿 等待状态.这个就是时序.

  36. 2-3 8086的引脚功能 • 8086CPU是16位处理器,采用40引脚的DIP封装。40条引脚信号按功能可分为4部分:地址总线,数据总线,控制总线以及其他(时钟、电源)。

  37. 8086/8088的引脚图 8086/8088 4039383736353433323130292827262524232221 VCC(5V) GND 0102030405060708091011121314151617181920 AD15/A15 AD14/A14 A16/S3 AD13/A13 A17/S4 AD12/A12 A18/S5 AD11/A11 AD10/A10 A19/S6 /BHE/S7HIGH(SSO) AD9/A9 MN/MX* AD8/A8 /RD AD7 HOLD(/RQ/GT0*) AD6 AD5 HLDA(/RQ/GT1*) /WR(/LOCK) AD4 M//IO(/S2) AD3 DT//R(/S1) AD2 /DEN(/S0) AD1 ALE(QS0) AD0 /INTA(QS1) NMI /TEST INTR READY CLK RESET GND

  38. 引脚说明 • 一.数据/地址总线: • AD0~AD15:地址数据复用引脚,用作数据线时,可以双向工作。在时钟周期T1输出地址,T2输出数据A19/S6~ A16/S3 :地址状态复用引脚,用作数据线时,可以双向工作。在时钟周期T1输出A19~A16高四位地址。在时钟周期T2开始,输出S6~S3状态信息。

  39. RD:读信号引脚(输出) 此信号指出将要执行一个对内存或I/O端口的读操作,与M/IO信号 结合,RD信号在T2、T3和TW状态均为低电平,有效。 • M/IO:存储器 /输入输出控制信号(输出) • BHE/S7:高8位数据总线允许/状态复用引脚(输出) 在T1状态,8086输出BHE信号,表示AD15-AD8数据有效。 当低电平有效时,表示CPU当前正在进行存储器或I/O写操作, 它与M/IO配合,分别实现对存储器与I/O的写入。 • WR :写信号(输出) 二.控制总线 1.与读写数据有关 S7没有意义,S7=0. 高电平时,CPU和存储器之间进行数据传输。 低电平时,CPU和输入输出设备之间进行数据传输。

  40. DT/R :数据收发方向控制信号(输出) DT/R为低电平时,数据接收,即CPURAM或I/O. DT/R为高电平时,数据发送,即CPURAM或I/O. • :数据允许信号(输出、低电平有效) 1.与读写数据有关 • ALE:地址锁存允许(输出) 高电平有效,在T1状态,ALE有效,将地址/数据复用总线上输 出的地址 为数据总线收发器74LS245提供控制信号,当该信号为低电平时, 允许CPU发送或接收一个数据。 它和DEN结合对数据收发器控制。 • READY:准备好信号(输入)

  41. :中断应答信号(输出) 2.与中断有关 • NMI :非屏蔽中断(输入) NMI信号时一个由低到高的上升沿。这类中断不受中断标志IF的影响, 也不能用软件屏蔽,每当NMI端进入一个正沿触发信号时,CPU就会 在结束当前指令后,进入对应于中断类型号为2的非屏蔽中断处理程序。 • INTR :可屏蔽中断请求(输入) 对外设的中断请求INTR作出响应回答,当低电平有效时,表示 CPU允许外设的中断请求。

  42. 3.与总线控制有关 • HOLD :总线请求信号(输入) 其它部件(如DMA控制器)要占用系统总线时,通过此引脚 向CPU发出总线请求,该输入端高电平有效。 • HLDA:总线响应信号(输出) 高电平有效,当CPU收到总线请求HOLD后,如CPU允许让 出总线,在当前总线周期完成时,于T4状态发出HLDA信号, CPU让出总线控制权。 当CPU检测到HOLD信号变成低电平后,则它使HLDA变成 低电平,同时又控制总线。

  43. TEST :测试信号(输入) • MN/MX :最小/最大模式控制信号(输入) 三.其它引脚 • CLK:时钟信号引脚(输入) 时钟信号为CPU和总线控制逻辑电路提供定时手段。 • RESET :复位信号(输入) 高电平有效:8086/8088要求高电平至少维持4个时钟周期。 低电平有效,当CPU检测到该信号为低时,等待状态结束,CPU继续往下执行被暂停的指令。 • GND地和VCC电源引脚 :

  44. “引脚”小结 CPU引脚是系统总线的基本信号 可以分成三类信号: • 8位数据线:D0~D15 • 20位地址线:A0~A19 • 控制线: • #BHE/S7、 NMI 、 INTR、#INTA 、 #WR、 • #RD、 ALE、 M /# IO 、READY、HOLD、HLDA、 #DEN、DT/#R、 • RESET、CLK、Vcc、GND、 有问题!

  45. “引脚”提问 • 提问之一: CPU引脚是如何与外部连接的呢? • 解答:总线形成 • 提问之二: CPU引脚是如何相互配合, 实现总线操作、控制系统工作的呢? • 解答:总线时序

  46. 一、 最小模式系统(MN/ MX引脚接+5V电源) 2-4 8086的系统配置 特点:系统中存储器芯片,I/O芯片不多; 地址总线由AD0~AD15,A16/ S3 ~A19/ S6通过8282锁存器构成; 数据总线直接由AD0~AD15构成(也可加总线驱动8286); 控制总线由CPU的控制线提供,构成一小型、单处理机系统。

  47. Vcc A -A 16 19 Vcc MN/MX RD WR CLK 8284 IO/M READY INTA 时钟 发生器 RESET INTR 地址总线 ALE STB 8086 CPU 8282 OE AD -AD 0 15 存储器 I/O接口 在最小模式系统中,还需加入: 1片8284A 3片8282/8283 2片8286/ 8287 BHE BHE 数据总线 DT/R T 8286 DEN OE 8088最小组态系统配置图

  48. * 8088的指令队列长度为4个字节,队列中出现1个空闲字节时,BIU自动访问存储器取指补充指令队列; *8088的地址/数据复用线为8条,即AD7~AD0,访问1个字需两个读写周期; * 8088 中的存储器/IO控制线为 IO /M ,与8086相反; * 8086的引脚BHE/S7在8088中为SS0 ,与DT/ R、IO/M一起决定最小模式中的总线周期操作。 三、 8088的引脚与8086的不同之处

  49. 2-5 8086CPU时序 一. 指令周期、总线周期、时钟周期 指令周期(Instruction Cycle): 执行一条指令所需要的时间。 (一个指令周期由一个或若干个总线周期组成) 总线周期(Bus Cycle ): CPU完成对存储器或I/O端口一次访问所需的时间; 时钟周期(Clock Cycle):时钟频率的倒数,是CPU的时间基准(T状态);(若8086的主频为5MHZ,一个时钟周期为200ns)

More Related