8086 微处理器

2025年3月17日 | 阅读11分钟

Intel 8086

  • Intel 8086 微处理器是 Intel 8085 微处理器的增强版本。它于 1976 年由 Intel 设计。
  • 8086 微处理器是一款 16 位 N 沟道 HMOS 微处理器。其中 HMOS 代表“高速金属氧化物半导体”。
  • Intel 8086 构建在单个半导体芯片上,采用 40 引脚 IC 封装。封装类型为 DIP(双列直插封装)。
  • Intel 8086 使用 20 条地址线和 16 条数据线。它可以直接寻址高达 220 = 1 MB 的内存。
  • 它包含强大的指令集,可以非常快速地执行除法和乘法等操作。
  • 8086 被设计成在两种模式下运行,即最小模式和最大模式。

8085 与 8086 微处理器的区别

8085 微处理器8086 微处理器
它是一款 8 位微处理器。它是一款 16 位微处理器。
它具有 16 位地址线。它具有 20 位地址线。
它具有 8 位数据总线。它具有 16 位数据总线。
内存容量为 64 KB。内存容量为 1 MB。
该微处理器的时钟速度为 3 MHz。该微处理器的时钟速度因版本不同,在 5、8 和 10 MHz 之间变化。
它有五个标志位。它有九个标志位。
8085 微处理器不支持内存分段。8086 微处理器支持内存分段。
它不支持流水线。它支持流水线。
它是基于累加器的处理器。它是通用寄存器式处理器。
它没有最小或最大模式。它具有最小和最大模式。
在 8085 中,只使用一个处理器。在 8086 中,使用多个处理器。还可以使用额外的外部处理器。
与 8086 微处理器相比,它包含的晶体管数量较少。它包含约 6500 个晶体管。与 8085 微处理器相比,它包含的晶体管数量较多。它包含约 29000 个晶体管。
8085 的成本较低。8086 的成本较高。

8086 引脚配置

8086 Microprocessor

8086 引脚的描述如下

AD0-AD15(地址/数据总线):双向地址/数据线。它们是低位地址总线。它们与数据多路复用。

当这些线用于传输内存地址时,符号 A 用来代替 AD,例如 A0-A15。

A16 - A19(输出):高位地址线。它们与状态信号多路复用。

A16/S3, A17/S4:A16 和 A17 与段标识信号 S3 和 S4 多路复用。

A18/S5:A18 与中断状态 S5 多路复用。

A19/S6:A19 与状态信号 S6 多路复用。

BHE/S7(输出):总线高位使能/状态。在 T1 期间,它为低。它使能数据到数据总线的高位部分 D8-D15。连接到数据总线高位部分 8 位设备使用 BHE 信号。它与状态信号 S7 多路复用。S7 信号在 T3 和 T4 期间可用。

RD(读):用于读操作。它是一个输出信号。它在低电平时有效。

Ready(输入):被寻址的内存或 I/O 通过此引脚发送确认。当为高电平时,表示外设已准备好传输数据。

RESET(输入):系统复位。信号为高电平有效。

CLK(输入):时钟 5、8 或 10 MHz。

INTR:中断请求。

NMI(输入):不可屏蔽中断请求。

TEST(输入):等待测试控制。当为低电平时,微处理器继续执行,否则等待。

VCC:电源 +5V 直流。

GND:地。

8086 的运行模式

Intel 8086 有两种运行模式:最小模式最大模式

当微处理器系统中只使用一个 8086 CPU 时,8086 在最小模式下运行。

在多处理器系统中,8086 在最大模式下运行。

最小模式下的引脚描述

在此最小模式下,引脚 MN/MX 连接到 5V 直流电源,即 MN/MX = VCC。

引脚 24 到 31 在最小模式下的描述如下

INTA(输出):引脚 24 中断确认。接收到中断信号后,处理器发出中断确认信号。它为低电平有效。

ALE(输出):引脚 25。地址锁存使能。在 T1 期间它为高电平。微处理器 8086 发出此信号将地址锁存到 Intel 8282/8283 锁存器中。

DEN(输出):引脚 26。数据使能。当使用 Intel 8287/8286 八位总线收发器时使用此信号。它为低电平有效。

DT/R(输出):引脚 27 数据传输/接收。当使用 Intel 8287/8286 八位总线收发器时,此信号控制数据通过收发器的方向。当为高电平时,发送数据。当为低电平时,接收数据。

M/IO(输出):引脚 28,内存或 I/O 访问。当此信号为高电平时,CPU 要访问内存。当此信号为低电平时,CPU 要访问 I/O 设备。

WR(输出):引脚 29,写。当此信号为低电平时,CPU 执行内存或 I/O 写操作。

HLDA(输出):引脚 30,保持确认。当处理器接收到 HOLD 信号时发送。它是一个高电平有效信号。当移除 HOLD 时,HLDA 变为低电平。

