1 / 107

第2章 8086系统结构

第2章 8086系统结构. 2.1 8086 CPU 结构 2.2 8086 CPU 的引脚及其功能 2.3 8086存储器组织 2.4 8086系统配置 2.5 8086 CPU 时序. 2.1 8086 CPU 结构 2.1.1 微处理器( CPU) 的典型结构. 微处理器( Microprocessor) 也称中央处理器 CPU(Central Processor Unit), 主要由三部分组成: 运算器( ALU): 对数据进行算术运算、逻辑运算,运算结果  标志寄存器。

Download Presentation

第2章 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. 第2章 8086系统结构 2.1 8086CPU结构 2.2 8086CPU的引脚及其功能 2.3 8086存储器组织 2.4 8086系统配置 2.5 8086CPU时序

  2. 2.1 8086 CPU 结构2.1.1 微处理器(CPU)的典型结构 微处理器(Microprocessor)也称中央处理器CPU(Central Processor Unit),主要由三部分组成: 运算器(ALU):对数据进行算术运算、逻辑运算,运算结果  标志寄存器。 控制器:指令寄存器、指令译码器、定时及各种控制信号产生电路,用户程序中的指令一条条译出来,然后以一定时序发出相应的控制信号。 寄存器阵列:用来寄存参与运算的数据,或用来存放操作数地址。有通用和专用寄存器,如专用寄存器:程序计数器PC, 堆栈指针SP。

  3. 微处理器(cpu)的典型结构

  4. * 在微处理器(CPU)内部,三部分之间的信息交换是采用总线结构来实现的,总线是各组件之间信息传输的公共通路,这里的总线称为内部总线,用户无法控制内部总线的工作。 *微处理器(CPU)是计算机的核心部件,用来实现指令的自动装入和自动执行,实现计算机本身的自动化。

  5. 微机的工作过程 * 指令是CPU能执行的一个基本操作,CPU的设计者对CPU的所有指令进行编码,用户用编码形式的指令进行编程,程序存放在内存中,CPU从内存取来编码形式的指令,对指令进行译码,发出执行该指令功能所需的信号。 工作过程 取指令 → 执行指令 → 取指令 → 执行指令 、、、 * 当一条指令取走后,指令指针寄存器(IP)会被自动修改成下一条要执行指令的地址,如此不断的重复。

  6. 取指令阶段( CPU读内存操作): • 由IP给出指令在内存的地址 • 地址经地址寄存器 → 地址总线 → 地址译码器, 选中指令所在的内存单元 • CPU发出内存读控制信号 • 指令从内存 → 数据总线 → 数据暂存器 → 指令寄存器 • 指令译码器对指令进行译码 程序 数据 IP 寄存器组 地 址 寄存 器 地 址 译 码 器 、、、 指令1 指令2 指令3 指令4 、、、 、、、 数据1 数据2 数据3 、、、 指 令 指 针 寄存器 R1 地址总线 AB R2 R3 R4 数据总线 DB 数据暂存器 运 算 器 指令寄存器 指令译码器 控制总线 CB 标 志 寄存器 控制电路

  7. 执行指令阶段: • 经译码后的指令,由控制电路发出控制信号去执行。 CPU 总线 内存 程序 数据 IP 寄存器组 地 址 寄存 器 地 址 译 码 器 、、、 指令1 指令2 指令3 指令4 、、、 、、、 数据1 数据2 数据3 、、、 指 令 指 针 寄存器 R1 地址总线 AB R2 R3 R4 数据总线 DB 数据暂存器 运 算 器 指令寄存器 指令译码器 控制总线 CB 标 志 寄存器 控制电路

  8. 2.1.2 Intel 8086/8088微处理器功能结构一、8086/8088CPU的内部结构 8086CPU按功能可分为两部分: 总线接口单元BIU(bus interface unit) 执行单元EU(execution unit)。 内部结构如下图所示:

  9. 1、总线接口单元 BIU(Bus Interface Unit) 功能:负责与 M、I/O 端口传送数据,完成内外信息 交换。具体讲,即: ①取指令 ②传送数据 ③形成物理地址 *总线接口部件要从内存 取指令送到指令队列; *CPU执行指令时,要配合执行部件从指定的内存单元 或者外设端口中取数据,将数据传送给执行部件; *或把执行部件的操作结果传送给指定的M或I/O口。

  10. 组成: • 4 个段地址寄存器(CS、DS、ES、SS) • 16位指令指针寄存器IP • 20位的地址加法器 (16d段地址+偏移地址=物理地址) • 6字节(8086)或4字节(8088)的指令队列, • 总线控制电路: • 处理器与外界总线联系的转接电路。 • 包括三组总线: • 20 位地址总线 • 16位(8086)或8位(8088)双向数据总线 • 一组控制总线。

  11. 两点说明: 指令队列 8086 的指令队列为6个字节, 8088 的指令队列为4个字节。 不论是8086还是8088都会在执行指令的同时从内存中取下一条或几条指令,取来的指令放在指令队列中,使 BIU 具有预取指令的功能,是一种先进先出(FIFO)的数据结构。 指令执行顺序 顺序指令执行:指令队列存放紧接在执行指令后面的那一条指令。 执行转移指令:BIU 清除指令队列中的内容,从新的地址取入指 令,立即送往执行单元,然后再从新单元开始重 新填满队列。

  12. 功能:负责指令执行,即: ① 指令译码 ② 执行指令 ③ 向BIU传送偏移地址信息 ④ 管理通用寄存器和标志寄存器 2、执行单元EU (Execution Unit)

  13. 组成: • 4个通用寄存器:AX、BX、CX、DX • 4个专用寄存器:BP、SP、SI、DI • 标志寄存器(FLAGS or PSW): • 9个标志位,其中6个条件标志位用于存放结果状态。 • 算术逻辑单元: • 16 位加法器,用于对寄存器和指令操作数进行算术或 逻辑运算。 • EU 控制系统: • 接受从总线接口单元的指令队列中取来的指令代码, • 对其译码和向 EU 内各有关部分发出时序命令信号, 协调执行指令规定的操作。 执行单元EU

  14. 小结: • 8086/8088取指部分与执行部分是分开的。 即BIU和EU并行操作,取指和执行可以重迭,大大减少了等待取指所需的时间,提高了CPU的利用率。 • 在一条指令的执行过程中可以取出下一条(或多条)指令,指令 在指令队列中排队; • 在一条指令执行完成后,就可以立即执行下一条指令,减少CPU为取指令而等待的时间,提高CPU的利用率和整个运行速度。 • 重迭操作技术:一方面提高了整个执行速率,另一方面降低了与之相配的存储器的存取速度的要求。

  15. 二、8086CPU的寄存器结构 8086、8088内部有14个16位寄存器,按功能分为四类: 通用寄存器 指针和变址寄存器 段寄存器 控制寄存器 8086的寄存器结构分类如下(图):

  16. 1、通用寄存器组 通用寄存器包括:4个16位寄存器 AX 、BX 、CX 、DX 。 2、指针和变址寄存器 地址指针寄存器: SP 、 BP 。 变址寄存器包括: SI 、 DI 。 3、段寄存器 段寄存器包括: CS 、 SS 、 DS 、 ES 。 4、控制寄存器 控制寄存器包括:IP 、PSW(FLAGS)。

  17. 1、通用寄存器组 数据寄存器 AX、BX、CX、DX 作为通用寄存器。 用来暂存计算过程中所用到的操作数,结果或其它信息。 访问形式: 可以用16位的访问; 或者可以用字节(8位)形式访问。 它们的高8位记作 : AH 、 BH 、 CH 、 DH 。 它们的低8位记作 : AL 、BL 、CL 、DL 。

  18. AX——(Accumulator)作为累加器。 它是算术运算的主要寄存器, 所有I/O指令都使用这一寄存器与外部设备交换数据。 例:IN AL , 20H OUT 30H , AX BX——(Base)用作基址寄存器使用。 在计算内存储器地址时,经常用来存放基址。 例:MOV AX, [BX+03H]

  19. CX——(Count)可以作计数寄存器使用。 在循环LOOP指令和串处理指令中用作隐含计数器。 例: MOV CX , 200H AGAIN: …… …… LOOP AGAIN ;(CX)-1(CX),结果0转AGAIN DX——(Data)可以作为数据寄存器使用。 一般在双字长乘除法运算时, 把DX和AX组合在一起存放一个双字长(32位)数,DX用来存放高16位; 对某些I/O操作DX可用来存放I/O的端口地址(口地址  256)。 例:MUL BX ; (AX)(BX)(DX)(AX) 例: IN AL , DX

  20. 2、地址指针与变址寄存器 段起始地址 SP、BP、SI、DI 四个16位寄存器。 以字为单位在运算过程中存放操作数, 经常用以在段内寻址时提供偏移地址。 段内偏移地址 段地址 :只取段起始地址高16位值。 偏移地址:指在段内某内存单元物理地址相对段起始地址的偏移值。 … 高16位值 0000B

  21. 地址指针寄存器(SP 、 BP )——通常与SS联用 SP(stack pointer)——堆栈指针寄存器 用来指示栈顶的偏移地址, 必须与SS段寄存器联合使用确定实际地址。 堆栈和指针如下页图所示。 BP(base pointer)——基址指针寄存器 可以与SS寄存器联合使用来确定堆栈段中某一存储器单元地址。

  22. 设: ( SS)=3F00H,(SP)=0060H堆栈和指针如下图: 堆栈是内存开辟的一个特殊数据区,一端固定,一端浮动,严格按照后进先出的工作原则。 堆栈和指针

  23. 变址寄存器(SI 、 DI) ——通常与DS联用 SI——(Source Index) 源变址寄存器。 DI——(Destination Index) 目的变址寄存器。 使用场合:常用于变址寻址。 * 一般与DS联用,用来确定数据段中某一存储单元的地址, 某些指令中SI , DI具有自动增量和自动减量功能. 例: MOV AX, [SI]

  24. 表2-1 各寄存器特殊用法 参看:教材 P26 表2-1

  25. 3、段寄存器 段寄存器: 4个16位 8086/8088按信息存储的不同性质分为四类,分别由四个段寄存器存放该段的首地址,或称为段地址。用来识别当前可寻址的四个段,不可互换的使用。 CS——Code Segment Register 代码段寄存器, 用来识别当前代码段(程序一般放在代码段)。 DS——Data Segment Register数据段寄存器, 用来识别当前数据段寄存器。 SS——Stack Segment Register堆栈段寄存器,用来识别当前堆栈段。 ES——Extra Segment Register附加段寄存器,用来识别当前附加段。

  26. 4、控制寄存器 控制寄存器:IP 、 PSW(FLAGS) ,两个16位寄存器 IP—(Instruction Pointer)指令指针寄存器 用来存储代码段中的偏移地址; 程序运行过程中IP始终指向下一次要取出的指令偏移地址。 IP要与CS寄存器相配合才能形成真正的物理地址。 PSW—(Processor States Word )程序状态字(标志)寄存器 由状态标志、控制标志构成。只用了其中9位, 6位状态标志 , 3位控制标志。如下表示。

  27. 状态标志: • 用来记录程序中运行结果的状态信息作为后续条件转移指令的转移控制条件。 • 状态标志包括6位:CF 、 PF 、 AF 、 ZF 、 SF 、 OF 。 • ① OF(Overflow Flag)溢出标志(一般指补码溢出) • OF=1:在带符号数运算过程中,结果超过了机器表示的范围。 • OF=0:在带符号数运算过程中,结果未超过机器能表示的范围。 • 字节运算范围 -128—+127, • 字运算范围 -32768—+32767 。

  28. SF(Sign Flag)符号标志 ,状态与运算结果最高位相同 • SF=1:记录运算结果的符号为负。 • SF=0:记录运算结果的符号为正。 • ③ ZF(Zero Flag)零标志 • ZF=1:运算结果为0。 • ZF=0:运算结果不为0。 • ④ CF(Carry Flag)进位标志 • CF=1:运算时最高有效位产生有进(借)位。 • CF=0:运算时最高有效位没有产生进(借)位。

  29. ⑤ AF(Auxiliary Carry Flag)辅助进位标志 AF=1:记录运算时第3位(半个字节)产生进位值。 AF=0:记录运算时第3位(半个字节)不产生进位值。 ⑥ PF(Parity Flag)奇偶标志 PF=1: 执行结果低8位中有偶数个1。 PF=0: 执行结果低8位中有奇数个1。 用来为机器中传送信息时提供检验条件。

  30. 控制标志: • 对控制标志位进行设置后,对其后的操作起控制作用。 • 控制标志位包括3位: TF、 IF 、 DF。 • 跟踪(陷阱)标志TF、中断标志IF 、方向标志 DF 。 • ① TF(Trap Flag)跟踪(陷阱)标志位 • TF=1,每执行一条指令后,自动产生一次内部中断,使CPU处于单步执行指令工作方式,便于进行程序调试,用户能检查程序。 • TF=0, CPU正常工作,不产生陷阱。

  31. IF(Interrupt Flag)中断标志位 • IF=1, 允许外部可屏蔽中断。CPU可以响应可屏蔽中断请求。 • IF=0, 关闭中断。CPU禁止响应可屏蔽中断请求。 •  IF的状态对不可屏蔽中断和内部软中断没有影响。 • ③DF(Direction Flag)方向标志位 • DF=1,每次串处理操作后使变址寄存器SI和DI减量,使串处理从 高地址向低地址方向处理。 • DF=0,每次串处理操作后使变址寄存器SI和DI增量, 使串处理从 低地址向高地址方向处理。 •  DF方向标志位是在串处理指令中控制处理信息的方向用的。

  32. 控制信息:由系统程序或用户程序根据需要用指令来设置的。控制信息:由系统程序或用户程序根据需要用指令来设置的。 • 状态信息:由CPU根据计算结果自动设置的。 • 但机器提供了设置状态信息指令,必要时,程序员可以用这些指令来建立状态信息。

  33. 在调试程序时,DEBUG提供了测试标志位的手段,在调试程序时,DEBUG提供了测试标志位的手段, 用符号表示标志位的值,每种标志位的符号如下表: DEBUG不提供TF的符号用于单步方式操作。

  34. 例1:执行两个数的加法,分析对标志位的影响。例1:执行两个数的加法,分析对标志位的影响。 标志: 运算结果最高位为0 ∴SF=0; 运算结果本身≠0 ∴ZF=0 低8位中1的个数为奇数个 ∴PF=0; 最高位没有进位 ∴CF=0 第三位向第四位无进位 ∴AF=0; 次高位向最高位没有进位 ,最高位向前没有进位 , ∴OF=0。

  35. 例2:执行两个数的加法,分析对标志位的影响。例2:执行两个数的加法,分析对标志位的影响。 标志: 运算结果最高位为1, SF=1 ; 运算结果本身不为0, ZF=0 ; 最高位向前无进位, CF=0 次高位向最高位产生进位,而最高位向前没有进位, OF=1 ; 结果低8位含偶数个1, PF=1 ; 第三位向第四位有进位, AF=1 。 * 在绝大多数情况下,一次运算后并不改变所有标志,程序也并不需要对所有的标志作全面的关注。一般只是在某些操作后,对其中某个标志进行检测。

  36. 问题思考: (1) AX , BX ,CX ,DX是数据寄存器 可以作为16位寄存器使用,又可以作为8位寄存器使用。 但每个寄存器在使用时各有特殊之处。 问题: AX,BX,CX,DX能用来存放偏移地址吗?哪些可以?哪些不可以? (2)16位的寄存器 问题: BX,BP,SP,SI,DI,IP存放的偏移地址在构成物理地址时, 与段地址是如何配合使用?

  37. 2.2 8086CPU的引脚及其功能——微处理器级总线 8086微处理器是Intel公司的第三代微处理器,它的字长是16位的,采用40条引脚的DIP(双列直插)封装。时钟频率有三种:5 MHz(8086)、8 MHz(8086-1)和10 MHz (8086-2)。8086的引脚如图2.3所示。 8086的40条引脚信号按功能可分为四部分——地址总线、数据总线、控制总线以及其他(时钟与电源)。8086微处理器的引脚信号定义见表2-2。

  38. 图2.3 8086引脚

  39. 名 称 功 能 引 脚 号 类 型 公 用 信 号 表2-2 8086引脚信号定义 AD15~AD0 地址/数据总线 2~16,39 双向、三态 A19/S6~A16/S3 地址/状态总线 35~38 输出、三态 /S7 总线高允许/状态 34 输出、三态 MN/ 最小/最大方式控制 33 输入 读控制 32 输出、三态 等待测试控制 23 输入 READY 等待状态控制 22 输入 RESET 系统复位 21 输入 NMI 不可屏蔽中断请求 17 输入 INTR 可屏蔽中断请求 18 输入 CLK 系统时钟 19 输入 VCC +5 V电源 40 输入 GND 接地 1,20

  40. 最小方式信号(MN/MX=VCC) HOLD 保持请求 31 输入 HLDA 保持响应 30 输出 写控制 29 输出、三态 M/IO 存储器/IO控制 28 输出、三态 DT/R 数据发送/接收 27 输出、三态 数据允许 26 输出、三态 ALE 地址锁存允许 25 输出 中断响应 24 输出 表2-2 8086引脚信号定义(续1)

  41. 最大方式信号(MN/MX=GND) 请求/允许总线访问控制 30,31 双向 总线优先权锁定控制 29 输出、三态 总线周期状态 26~28 输出、三态 QSl、QS0 指令队列状态 24,25 输出 表2-2 8086引脚信号定义(续2)

  42. 1. 地址总线和数据总线 • 数据总线用来在CPU与内存储器(或I/O设备)之间交换信息,为双向、三态信号。 • 地址总线由CPU发出,用来确定CPU要访问的内存单元(或I/O端口)的地址信号,为输出、三态信号。 • AD15~AD0为地址/数据总线。这16条信号线是分时复用的双重总线,在每个总线周期(T1)开始时,用作地址总线的16位(AD15~AD0)给出内存单元(或I/O端口)的地址;其他时间为数据总线,用于数据传输。

  43. A19~A16/S6~S3为地址/状态总线。这4条信号线也是分时复用的双重总线,在每个总线周期(T1)开始时,用作地址总线的高4位(A19~A16),在存储器操作中为高4位地址,在I/O操作中,这4位置“0”(低电平)。在总线周期的其余时间,这4条信号线指示CPU的状态信息。A19~A16/S6~S3为地址/状态总线。这4条信号线也是分时复用的双重总线,在每个总线周期(T1)开始时,用作地址总线的高4位(A19~A16),在存储器操作中为高4位地址,在I/O操作中,这4位置“0”(低电平)。在总线周期的其余时间,这4条信号线指示CPU的状态信息。 BHE/S7为总线高允许/状态S7信号(输出三态)。这也是分时复用的双重总线,在总线周期开始的T1周期,作为16位总线高字节部分允许信号,低电平有效。当为低电平时,把读/写的8位数据与AD15~AD8连通。该信号与A0(地址信号最低位)结合以决定数据字是高字节工作还是低字节工作。 8086的20条地址线访问存储器时可寻址1 MB的内存单元;访问外部设备时,只用16条地址A15~A0,可寻址64K个I/O端口。

  44. 2. 控制总线 • 控制总线用来传送控制信号,有CPU输出控制命令的,如读、写命令,中断响应等;有外部向CPU输入控制及请求信号的,如复位、中断请求等。 • 介绍部分控制信号 • MN/MX(33#引脚) :最小/最大方式控制。 • 接+5 V,8086处于最小方式,由8086提供系统所需的全部控制信号,构成一个小型的单处理机系统。 • 接地时,8086处于最大方式,系统的总线控制信号由专用的总线控制器8288提供,最大方式用于多处理机和协处理机结构中。

  45. 以下按最小方式信号介绍 • ALE:地址锁存允许信号(输出),CPU在总线周期的第一个时钟周期内发出正脉冲信号,其下降沿用来把地址/数据总线(AD15~AD0)以及地址/状态总线(A19~A16/S6~S3)中的地址信息锁住并存入地址锁存器中。 • M/IO:是存储器与输入/输出端口的控制信号(输出、三态),用于区分CPU是访问存储器(M/IO=1),还是访问I/O端口(M/IO=0)。 • DT/R:为数据发送/接收信号(输出、三态),用于指示CPU是进行写操作(DT/R=1)还是读操作(DT/R=0),即方向控制。 • DEN:为数据允许信号(输出、三态),低电平有效,在CPU访问存储器或I/O端口的总线周期的后一段时间内,该信号有效,用作系统中总线收发器的允许控制信号。

  46. RD:读控制信号(三态、输出)。低电平时,表示8086 CPU执行读操作。在DMA方式时RD处于高阻态。 • WR:写控制信号(三态、输出)WR信号为低电平时,表示8086 CPU执行写操作。 • RESET:复位信号(输入)。高电平时,系统处于复位状态,CPU停止正在运行的操作,把内部的标志寄存器FR、段寄存器、指令指针IP复位到初始化状态(一般为0),清空指令队列。 • 注意:CS的初始化状态为FFFFH。

  47. 3. 其他信号 (1) CLK——时钟信号(输入)。该信号为8086 CPU提供基本的定时脉冲。 (2) VCC——电源(输入)。要求接上正电压(+5V±10%)。 (3) GND——地线。两条接地线。

  48. 4. 8088引脚与8086引脚的不同之处 • 8088微处理器是一种准16位处理器,其内部结构基本上与8086相同,且有着相同的内部寄存器和指令系统,在软件上是完全兼容的。其引脚信号也与8086基本相同,只是有些引脚的功能有所不同。 • 8086 CPU的指令预取队列为6个字节,而8088 CPU只有4个字节。 • 8086 CPU的AD15~AD0为地址/数据双向分时复用的,而8088 CPU只有AD7~AD0,为地址、数据双向分时复用的。8088的速度较8086要慢些。 • 还有一些不同之处参看教材。

More Related