1 / 67

第二章 8086/8088 微处理器

第二章 8086/8088 微处理器. 主讲:刘英. 主要内容. 2.1 8086/8088 微处理器的结构 2.2 8086/8088 的引脚功能 2.3 8086/8088 的总线结构 2.4 8086 最小模式的工作时序. 2.1 8086/8088 微处理器的结构. 2.1.1 8086/8088 微处理器的结构 8086/8088 微处理器是 Intel 公司推出的第三代 CPU 芯片,它们的内部结构基本相同,都采用 16 位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的 40 脚双列直插组件中。.

neve-hoover
Download Presentation

第二章 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. 第二章 8086/8088微处理器 主讲:刘英

  2. 主要内容 • 2.1 8086/8088微处理器的结构 • 2.2 8086/8088的引脚功能 • 2.3 8086/8088的总线结构 • 2.4 8086最小模式的工作时序

  3. 2.1 8086/8088微处理器的结构 2.1.1 8086/8088微处理器的结构 • 8086/8088微处理器是Intel公司推出的第三代CPU芯片,它们的内部结构基本相同,都采用16位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的40脚双列直插组件中。

  4. 2.1 8086/8088微处理器的结构 • 8086微处理器的一般性能特点: • 16位的内部结构,16位双向数据信号线; • 20位地址信号线,可寻址1M字节存储单元; • 较强的指令系统(133条指令); • 利用第16位的地址总线来进行I/O端口寻址,可寻址64K个I/O端口; • 中断功能强,可处理内部软件中断和外部中断,中断源可达256个; • 单一的+5V电源,单相时钟5MHz。

  5. 2.1 8086/8088微处理器的结构 • 从功能上来看,8086CPU可分为两部分,即总线接口单元BIU(Bus Interface Unit)和执行单元EU(Execution Unit)。

  6. 2.1 8086/8088微处理器的结构 • 总线接口单元(BIU) • 组成:①段寄存器(DS、CS、ES、SS); ②16位指令指针寄存器IP(指向下一条要取出的指令代码); ③20位地址加法器(用来产生20位地址); ④6字节(8088为4字节)指令队列缓冲器; ⑤总线控制逻辑。 • 功能:负责从内存中取指令,送入指令队列,实现CPU与存储器和I/O接口之间的数据传送。 • 执行单元(EU) • 组成:①ALU(算术逻辑单元); ②通用寄存器(AX、BX、CX、DX); ③专用寄存器(BP、SP、SI、DI); ④标志寄存器(PSW); ⑤EU控制系统。 • 功能:负责分析指令和执行指令。

  7. 2.1 8086/8088微处理器的结构 2.1.2 8086内部寄存器 累加器 AX 地址寄存器 控制寄存器 BX 计数器 CX IP 数据寄存器 通用寄存器 FLAGS DX SP CS 段寄存器 BP DS SS SI DI ES

  8. 2.1 8086/8088微处理器的结构 1. 通用寄存器 • 通用寄存器的包括数据寄存器、地址指针寄存器和变址寄存器。 ① 数据寄存器 • 4个16位的数据寄存器:累加器AX、基址寄存器BX、计数寄存器CX、数据寄存器DX • 特点:可以将数据寄存器当作一个16位寄存器,也可用作两个8位寄存器(AL、AH;BL、BH;CL、CH;DL、DH)。 • 可以用来存放8位或16位二进制操作数,这些操作数可以是参加操作数、中间结果、操作数地址。但这四个寄存器又有自己特殊的用法。

  9. 2.1 8086/8088微处理器的结构 • AX(Accumulator)累加器,多用于存放中间运算结果。所有I/O指令必须都通过AX与接口传送信息。 • BX(base Register)基址寄存器,在间接寻址中用于存放基地址。 • CX(count Register)计数寄存器,用于在循环或串操作指令中存放循环次数或重复次数。 • DX(Data Register)数据寄存器,在32位乘除法运算时,存放高16位数;在间接寻址的I/O指令中存放I/O端口地址。

  10. 2.1 8086/8088微处理器的结构 • ② 地址指针寄存器 • SP(stack pointer)堆栈指示器,用于指示当前堆段中栈顶所在的存储单元地址。 • BP(base pointer)基址指示器,用于指示当前堆栈段中一个数据区基址的偏移地址,通过它间接寻址可对堆栈段中的某个数据进行存取。 • BX与BP在应用上的区别 • 作为通用寄存器,二者均可用于存放数据; • 作为基址寄存器,BX通常用于寻址数据段;BP则通常用于寻址堆栈段。 跳转到堆栈

  11. 2.1 8086/8088微处理器的结构 • ③变址寄存器 • SI(source Index)源变址寄存器 • DI(Destination index)目标变址寄存器 • 变址寄存器常用于指令的间接寻址或变址寻址。特别是在串操作指令中,用SI存放源操作数的偏移地址,而用DI存放目标操作数的偏移地址。

  12. 2.1 8086/8088微处理器的结构 2. 段寄存器 • 用于存放逻辑段的段基地址(逻辑段的概念后面将要介绍) • CS(Code Segment)代码段寄存器: • 代码段用于存放指令代码 • DS( Date Segment )数据段寄存器 : • ES( Extra Segment )附加段寄存器: • 数据段和附加段用来存放操作数 • SS(Stack Segment)堆栈段寄存器: • 堆栈段用于存放返回地址,保存寄存器内容,传递参数。

  13. 2.1 8086/8088微处理器的结构 3. 指令指针IP(Instruction Pointer) • 16位专用寄存器,IP指向当前需要取出的指令字节 • 当BIU从内存中取出一个指令字节后,IP自动加1,指向下一个字节 • IP指向的是指令地址的段内地址偏移量,又称偏移地址或有效地址 • 程序员不能对IP进行存取操作,程序中的转移指令、返回指令以及中断处理能对IP进行操作

  14. 15 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF 2.1 8086/8088微处理器的结构 4. 标志寄存器FLAG • 8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器) • 6个状态标志位( CF、PF、AF、ZF、SF、OF),表示前一步操作(如加、减等)执行以后,ALU所处的状态,后续操作可以根据这些状态标志进行判断,实现转移。 • 3个控制标志位( IF、DF、TF),可以通过指令人为设置,用以对某一种特定的功能起控制作用(如中断屏蔽等),反映了人们对微机系统工作方式的可控制性。

  15. 2.1 8086/8088微处理器的结构 ① 状态标志位 • 进位标志CF,反映算术运算后,最高位(字节操作为D7,字操作为D15)出现进位(或借位)的情况,有则为“1” • 奇偶标志PF,反映操作结果(AL)中“1”的个数情况,若为偶数,PF=1 • 辅助进位标志AF,反映一个8位量的低4位(D3)向高4位(D4)有无进位(或借位)的情况,有则置为“1”。通常用于对BCD码算术运算结果的调整。

  16. 2.1 8086/8088微处理器的结构 • 零标志ZF,反映运算结果是否为零的情况,结果为零,ZF置为“1” • 符号标志SF,反映运算结果的符号情况,若结果为负数,SF为“1”。SF的取值与运算结果最高位(字节操作为D7,字操作为D15)一致 • 溢出标记OF,反映带符号数运算结果是否超过机器所能表示的数值范围的情况,对字节运算为-128~+127,对字运算为-32768~+32767。若超过上述范围则称为“溢出”,OF=1

  17. 2.1 8086/8088微处理器的结构 • 溢出标志OF和进位标志CF是两个意义不同的标志 • 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确; • 溢出标志表示带符号数运算结果是否超出范围,运算结果已经不正确。 例2.1:49H + 6DH=B6H 无符号数运算:73+109=182 范围内,无进位 有符号数运算: 73+109=182 范围外,有溢出 例2.2:BBH + 6AH=(1)25H 无符号数运算:187+106=293 范围外,有进位 有符号数运算: -69+106=37 范围内,无溢出

  18. 2.1 8086/8088微处理器的结构 例2.3: 1101 0010 + 0110 0110 1 0011 1000 CF=1 SF=0 ZF=0 PF=0 AF=0 OF=C7⊕C6=0 例2.4: 0101 0001 0100 1011 + 0110 0010 0100 0110 1011 0011 1001 0001 CF=0 SF=1 ZF=0 PF=1 AF=1 OF=C15⊕C14=1

  19. 2.1 8086/8088微处理器的结构 ② 控制标志位 • 方向标志DF,在进行字符串操作时,每执行一条串操作指令,对地址要进行一次调整,由DF决定地址是增还是减。若DF=1,则为减量;若DF=0则为增量 • 中断允许标志IF,表示系统是否允许外部的可屏蔽中断。若IF=1,表示允许中断。IF对非屏蔽中断及内部中断请求不起作用 • 跟踪标志TF,当TF=1时,CPU每执行完一条指令,便自动产生一个内部中断,对程序进行逐条检查,常用于程序的调试

  20. 执行部件 通用寄存器 四个专用寄存器 SP:堆栈指示器,用于指示当前堆段中栈 顶所在的存储单元地址。 BP:基址指示器,用于指示当前堆栈段中 一个数据区的偏移地址. SI:源变址寄存器,存放源操作数的偏移 地址。 DI:目标变址寄存器,存放目标操作数的 偏移地址。 算术逻辑单元ALU: 主要是加法器。大部分指令 的执行由加法器完成。 标志寄存器: 16位字利用了9位。 标志分两类: 状态标志(6位):反映刚刚完成的操作结果情况。 控制标志(3位):在某些指令操作中起控制作用。 总线接口部件

  21. 20位地址加法器 16位的指令指针寄存器IP: IP中的内容是下一条指令 对现行代码段基地址的偏移量, 6字节的指令队列 指令队列共六字节,总线接 口部件BIU从内存取指令, 取来的总是放在指令队列中; 执行部件EU从指令队列取指 令,并执行。 四个段寄存器:CS、DS、SS、ES CS管理代码段;DS管理数据段 SS管理堆栈段;ES管理附加段.

  22. 2.1 8086/8088微处理器的结构 2.1.3 存储器中的逻辑地址和物理地址 1. 为什么要采用存储器“分段”技术? • 8086/8088系统有20根地址总线,它可以直接寻址的存储器单元数为220=1MB。 • 而微处理器中所有的寄存器都是16位的,内部ALU也只能进行16位运算,其寻址范围局限在216=65536(64KB)单元。 • 为了实现对1MB单元的寻址,8086系统采用了存储器分段技术。

  23. 2.1 8086/8088微处理器的结构 2. 存储器分段 • 具体做法是,将1MB的存储空间分成许多逻辑段,每段最长64KB单元,可以用16位地址码进行寻址。 • 1MB的存储空间最多可分为64K个段(段之间可相互重叠),至少可分成16个相互不重叠的段(每段容量为64KB),如图2-3所示。 • 每个逻辑段在实际存储空间中的位置是可以浮动的,其起始地址可由段寄存器的内容来确定。实际上,段寄存器中存放的是段起始地址的高16位,称之为“段基值”(segment base value)。 • 段起始地址的计算和分配通常是由操作系统完成的,并不需要普通用户参与。

  24. 2.1 8086/8088微处理器的结构 图2-3 存储器的逻辑分段结构

  25. 2.1 8086/8088微处理器的结构 3. 物理地址和逻辑地址 • 在有地址变换机构的计算机系统中,每个存储单元可以看成具有两种地址:物理地址和逻辑地址。 • 物理地址是信息在存储器中实际存放的地址(20位),它是CPU访问存储器时实际输出的地址。物理地址与存储单元是一一对应关系。 • 逻辑地址是编程时所使用的地址(16位),对所给定的任一存储单元而言有逻辑地址由“段基址”和“段内偏移量”两部分构成。一个逻辑地址只能对应一个物理地址,而一个物理地址可以对应多个逻辑地址。

  26. 2.1 8086/8088微处理器的结构 • 段基址:说明逻辑段在内存中的起始位置。 • 段内偏移量:说明主存单元距离段起始位置的偏移量。 • 段基址存放在段寄存器CS、SS、DS和ES中。 • 段内偏移量由SP、BP、SI、DI、IP以及相应寄存器的组合而组成。 • 逻辑地址表示形式: • 段基地址 : 段内偏移地址

  27. 2.1 8086/8088微处理器的结构 • CS、DS、SS和其他寄存器组合指向存储单元的示意图

  28. 2.1 8086/8088微处理器的结构 4. 物理地址的计算方法 • 物理地址的形成是通过CPU内部的BIU部件中的地址加法器运算出来的。 • 上述由逻辑地址转换为物理地址的过程也可以表示成如下计算公式: 物理地址=段基值×10H+偏移量

  29. 2.1 8086/8088微处理器的结构 • 例2.5 设代码段寄存器CS的内容为4232H,指令指针寄存器IP的内容为0066H,即CS=4232H,IP=0066H,则访问代码段存储单元的物理地址计算如下: 4232H×10H+0066H=42386H • 例2.6 设数据段寄存器DS的内容为1234H,基址寄存器BX的内容为0022H,即DS=1234H,BX=0022H,则访问数据段存储单元的物理地址计算如下: 1234H×10H+0022H=12362H

  30. 2.1 8086/8088微处理器的结构 5. 特殊的内存区域: • 8088/8086系统中,有些内存区域的作用是固定的,用户不能随便使用,如: • 中断矢量区:00000H—003FFH共1K字节,用以存放256种中断类型的中断矢量,每个中断矢量占用4个字节,共256×4=1024=1K; • 显示缓冲区:B0000H—B0F9FH约4000(25×80×2)字节,是单色显示器的显示缓冲区,存放文本方式,所显示字符的ASCII码及属性码;B8000H—BBF3FH约16K字节,是彩色显示器的显示缓冲区,存放图形方式下,屏幕显示象素的代码。 • 启动区:FFFF0H—FFFFFH共16个单元,用以存放一条无条件转移指令的代码,转移到系统的初始化部分。

  31. 2.1 8086/8088微处理器的结构 2.1.4 堆栈 • 堆栈是在存储器中开辟的一个数据存储器,这个区域数据的存取遵循“先入后出”的原则。 • 把堆栈存储器的一端固定,称为栈底。另一端可活动,称为栈顶。栈顶由SP堆栈批示器来描述。 • 8086/8088的堆栈操作只能是字操作。因此在进行入栈操作时,SP会自动减2,即SP=SP-2。出栈时SP会自动加2,即SP=SP+2。 • 常用于响应中断或子程序调用(存放返回地址、过程参数或需要保护的数据)

  32. 2.1 8086/8088微处理器的结构 • 堆栈操作 低 低 低 SS SS SS F0H SP F0H SP 12H 12H SP -2 +2 SP SP SP 高 高 高 高 入栈前 入栈后 出栈后

  33. 2.2 8086/8088的引脚功能 • 8086和8088都是16位CPU,具有40条引脚,采用双列直插式封装。 • 为了减少芯片的引线,8086/8088的许多引脚具有双重定义和功能,采用分时复用方式工作,即在不同时刻,这些引线上的信号是不相同的 • 8086/8088的最大和最小两种工作模式可以通过引脚选择 • 最大模式:两个或多个微处理器(多微处理器模式),一个主处理器为8086CPU,另外的处理器可以是浮点数协助处理器8087或I/O处理器8089。 • 最小模式:只有8086CPU一个微处理器(单处理器模式)。 • 引脚分类:地址总线、数据总线、控制总线、其它(时钟与电源)

  34. 2.2 8086/8088的引脚功能 • 8086有40个引脚,其中第33(最小/最大模式)脚很关键,它是一条输入线,可以加高电平,也可以加低电平,由该线所加电平的高或低电平决定24-31引脚的功能(24-31引脚括号内为最大模式功能)其他引脚不受第33引脚的影响,我们把这部分引脚称为一般引脚。

  35. 2.2 8086/8088的引脚功能 • 最小模式下的引脚说明 • 地址/数据总线 • AD15~AD0 (Address Data Bus) • 地址/数据分时复用信号,双向,三态。在T1状态(地址周期)AD15~AD0上为地址信号的低16位A15~A0;在T2 ~ T3状态(数据周期)AD15~AD0 上是数据信号D15~D0。 • 所谓三态是指总线输出可以有三个状态:高电平、低电平和高阻状态。当处于高阻状态时,该总线在逻辑上与所有连接负载断开。 跳转到时序分析

  36. S4 S3 当前正在使用的段寄存器 0 0 ES 0 1 SS 1 0 CS或未使用任何段寄存器 1 1 DS 2.2 8086/8088的引脚功能 • 地址/状态线 • A19~A16/S6~S3 (Address/Status) • 地址/状态复用信号,三态输出。在总周期的T1状态A19/S6~A16/S3上是地址的高4位。在T2~T4状态,A19/S6~A16/S3上输出状态信息。 • 这些状态信息中,S6恒等于0,S5指示中断允许标志位IF的状态,S4、S3的组合指示CPU当前正在使用的段寄存器,其编码见表格。

  37. 2.2 8086/8088的引脚功能 • 控制总线 • (1)BHE/S7 (Bus High Enable/Status) • 数据总线高8位使能和状态复用信号,三态输出。在总线周期T1状态,BHE有效,表示数据线上高8位数据有效。在T2~T4状态BHE/S7 输出状态信息S7。S7在8086中未定义。

  38. 2.2 8086/8088的引脚功能 • 8086将1M字节存储体分为两个库,每个库的容量都是512K字节。其中与数据总线D15—D8相连的库全由奇地址单元组成,称高字节库或奇地址库, 并用BHE信号作为库选信号;另一个库与数据总线的D7—D0相连,由偶地址单元组成,称低字节库或偶低址库,利用A0作为库选信号。显然,只需A19—A1共19位地址用来作为两个库内的单元寻址。

  39. 2.2 8086/8088的引脚功能 • BHE和A0的代码组合和对应的操作

  40. 2.2 8086/8088的引脚功能 • (2)M/IO (Memory/IO ) • 存储器/IO端口控制信号,三态输出。用来区分当前操作是访问I/O端口还是存储器。M/IO为高电平时,表示当前CPU正在访问存储器,M/IO为低电平时,表示当前CPU正在访问I/O端口。 • (3) RD (Read) • 读信号,三态输出,此引脚输出为低电平时,表示CPU正在对存储或I/O端口进行读操作。 • (4) WR (Write) • 写信号,三态输出,此引脚输出为低电平时,表示CPU正在对存储或I/O端口进行写操作。

  41. 2.2 8086/8088的引脚功能 • (5)ALE(Address Latch Enable) • 地址锁存允许信号,高电平有效。CPU通过该引脚向地址锁存器8282/8283发出地址锁存允许信号,把当前地址/数据复用总线上输出的是地址信息,锁存到地址锁存器8282/8283中去。ALE信号不能被浮空。 • (6)DEN (Data Enable) • 数据允许信号,三态输出,低电平有效。在8086系统中,通常采用8286或8287作为数据总线的驱动器,该信号为数据总线收发器8286提供一个控制信号,表示CPU当前准备发送或接收一项数据。 • (7) DT/R (Data Transmit/Receive) • 数据传送方向控制信号,三态输出。在8086系统中,用DT/R信号来控制数据驱动器的数据传送方向。高电平时,CPU向存储器或I/O端口发送数据;低电平时,CPU从存储器或I/O端口接收数据。 跳转到地址锁存 跳转到数据收发

  42. 2.2 8086/8088的引脚功能 • (8)NMI (Non—Maskable Interrupt Reques • 不可屏蔽中断请求信号。由外部输入,上升沿触发,正跳沿有效。CPU一旦测试到NMI请求信号,待当前指令执行完就自动从中断入口地址表中找到类型2中断服务程序的入口地址,并转去执行。 • (9)INTR( Interrupt Request) • 中断请求信号,由外部输入,电平触发,高电平有效。INTR有效时,表示外部设备向CPU发出中断请求,CPU在每条指令的最后一个时钟周期对INTR进行测试,一旦测试到有中断请求,并且当中断允许标志IF=1时,则暂停执行下条指令转入中断响应周期。 • (10)INTA (Interrupt Acknowledge) • 中断响应信号。向外部输出,低电平有效,表示CPU响应了外部发来的INTR信号。

  43. 2.2 8086/8088的引脚功能 • (11)HOLD(Hold Request) • 总线保持请求信号,高电平有效,这是系统中的其它总线部件向CPU发来的总线请求信号输入引脚。 • (12)HLDA(Hold Acknowledge) • 总线保持响应信号,高电平有效,表示CPU认可其他总线部件提出的总线占用请求,准备让出总线控制权。

  44. 2.2 8086/8088的引脚功能 • (13)READY • 准备就绪信号。由外部输入,高电平有效,它是由被访问的内存或I/O设备发出的响应信号,当其有效时,表示CPU访问的存储器或I/O端口己准备好传送数据。当READY无效时,要求CPU插入一个或多个等待周期Tw,直到READY信号有效为止。 • (14)TEST • 测试信号。由外部输入,低电平有效。当CPU执行WAIT指令时(WAIT指令是用来使处理器与外部硬件同步),每隔5个时钟周期对TEST进行一次测试,若测试到该信号无效,则CPU继续执行WAIT指令,即处于空闲等待状态;当CPU测到TEST输入为低电平时,则转而执行WAIT的下一条指令。由此可见,TEST对WAIT指令起到了监视的作用。

  45. 2.2 8086/8088的引脚功能 • (15)RESET • 复位信号。由外部输入,高电平有效。RESET信号至少要保持4个时钟周期,CPU接收到该信号后,停止进行操作,并对标志寄存器(FR)、IP、DS、SS、ES及指令队列清零,而将CS设置为FFFFH。当复位信号变为低电平时,CPU从FFFF0H开始执行程序,由此可见,采用8086CPU计算机系统的启动程序就保持在开始的存储器中。 • (16)MN/MX (Minimum/Maximum Mode Control) • 最大最小模式控制信号,输入。MN/MX=1(+5V),CPU工作在最小模式。MN/MX=0(接地), CPU则工作在最大模式。 • 其他 • (1)GND地 • (2)VCC电源,接+5V

  46. 2.2 8086/8088的引脚功能 • 最大模式下的引脚说明 • 当8086CPU工作在最大模式系统时,有8个管脚重新定义 。 • (1)S2、S1、S0(Bus Cycle Status,最小模式为M/IO、D/TR、DEN) • 总线周期状态信号,三态输出,低电平有效。在最大模式下,这三个信号连接到总线控制器8288的输入端,8288对它们进行译码后可以产生系统总线所需要的各种控制信号。三个信号的代码组合以及对应操作见下页表格:

  47. 2.2 8086/8088的引脚功能

  48. 2.2 8086/8088的引脚功能 • (2)RQ/GT0,RQ/GT1 (Request/Grant) • 总线请求/总线响应信号,低电平有效。每一个引脚都具有双向功能,既是总线请求输入也是总线响应输出。当该信号为输入时表示其它主控者向CPU请求使用总线;当为输出时表示CPU对总线请求的响应信号。两条线可同时与两个主控者相连,RQ/GT0优先级高于RQ/GT1。

  49. 2.2 8086/8088的引脚功能 • (3)LOCK 封锁信号 • 总线封锁信号,三态输出,低电平有效。该信号有效时,CPU锁定总线,不允许其他的总线控制设备申请使用系统。这个信号由软件设置,当在指令前加上LOCK前缀时,则在执行这条指令期间LOCK保持有效,即在此指令执行期间,CPU封锁其他总线控制设备使用总线。

  50. 2.2 8086/8088的引脚功能 • (4)QS1、QS0(Instruction Queue Status): • 指令队列状态输出信号。QS1,QS0组合起来表示前一个时钟周期中指令队列的状态,根据该状态信号,从外部可以跟踪CPU内部的指令队列。QS1、QS0的编码如表:

More Related