HOLD(输入):引脚 31,保持。当微机系统中的另一设备想要使用地址和数据总线时,它通过此引脚向 CPU 发送 HOLD 请求。它是一个高电平有效信号。

最大模式下的引脚描述

在最大模式下,引脚 MN/�MX 被设置为低电平。它接地。引脚 24 到 31 的描述如下

QS1, QS0(输出):引脚 24、25,指令队列状态。逻辑如下

QS1QS0操作
00无操作
01从队列获取的第一个字节操作码。
10清空队列
11从队列获取的后续字节

S0, S1, S2(输出):引脚 26、27、28 状态信号。这些信号连接到 Intel 8288 的总线控制器。该总线控制器生成内存和 I/O 访问控制信号。状态信号的逻辑如下

S2S1S0操作
000中断确认
001从 I/O 端口读取数据
010向 I/O 端口写入数据
011停止
100操作码获取
101内存读取
110内存写入
111被动状态

LOCK(输出):引脚 29。它是一个低电平有效信号。当此信号为低电平时,所有中断都被屏蔽,并且不授予 HOLD 请求。在多处理器系统中,此信号会通知所有其他处理器,它们不应该请求 CPU 交出总线控制权。

RG/GT1, RQ/GT0(双向):引脚 30、31,本地总线优先级控制。其他处理器通过这些线路请求 CPU 释放本地总线。

在最大模式下,WR、ALE、DEN、DT/R 等信号无法直接从处理器获得。这些信号是从 8288 控制器获得的。


8086 的功能单元

8086 包含两个独立的功能单元:总线接口单元 (BIU)执行单元 (EU)

8086 Microprocessor

图:Intel 8086 微处理器(8086 架构)框图

总线接口单元 (BIU)

段寄存器、指令指针和 6 字节指令队列与总线接口单元 (BIU) 相关联。

BIU

  • 处理数据和地址的传输,
  • 获取指令码,将获取的指令码存储在称为队列的先进先出寄存器组中,
  • 从内存和 I/O 设备读取数据,
  • 将数据写入内存和 I/O 设备,
  • 它会重新定位操作数的地址,因为它从 EU 获取未重新定位的操作数地址。EU 告诉 BIU 从哪里获取指令或在哪里读取数据。

它有以下功能部分

  • 指令队列:当 EU 执行指令时,BIU 获取下一条指令的 6 个字节并将其存储在指令队列中,这个过程称为指令预取。这个过程提高了处理器的速度。
  • 段寄存器:段寄存器包含处理器用于访问内存位置的指令和数据在内存中的地址。它指向当前正在使用的内存段的起始地址。
    8086 中有 4 个段寄存器,如下所示
    • 代码段寄存器 (CS):内存的代码段保存程序的指令码。
    • 数据段寄存器 (DS):程序中给出的数据、变量和常量保存在内存的数据段中。
    • 堆栈段寄存器 (SS):堆栈段保存子程序的地址和数据。它还保存寄存器的内容和 PUSH 指令中给出的内存位置。
    • 附加段寄存器 (ES):附加段保存某些字符串指令某些数据的目标地址。
  • 指令指针 (IP):8086 微处理器中的指令指针充当程序计数器。它指向下一条要执行的指令的地址。

执行单元 (EU)

  • EU 从队列接收指令的操作码,对其进行解码,然后执行。当执行单元解码或执行指令时,BIU 从内存中获取指令码并将其存储在队列中。
  • BIU 和 EU 并行独立运行。这提高了处理速度。
  • 通用寄存器、堆栈指针、基址指针和变址寄存器、ALU、标志寄存器(FLAGS)、指令解码器以及时序和控制单元构成了执行单元(EU)。让我们讨论一下
  • 通用寄存器:有四个 16 位通用寄存器:AX(累加器寄存器)、BX(基址寄存器)、CX(计数器)和 DX。这些 16 位寄存器中的每一个都可以进一步细分为 8 位寄存器,如下所示
16 位寄存器8 位高位寄存器8 位低位寄存器
AXAHAL
BXBHBL
CXCHCL
DXDHDL
  • 变址寄存器:以下四个寄存器属于指针和变址寄存器组
    • 堆栈指针 (SP)
    • 基址指针 (BP)
    • 源变址 (SI)
    • 目的变址 (DI)
  • ALU:它处理所有算术和逻辑运算。例如加法、减法、乘法、除法、AND、OR、NOT 运算。
  • 标志寄存器:这是一个 16 位寄存器,其行为类似于触发器,意味着它根据累加器中存储的结果改变状态。它有 9 个标志位,分为 2 组,即条件标志和控制标志。
    • 条件标志:此标志表示最后执行的算术或逻辑指令的结果。条件标志是
      • 进位标志
      • 辅助标志
      • 奇偶标志
      • 零标志
      • 符号标志
      • 溢出标志
    • 控制标志:它控制执行单元的操作。控制标志是
      • 陷阱标志
      • 中断标志
      • 方向标志

