1 / 129

第 2 章 8086微处理器

本章内容 2.18086 微处理器 Intel X86 系列微处理器 8086微处理器的编程结构 8086的引脚信号与工作模式 8086的操作和时序 8086的中断系统 8086的存储器组织和 IO 组织. 第 2 章 8086微处理器. 取指令, IP 值加 1. Y. 停机?. N. 译码并执行. 结束. 微处理器 性能指标 主要有 2 项: 1. 字长: 指 CPU 能同时处理的数据位数 如: 8086 为 16 位字长, 80386 为 32 位字长 2. 主频: 即 CPU 时钟频率,主频越高,速度越快

kemp
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.18086微处理器 • Intel X86系列微处理器 • 8086微处理器的编程结构 • 8086的引脚信号与工作模式 • 8086的操作和时序 • 8086的中断系统 • 8086的存储器组织和IO组织 第2章 8086微处理器

  2. 取指令,IP值加1 Y 停机? N 译码并执行 结束 • 微处理器性能指标主要有2项: 1. 字长:指CPU能同时处理的数据位数 • 如:8086为16位字长,80386为32位字长 2. 主频:即CPU时钟频率,主频越高,速度越快 • 如:8086为5MHz,80386为16MHz,Pentium IV可达3GHz • 指令执行过程 • 取指令  指令译码  指令执行 • 微型计算机的工作过程, • 也就是不断地取指令、译码 • 和执行的过程,直到遇到停机 • 指令时才结束机器的运行。 • 流水线的概念

  3. Intel X86系列微处理器 • 8080 • 8085 • 8086 • 80186(嵌入式版本) • 80286 • 80386,80486,pentium, pentiumII, pentiumIII, pentiumIV • P2,P3,P4…

  4. 2.1.1 8086微处理器的编程结构 • 简介 • 地址线:20 • 数据线:16 • 时钟:5,10,8MHz • 关于8088

  5. 8086编程结构图 两个组成部分 总线接口单元 执行单元

  6. 总线接口部件(BIU)组成 • 4个16位段寄存器CS,DS,SS,ES; • 16位指令偏移地址寄存器IP; • 6个字节指令队列ISQ; • 形成20位物理地址的加法器∑; • 与EU通讯的内部寄存器; • 总线控制逻辑;

  7. 总线接口部件(BIU)功能 • 指令队列中出现两个字节为空时自动按CS值和IP值组成20位实际地址到存储器中去取指令,一次取两个字节指令存放到指令队列中; • 由EU从指令队列中取走指令,并根据EU请求BIU将20位操作地址传送给存储器; • 取来操作数经总线控制逻辑传送到内部EU数据总线,由EU完成内部操作; • 操作结果若EU提出请求,则由BIU负责产生20位实际目标地址,将结果写入存储器里;

  8. 由逻辑地址获得物理地址的计算公式: • 物理地址=段基值X16+偏移量

  9. 举例 段寄存器 XXXX 偏移量 YYYY 例如:CS=FE00H, IP=0200H 指令的物理地址:FE200H

  10. 执行单元EU组成 • ALU(算术逻辑单元); • 通用寄存器组 AX,BX,CX,DX; • BP(基址指针寄存器) • SP(堆栈指针寄存器) • SI(源变址寄存器) • DI(目的变址寄存器) • 标志寄存器FR • 执行部件控制电路 • 功能:负责执行指令

  11. EU功能 • 取指令-从BIU指令队列中读取指令; • 分析指令-由EU控制电路对指令进行译码分析,指出操作性质及对象; • 执行指令 • 在EU中计算出操作数的16位地址偏移量送给BIU,由BIU的∑形成20位绝对地址; • 将取来的操作数经系统数据总线送ALU进行指定操作; • 运算结果经内部总线送到指定位置;

  12. 8086的寄存器 • 在8086/8088CPU中,把寄存器分成5大类: • 数据寄存器; • 地址指针寄存器; • 段基址寄存器; • 状态标志寄存器; • 指令指针寄存器;

  13. (一)数据寄存器 • 用来存放操作数及中间结果的通用寄存器称为数据寄存器。 • 16位寄存器:AX,BX,CX,DX • 8位寄存器:AH,AL,BH,BL,CH,CL,DH,DL • 寄存器有特殊功能:AX和AL为累加器,BX和BP可以作为基址指针,CX做计数器,DX存放输入输出端口地址

  14. (二)地址指针寄存器(SP BP SI DI) • 地址指针寄存器用于存放操作数的地址,编程时通过修改寄存器的内容达到修改地址的目的。 • 可以用来指示地址的寄存器有: • SP:堆栈指针,指示堆栈段(关于段SS)中的栈顶位置,专门用于数据进栈和出栈的位置指示; • BP:基址指针,指示堆栈段中一个数据区中的基址位置; • 此外:BX,SI,DI也可以用做指示地址。 • SI:源指针 • DI:目的指针

  15. 堆栈的概念-后进先出 • 后进先出(先进后出) • 队列(先进先出) • PUSH • SP-2 • BYTE(L)在低地址 • BYTE(H)在高地址 • POP • 弹出一个字 • SP+2 SP

  16. (三)段地址寄存器(CS DS SS ES) 段基址寄存器用于存放4个当前段的起始地址。4个段为:代码段CS,数据段DS,堆栈段SS和附加段ES。 1、存储器的段 8086/8088CPU对可寻址的1MB空间划分为很多个逻辑段,每个逻辑小于64KB,段内地址是连续的。 CPU规定4个段寄存器存放当前可寻址的段基址。 • CS指示当前的代码段; • DS指示当前的数据段; • SS指示当前的堆栈段; • ES指示当前的附加段; 2、逻辑地址与实际地址 (1)对存储器的任一位置的访问都是在该位置所在的段基址下进行的。 逻辑地址形式为: 段基址:段内位移 (物理地址)20 =(段基址)╳16+(段内偏移) 如访问一个地址C85F:109A对应的实际地址为C85F0+109A=C968AH (2)同一个实际地址可以采取不同的逻辑地址形式表示,即不同段可以相互重叠。 例如:地址12345H可以表示为1200:0345或1230:0045

  17. 进位标志 方向标志 控制标志 奇偶标志 中断标志 半进位标志 跟踪标志 零标志 Trace Flag 符号标志 溢出标志 标志寄存器 • 标志寄存器的格式及各位的含义 状态标志

  18. 状态标志 • 1.零标志ZF(Zero Flag):若运算结果为0,则ZF=1;否则ZF=0。 • 例1:MOV AL,4 • SUB AL,4 • 例2:XOR AX,AX • 执行后,ZF也一定为1。

  19. 2.进位标志CF(Carry Flag): 它反映: • 加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。 • 减法时,最高位(字节操作时的D7位,字操作时的D15位)是否有借位产生。 例1: 例2: MOV AL,3; MOV AL,92H SUB AL,4; ADD AL,0A0H 执行后,CF=1。

  20. 3.奇偶标志PF(Parity Flag):若运算结果低8位中“1”的个数为偶数,则PF=1;否则PF=0。 例:MOV AL,2 ADD AL,1 执行后,PF位为1。

  21. 4.辅助进位标志AF(Auxiliary carrry Flag): • 也称“半进位标志”,它反映: • 加法时,第3位向第4位有进位; • 减法时,第3位向第4位有借位。 • FEDC BA98 7654 3210 • FEDC BA98 7654 3210

  22. 5.溢出标志OF(Overflow Flag):若运算过程中发生了“溢出”,则OF=1。 • 定义:运算结果超出计算装置所能表示的范围,称为溢出。 • 判断: • 次高位向最高位产生了进位,而最高位没有向前产生进位。(正溢) • 次高位没有产生进位,而最高位产生进位。(负溢)

  23. 溢出=Saf *. Sbf *. Sf + Saf . Sbf . Sf* • X=1110 y=1011 • 补码:1010 1101 • 1010 • 1101 • 10111 溢q • 出(负溢) X=0111 y=0101 0111 0101 1100 溢出(正溢)

  24. 关于状态标志(1) • 0010 0011 0100 0101 • 0011 0010 0001 1001 (+ • 0101 0101 0101 1110 • mov ax,2345h • add ax,3219h • SF=0, ZF=0, PF=0, CF=0, AF=0, OF=0 • NV UP EI PL NZ NA PO NC

  25. 关于状态标志(2) • 0101 0100 0011 1001 • 0100 0101 0110 1010 (+ • 1001 1001 1010 0011 • mov ax,5439h • add ax,456ah • SF=1, ZF=0, PF=1, CF=0, AF=1, OF=1 • OV UP EI NG NZ AC PE NC

  26. 控制标志 • (1)DF:方向标志位 • DF=1串操作指令以递减顺序处理数据串;DF=0以递增顺序处理数据串。 • (2)IF:中断允许位 • 若IF=1,CPU允许接受外部可屏蔽中断请求,即开中断;IF=0关中断 • (3)TF:跟踪标志位 • TF=1处理器处于单步工作方式,每执行完一条指令产生一个软件中断;TF=0正常工作。

  27. 关于方向标志 H E L L O • 用途:串操作指令使用 X X X X X MOV SI, 0400H MOV DI, 0E2DH MOV CX, 0005H CLD REP MOVSB

  28. 关于中断标志 • IF=1:CPU可以响应中断 • IF=0:CPU不响应中断 STI 使IF置“1”,即开放中断。 CLI 使IF清“0”,即关闭中断 • 注:只对可屏蔽中断有效

  29. 8086编程结构小结 • (1)传统的CPU执行指令的过程是:取指令->分析指令-〉执行指令->再取指令->……,串行执行。 • 8086是把“取指令”和“执行指令”分别由BIU和EU两个部件来完成。当EU正在执行指令时,BIU可以从内存中取出指令字节,放在指令队列中。这样,使得“取指令”和“执行指令”的操作在时间上是并行的。 • BIU和EU协调配合,使EU可以连续不停一条接一条地执行事先已进入指令队列中地指令。显然,这种工作方式可以加快程序地执行,提高了CPU地效率。体现了“流水线计算机”(PipeLine Computer)的初步特点。 • (2)地址加法器用来产生20位的物理地址。 • 一个存储单元具有两种地址属性:物理地址和逻辑地址。 • 物理地址:CPU访问存储器时,在地址总线上实际送出的地址。它的范围(如8086系统)是00000H~FFFFFH,即有220=1M字节的地址空间。

  30. 2.1.28086引脚与工作模式 • 最小模式 • 当8086的引脚MN/MX*接成高电平时CPU处于最小模式工作方式,此时系统中仅有一个处理器。总线控制逻辑减到最少,故称最小模式。 最大模式 • 当8086的引脚MN/MX*接成低电平时CPU处于最大模式工作方式,此时系统可有多个处理器。 • 最大模式,也称“多处理器系统”,即系统中包含两个或多个处理器,其中一个为主处理器(8086),其他的处理器为“协处理器”(CO-Processor) • 通常,和8086配合使用的协处理器有两个:一个是数值运算协处理器8087,一个是输入/输出协处理器8089。

  31. 引脚功能 1)公共引脚 2)最小模式引脚 3)最大模式引脚 功能复用

  32. 1)公共引脚 (1)VCC, GND (2)AD0~AD15:地址数据复用总线 • 双向,三态,高电平有效。分时传送16位数据和地址的低16位。由ALE锁存地址信息。 • 8086/8088不同

  33. (3)A16/S3~A19/S6:地址/状态复用引脚 • 输出,三态,高电平有效。分时输出地址的高4位或CPU当前状态。地址信息由ALE锁存。 • T1状态:输出地址高4位 • T2~T4输出状态 • S6=0:8086连到总线上 • S5=1 当前允许中断 • S4 S3(当前使用的段) • 00 ES • 01 SS • 10 CS • 11 DS

  34. 公共信号 • (4)BHE*/S7:高8位数据总线允许/状态复用引脚 • 输出,三态,低电平有效。BHE*为低电平表示高8位数据线D15~D8上数据有效。BHE*由ALE锁存。BHE*和A0可用于分别选中奇偶地址。 • BHE* A0 • 0 0 AD15-1D0 • 1 0 AD7-AD0 • 0 1 AD15-AD8 • 0 1, AD15-AD8 • 1 0 AD7-AD0 访问偶地址的字 访问偶地址的字节 访问奇地址的字节 访问奇地址的字

  35. 8086的字地址/字节地址 D8-D15 D0-D7 • 寻址字节时0,1,2,3,4… • 寻址字时0,2,4,6… 偶数字节地址是字地址 BHE* A0 0 0 AD15-AD0 1 0 AD7- AD0 0 1 AD15-AD8 0 1, AD15-AD8 1 0 AD7-AD0 奇数地址 偶数地址

  36. D7-D0 D15-D8 D15-D8奇 体SEL A18-A0 D7-D0偶 体SEL A18-A0 BHE A0 A19 -A1 8086系统中的存储器采用奇、偶分体结构: • 将1M字节的存储空间分成两个512K的存储体,一个叫奇体,一个叫偶体。 BHE* A0 • 0 0 AD15-AD0 • 1 0 AD7-AD0 • 0 1 AD15-AD8 • 0 1, AD15-AD8 • 1 0 AD7-AD0 下面的情况BHE*=? MOV AL,(1H) ; (1H) to AL MOV AL,(2H); (2H) to AL MOV AX,(0H); (0H) to AL, (1H) to AH;需要一个总线周期 MOV AX,(1H); (1H) to AL, (2H) to AH;需要两个总线周期

  37. 8088的存储器(与8086不同) 存储体 (1Mbyte) D0-D7 A0-A19

  38. 公共信号 (5)NMI (Non-Maskable Interrupt request):非屏蔽中断请求信号,输入,正跳变有效。“不受IF的影响”。 (6)INTR可屏蔽(Maskable)中断请求信号,输入,高电平有效。 (7)RD*读信号,输出,三态,低电平有效。 (8)CLK时钟信号(单相,占空比为1/3) • 8086 5MHZ • 8086-1 10MHZ • 8086-2 8MHZ (9)RESET复位信号 • 输入,高电平有效。使CPU停止现行操作,并进行初始化: • 标志寄存器,IP,DS,SS,ES及指令队列清零; • CS设置为FFFFH。复位结束时CPU从FFFF0H开始执行程序;

  39. (10)公共信号-READY 8086 Memory 或I/O BUS READY Ready

  40. T1 T2 T3 Tw T4 CLK READY • READY • 输入,高电平有效。高电平表示存储器或I/O口已准备好接收数据,外部使READY为低电平CPU要插入等待周期。

  41. (11)公共信号-test 8086 TEST +5V BUSY 8087 *8087—Math. CO-Processor • TEST:测试信号,输入,低电平有效。 • 在多处理器环境中,例如具有协处理器8087的系统中,将8087的“BUSY”接至主处理器8086的TEST,每当8086执行WAIT指令时,反复采样TEST信号,直至TEST变为低电平,8086才脱离等待状态,继续执行下一条指令。 • TEST信号是为WAIT指令而设计的。 … … WAIT … …

  42. (12)公共信号-MN/MX* • MN/MX* • =1最小模式 • 系统中只有一个处理器;MN/MX* 为高电平 • =0最大模式 • 系统中包括两个或多个处理器; MN/MX* 为低电平 • PC机工作于哪种模式?

  43. 2) 最小模式引脚信号 (1)INTA*中断响应信号 • 输出,低电平有效。表示外设的中断申请得到响应。

  44. 关于中断信号功能 外部设备 8086 INTR INTA* 可屏蔽中断INTR, INTA*

  45. (2)ALE • ALE(Address latch Enable):地址锁存允许信号,输出,高电平有效。 由于8086/8088的一部分地址线和数据线采用分时复用。在一个总线周期内总线上先传送地址,接着传送数据。但在一般情况下,存储器或I/O接口电路,要求在整个总线周期内保持稳定的地址信息。这样,就需要将这些地址信息保存起来。

  46. 关于ALE的使用 DB CPU 锁存器 8282/ 74xx373 AB 利用ALE信号分离出地址总线和数据总线 ALE

  47. (3)DEN*(Data Enable):数据允许,输出,三态,低电平有效。作为总线收发器(8286/8287—数据总线驱动器)的控制信号。 • (4)DT/R*(Data Transmit/Receive):数据发送/接收控制,输出,三态。 • Intel 8286 /8287 8位双向总线驱动器。

  48. CPU MEMORY 数据总线 驱动器 8286 DB DB DEN* DT/R* DEN* 、DT/R*信号的使用

More Related