1 / 87

第 2 章 8086/8088 微处理器

第 2 章 8086/8088 微处理器. 教学重点: 1 、 8086/8 微处理器的编程结构,处理器状 态字 PSW 各个标志位 2 、 8086/8 微机系统的存储器组织 。. 第一节 8086/8 的编程结构及存储器组织. 8086 微处理器的一般性能特点: 16 位的内部结构, 16 位双向数据信号线; 20 位地址信号线,可寻址 1M 字节存储单元; 具有较强的指令系统. 2.1 8088/8086 的编程结构. 8088 的 编程结构 从功能分成两个单元

chaela
Download Presentation

第 2 章 8086/8088 微处理器

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/8088微处理器 教学重点: 1、8086/8微处理器的编程结构,处理器状 态字PSW各个标志位 2、8086/8微机系统的存储器组织。 第一节8086/8的编程结构及存储器组织

  2. 8086微处理器的一般性能特点: 16位的内部结构,16位双向数据信号线; 20位地址信号线,可寻址1M字节存储单元; 具有较强的指令系统.

  3. 2.1 8088/8086的编程结构 8088的编程结构从功能分成两个单元 (1)总线接口单元BIU——管理8088与系统总线的接口,负责CPU对存储器和外设进行访问 (2)执行单元EU——负责指令的译码、执行和数据的运算 • 两个单元相互独立,分别完成各自操作 • 两个单元可以并行执行,实现指令取指和执行的流水线操作

  4. 8086/8088的编程结构 地址加法器 20位 ∑ AH AL BH BL CH CL 16/8位 CS 通用 寄存器 DH DL DS SP SS 输入/输出控制电路 BP ES SI IP 外部总线 DI 内部暂存器 16位 执行部分控制电路 1 2 3 4 ALU 8位 指令队列 标志寄存器 总线接口部件 (BIU) 返回 执行部件 (EU)

  5. 8088的指令执行过程 返回

  6. (3) 8086/8088BIU的特点 ①8086/8088的指令队列分别为6/4个字节,在执行指令的同时,可从内存中取出后续的指令代码,放在指令队列中。 ②地址加法器用来产生20位物理地址。8086/8088可用20位地址寻址1M字节的内存空间,而CPU内部的寄存器都是16 位,需要由20位的地址加法器完成地址运算。 如:CS=0FE00H,IP=0400H,则表示要取指令代码的物理地址为0FE400H。

  7. (4) BIU与EU的动作协调原则 ①每当8086的指令队列中有两个空字节,或8088的指令队列中有一个空字节时,BIU就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序。

  8. (4) BIU与EU的动作协调原则 ②每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作 ;如果BIU正处于空闲状态,立即响应EU的总线请求。如BIU正取指令,则BIU完成取指总线周期,再响应EU的访问总线请求。

  9. (4) BIU与EU的动作协调原则 ③当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。 ④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。

  10. (4) BIU与EU的动作协调原则 将8086/8088 CPU分成二个独立的功能部件使二者能够并行工作,把取指令工作和分析指令、执行指令工作重叠进行,从而提高CPU的工作效率,加快指令的执行速度。指令队列可以被看成是一个特殊的RAM,它的工作原理是"先进先出",写入的指令只能存放在队列尾,读出的指令是队列头存放的指令。EU和BIU之间就是通过指令队列联系起来,多数情况下,BIU在不停地向队列写入指令,而EU每执行完一条指令后,就向队列读取下一条指令。二者的动作既独立,又协调。

  11. (4) BIU与EU的动作协调原则

  12. (5) 8086/8088CPU内部寄存器 8086内部寄存器有: • 4个通用寄存器 • 4个专用寄存器 • 4个段寄存器 • 1个指令指针寄存器 • 1个标志寄存器

  13. ①8086的通用寄存器 • 8086的16位通用寄存器是: AX BX CX DX 其中AX称为累加器,BX称为基址寄存器, CX称为计数寄存器,DX称为数据寄存器 • 8086的8位通用寄存器是: AH BH CH DH AL BL CL DL • 对其中某8位的操作,并不影响另外对应8位的数据。

  14. 数据寄存器 • 数据寄存器用来存放计算的结果和操作数,也可以存放地址。 • 每个寄存器又有它们各自的专用目的: • AX--累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等; • BX--基址寄存器,常用做存放存储器地址; • CX--计数器,作为循环和串操作等指令中的隐含计数器; • DX--数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。

  15. ② 8086的专用寄存器 • 指针寄存器SP和BP • SP是堆栈指针寄存器,它和堆栈段寄存器SS一起来确定堆栈在内存中的位置; • BP是基数指针寄存器,用于存放基地址。 • 变址寄存器SI和DI • SI是源变址寄存器 • DI是目的变址寄存器,用于指令的变址寻址方式。

  16. ③ 段寄存器 DS 数据段寄存器 (Data Segment) CS 代码段寄存器 (Code Segment) ES 附加段寄存器 (Extra Segment) SS 堆栈段寄存器 (Stack Segment) 这些段寄存器的内容与有效的地址一起,用于确定内存的物理地址。通常用CS、DS、ES以及SS用于确定代码段、数据段、附加段以及堆栈段的基地址。

  17. ④指令指针IP • 指令指针寄存器IP,指示代码段中指令的偏移地址。 • 它与代码段寄存器CS联用,确定下一条指令的物理地址。 • 计算机通过CS : IP寄存器来控制指令序列的执行流程。 • IP寄存器是一个专用寄存器。

  18. 15 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF ⑤标志寄存器 • 标志(Flag)用于反映指令执行结果或控制指令执行形式。 • 8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)。 程序设计需要利用标志的状态

  19. 标志的分类 • 6个状态标志:用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它的状态。共有6个状态标志位: CF ZF SF PF OF AF • 3个控制标志:可由程序根据需要用指令设置,用于控制处理器执行指令的方式 DF IF TF

  20. 进位标志CF(Carry Flag) • 当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。 49H + 6DH=B6H,   没有进位:CF = 0 BBH + 6AH=(1)25H,有进位:CF = 1

  21. 零标志ZF(Zero Flag) • 若运算结果为0,则ZF = 1; 否则ZF = 0 注意: ZF为1表示的结果是0 49H + 6DH=B6H,结果不是零:ZF = 0 75H + 8BH=(1)00H,结果是零:ZF = 1

  22. 符号标志SF(Sign Flag) • 运算结果最高位为1,则SF = 1;否则SF = 0 有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态 49H + 6DH=B6H,最高位是1:SF = 1 75H + 8BH=(1)00H,最高位是零:SF = 0

  23. 奇偶标志PF(Parity Flag) • 当运算结果最低字节中“1”的个数为零或偶数时,PF = 1;否则PF = 0 PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作 3AH + 7CH=B6H=10110110B 结果中有5个1,是奇数:PF = 0

  24. 溢出标志OF(Overflow Flag) • 若算术运算的结果有溢出, 则OF=1;否则 OF=0 49H + 6DH=B6H,产生溢出:OF = 1 75H + 8BH =(1)26H,没有溢出:OF = 0

  25. 什么是溢出? • 处理器内部以补码表示有符号数 • 8位补码表达的整数范围是:+127~-128 • 16位补码表达的范围是:+32767~-32768 • 如果运算结果超出这个范围,就产生了溢出 • 有溢出,说明有符号数的运算结果不正确 49H+6DH=B6H,就是73+109=182, 已经超出-128~+127范围,产生溢出,故OF=1; 另一方面,补码B6H表达真值是-74,显然运算结果也不正确。

  26. 溢出和进位 • 溢出标志OF和进位标志CF是两个意义不同的标志。 • 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确。 • 溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。

  27. 溢出和进位的对比 例1:49H + 6DH=B6H 无符号数运算: 73+109=182 范围内,无进位 有符号数运算: 73+109=182 范围外,有溢出 例2:BBH + 6AH=(1)25H 无符号数运算: 187+106=293 范围外,有进位 有符号数运算: -69+106=37 范围内,无溢出

  28. 溢出的判断 • 判断运算结果是否溢出有一个简单的规则: • 只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出,因为,此时的运算结果显然不正确。 • 其他情况下,则不会产生溢出

  29. 辅助进位标志AF(Auxiliary Carry Flag) • 运算时D3位(低半字节)有进位或借位时,AF = 1;否则AF = 0。 这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心。 49H + 6DH=B6H,D3有进位:AF = 1

  30. 方向标志DF(Direction Flag) • 用于串操作指令中,控制地址的变化方向: • 设置DF=0,存储器地址自动增加; • 设置DF=1,存储器地址自动减少。 • CLD指令复位方向标志:DF=0 • STD指令置位方向标志:DF=1

  31. 中断允许标志IF(Interrupt-enable Flag) • 用于控制外部可屏蔽中断是否可以被处理器响应: • 设置IF=1,则允许中断; • 设置IF=0,则禁止中断。 • CLI指令复位中断标志:IF=0 • STI指令置位中断标志:IF=1

  32. 陷阱标志TF(Trap Flag) • 用于控制处理器进入单步操作方式: • 设置TF=0,处理器正常工作; • 设置TF=1,处理器单步执行指令。 • 单步执行指令——处理器在每条指令执行结束时,便产生一个编号为1的内部中断 • 这种内部中断称为单步中断 • 所以TF也称为单步标志 • 利用单步中断可对程序进行逐条指令的调试 • 这种逐条指令调试程序的方法就是单步调试

  33. 标志位名 置位符号(=1) 复位符号(=0) 溢出标志OF OV NV 方向标志DF DN UP 中断标志IF EI DI 符号标志SF NG PL 零标志ZF ZR NZ 辅助标志AF AC NA 奇偶标志PF PE PO 进位标志CF CY NC DEBUG中各标志位的符号表示

  34. 2.2 存储器组织 8088/8086有20根地址总线,因此,它可以直接寻址的存储器单元数为:220=1MB 如何实现16位的存储单元存放20位的地址空间? 由于CPU内部的寄存器都是16位的,为了能够提供20位的物理地址,系统中采用了存储器分段的方法。规定存储器的一个段为64KB,由段寄存器来确定存储单元的段地址,由指令提供该单元相对于相应段起始地址的16位偏移量。这样,系统的整个存储空间可分为16个互不重叠的逻辑段。存储器的每个段的容量为64KB,并允许在整个存储空间内浮动,即段与段之间可以部分重叠、完全重叠、连续排列,非常灵活。

  35. 1.存储器的分段及段地址

  36. 2.与存储单元地址相关的几个概念 物理地址: 一个存储单元的实际地址(20位)。物理地址与存储单元是一一对应关系。(20202H) 逻辑地址: 是指段地址和偏移地址,是指令中引用的形式地址。一个逻辑地址只能对应一个物理地址,而一个物理地址可以对应多个逻辑地址。(2000:0202H)

  37. 2.与存储单元地址相关的几个概念 段地址: 是指一个段的起始地址,最低4位为零,一般将其有效数字16位存放在段寄存器中。(2000H) 偏移地址: 段内存储单元相对段地址的距离(16位)。同一个段内,各个存储单元的段地址是相同的,偏移地址是不同的。(0202H)

  38. 3.物理地址的计算方法 物理地址=段地址+偏移地址 =段寄存器内容×10H+偏移地址 取指令物理地址=(CS)×10H+(IP) 堆栈操作物理地址=(SS)×10H+(SP)/(BP的表达式) 存储器操作数物理地址=(DS)/(ES)×10H+偏移地址

  39. 3.物理地址的计算方法示意图

  40. 程序代码、数据量不大时,可把它们放在同一段内(64KB的范围内),以减少指令的长度,提高运行速度。程序代码、数据量不大时,可把它们放在同一段内(64KB的范围内),以减少指令的长度,提高运行速度。 内存分段为程序的浮动装配创造了条件 物理地址与形式地址不一一对应 各个分段之间可以重叠。 4.存储器分段组织的特点

  41. 5.特殊的内存区域 中断矢量区: 00000H—003FFH共1K字节,用于存放256种中断类型的中断矢量,每个中断矢量占4个字节,共256×4=1024=1K

  42. 5.特殊的内存区域 显示缓冲区: B0000H—B0F9FH约4000(25×80×2)字节,是单色显示器的显示缓冲区,存放文本方式下,所显示字符的ASCII码及属性码;B8000H —BBF3FH约16K字节,是彩色显示器的显示缓冲区,存放图形方式下,屏幕显示象素的代码。

  43. 5.特殊的内存区域 启动区: FFFF0H—FFFFFH共16个单元,用于存放一条无条件转移指令的代码,转移到系统的初始化部分。

  44. 6.CS、DS、SS和其他寄存器组合 指向存储单元的示意图

  45. 习题 1、8086/8088 CPU由哪两部分组成?它们的 主要功能各是什么?它们之间是如何协调 工作的? 2、8086/8088 CPU中有哪些寄存器?各有 什么用途?标志寄存器F有哪些标志位? 各在什么情况下置位? 3、8086/8088系统中储存器的逻辑地址和 物理地址之间有什么关系?表示的范围 各为多少?

  46. 习题 4、已知当前数据段位于储存器的 A1000H到B0FFFH范围内,问DS=? 5、某程序数据段中存有两个数据字 1234H和5A6BH,若已知DS=5AA0H,它们的偏移地址分别为245AH和3245H,试画出它们在储存器中的存放情况。

  47. 第二节 8086/8088微处理器外部结构及工作模式 重点:8086/8088CPU的外部结构,即引脚信号及其功能 8086/8088CPU的两种工作模式

  48. 1、8086/8088CPU的两种工作模式 最小模式:系统中只有一个微处理器,所有的总线控制信号直接由8086/8088CPU产生,系统中的总线控制电路被减到最少 最大模式:系统中至少包含两个微处理器,其中一个为主处理器8086/8088CPU,其它微处理器为协处理器,协助主处理器工作

  49. 8087:数值运算协处理器,实现多种类型的数值运算(整型、浮点型数值),超越函数(三角函数、对数函数)的计算等8087:数值运算协处理器,实现多种类型的数值运算(整型、浮点型数值),超越函数(三角函数、对数函数)的计算等 8089协处理器:有专门用于输入/输出操作的指令系统,可直接为输入/输出设备服务,使主处理器不再承担这类工作。常用在输入/输出操作比较频繁的系统中

  50. 2、8086/8088CPU的引脚信号和功能 8086/8088CPU芯片都是双列直插式集成电路芯片,40个引脚,其中32个引脚在两种工作模式下的名称和功能相同,8个引脚在不同的工作模式下具有不同的名称和功能

More Related