中断

中断是在程序执行过程中创建临时暂停,并允许外围设备访问微处理器的过程。

微处理器响应这些中断,并执行一个中断服务例程 (ISR),这是一个简短的程序或子程序,用于指示微处理器如何处理中断。

8086 中有不同类型的中断

8086 Microprocessor

硬件中断

硬件中断是由任何外围设备通过向微处理器发送信号到指定引脚引起的中断。

Intel 8086 有两个硬件中断引脚

  • NMI(不可屏蔽中断)
  • INTR(中断请求)可屏蔽中断。

NMI:NMI 是一个不可屏蔽中断,优先级高于可屏蔽中断。

  • 用户不能通过软件禁用(屏蔽)它。
  • 处理器使用它来处理紧急情况。
    例如:在断电情况下,它可用于保存程序和数据。外部电子电路用于检测断电,并通过 NMI 线向 8086 发送中断信号。

INTR:INTR 是一个可屏蔽中断。可以使用中断标志 (IF) 来启用/禁用它。在接收到外部设备的 INTR 后,8086 通过 INTA 信号进行确认。

它执行连续两次中断确认总线周期。

软件中断

微处理器也可能被内部异常情况(如溢出、除以零等)中断。程序员也可以在调试程序时,在程序中插入 INT 指令来中断微处理器。这种中断称为软件中断。

由内部异常引起的中断也属于软件中断的范畴。

软件中断的例子有

  • 类型 0(除以零)
  • 类型 1(单步执行以调试程序)
  • 类型 2 代表 NMI(断电情况)
  • 类型 3(断点中断)
  • 类型 4(溢出中断)

8086 的中断指针表

8086 Microprocessor

图:8086 中断指针表

8086 最多可处理 256 个硬件和软件中断。

1KB 内存用作包含中断向量(或中断指针)的表,称为中断向量表或中断指针表。256 个中断指针已编号从 0 到 255(FF 十六进制)。分配给中断指针的数字称为该中断的类型。例如,类型 0、类型 1、类型 2、……、类型 255 中断。


8086 的寻址模式

在累加器、通用寄存器或内存位置中指定指令操作数的方式称为寻址模式

8086 微处理器有 8 种寻址模式。为操作寄存器或立即数据的指令提供了两种寻址模式。

这两种寻址模式是

寄存器寻址:在寄存器寻址中,操作数位于 16 位或 8 位通用寄存器之一中。

示例

  • MOV AX, CX
  • ADD AL, BL
  • ADD CX, DX

立即数寻址:在立即数寻址中,操作数在指令本身中指定。

示例

  • MOV AL, 35H
  • MOV BX, 0301H
  • MOV [0401], 3598H
  • ADD AX, 4836H

其余 6 种寻址模式指定了位于内存中的操作数的位置。

这 6 种寻址模式是

直接寻址:在直接寻址模式中,操作数的偏移量在指令中作为 8 位或 16 位位移量给出。

示例

  • ADD AL, [0301]

该指令将偏移地址 0301 的内容加到 AL。操作数位于数据段 DS 内的给定偏移量 (0301) 处。

寄存器间接寻址:操作数的偏移量位于寄存器 BX、BP、SI 或 DI 中的一个寄存器中,具体取决于指令中的指定。

示例

  • MOV AX, [BX]

它将寄存器 BX 所寻址的内存位置的内容移动到寄存器 AX。

基址寻址:操作数的偏移量是 8 位或 16 位位移量与基址寄存器 BX 或 BP 的内容之和。BX 用作数据段的基址寄存器,BP 用作堆栈段的基址寄存器。

有效地址(偏移量) = [BX + 8 位或 16 位位移量]。

示例

  • MOV AL, [BX+05];8 位位移量的示例。
  • MOV AL, [BX + 1346H];16 位位移量的示例。

变址寻址:操作数的偏移量是变址寄存器 SI 或 DI 的内容与 8 位或 16 位位移量之和。

偏移量(有效地址)= [SI 或 DI + 8 位或 16 位位移量]

示例

  • MOV AX, [SI + 05];8 位位移量。
  • MOV AX, [SI + 1528H];16 位位移量。

基址变址寻址:操作数的偏移量是基址寄存器 BX 或 BP 的内容与变址寄存器 SI 或 DI 的内容之和。

有效地址(偏移量)= [BX 或 BP] + [SI 或 DI]

此处,BX 用作数据段的基址寄存器,BP 用作堆栈段的基址寄存器。

示例

  • ADD AX, [BX + SI]
  • MOV CX, [BX + SI]

带位移的基址变址寻址:在此寻址模式下,操作数的偏移量由以下给出

有效地址(偏移量) = [BX 或 BP] + [SI 或 DI] + 8 位或 16 位位移量

示例

  • MOV AX, [BX + SI + 05];8 位位移量
  • MOV AX, [BX + SI + 1235H];16 位位移量

下一主题8086 指令集