第 2 章 16位和32位微处理器8086/8088


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

2.1 8086微处理器的一般性能特点

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

2.2 8086/8088CPU的编程结构

(编程结构是指从程序员和使用者的角度看到的结构,亦可称为功能结构。)
从功能上来看,8086/8088CPU可分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。
在这里插入图片描述

1、总线接口部件(BIU)

功能:负责与存储器(内存)及I/O接口之间的数据传送操作(总线操作,IO读等)。
具体来看,完成取指令送指令队列;CPU执行指令时,总线接口部件配合执行部件的动作,从指定的内存单元或I/O端口取操作数,将数据传送给执行部件,或者将执行部件的操作结果送内存单元或者I/O端口。

组成:

  • 段寄存器(DS( DX是通用寄存器,DS:DX=字符串首地址)、CS、ES(附加段寄存器)、SS(堆栈段寄存器,偏移量由栈顶指针SP提供));
  • 16位指令指针寄存器IP(指向下一条要取出的指令代码);
  • 20位地址加法器(用来产生20位地址):20位地址加法器的数据由段寄存器提供段地址、偏移量
  • 6字节(8088为4字节指令队列缓冲器
两点说明:

① 8086/8088的指令队列分别为6/4个字节,在执行指令的同时,可从内存中取出后续的指令代码,放在指令队列中,可以提高CPU的工作效率。
② 地址加法器用来产生20位物理地址。8086/8088可用20位地址寻址1M字节的内存空间,而CPU内部的寄存器都是16 位,因此需要由一个附加的机构来计算出20位的物理地址,这个机构就是20位的地址加法器。
例如:CS=0FE00H,IP=0400H,则表示要取指令代码的物理地址为0FE400H。

2、执行部件(EU)

功能:负责指令的执行 。

组成:

  • 4个通用寄存器,即 AX、BX、CX、DX ;
  • 4个专用寄存器,即 BP(默认的栈寻址寄存器)、SP(栈顶指针寄存器)、SI、DI ;
  • 标志寄存器 ;
  • ALU(算术逻辑单元) 。
3、BIU与EU的动作协调原则

总线接口部件(BIU)和执行部件(EU)按以下流水线技术原则协调工作,共同完成所要求的信息处理任务:
①每当8086的指令队列中有两个空字节,或8088的指令队列中有一个空字节时,BIU就会自动把指令取到指令队列中。
②每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。
③当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态
④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。

从上述BIU与EU的动作管理原则中,不难看出,它们两者的工作是不同步的,正是这种既相互独立又相互配合的关系,使得8086/8088可以在执行指令的同时,进行取指令代码的操作,也就是说BIU与EU是一种并行工作方式,改变了以往计算机取指令→译码→执行指令的串行工作方式,大大提高了工作效率,这正是8086/8088获得成功的原因之一。

考:试述执行部件EU和总线接口部件BIU的概念,试述执行部件EU和总线接口部件BIU如何配合工作?
==EU是执行部件,主要的功能是执行指令。BIU是总线接口部件,与片外存储器及I/O接口电路传输数据。EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作。

4、8086/8088CPU内部寄存器

8086/8088内部的寄存器可以分为通用寄存器和专用寄存器两大类,专用寄存器包括指针寄存器、变址寄存器等。

  • 通用寄存器
  • 指针寄存器
  • 变址寄存器
  • 控制寄存器
  • 段寄存器
  • 标志寄存器

通用寄存器
4个16位的通用寄存器还可以分成高8位和低8位两个独立的寄存器,这样又形成8个通用的8位寄存器
AX: AH AL BX: BH BL
CX: CH CL DX: DH DL
其中AX称为累加器,BX称为基址寄存器,CX称为计数寄存器,DX称为数据寄存器,这些寄存器在具体使用上有一定的差别,如表1-2所示。
在这里插入图片描述
指针寄存器
两个16位的指针寄存器SP和BP,其中SP是堆栈指针寄存器,由它和堆栈段寄存器SS一起来确定堆栈在内存中的位置; BP是基数指针寄存器,通常用于存放基地址。

变址寄存器
两个16位的变址寄存器SI和DI,其中SI是源变址寄存器,DI是目的变址寄存器,都用于指令的变址寻址方式。

段寄存器
系统中共有4个16位段寄存器,即代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。这些段寄存器的内容与有效的地址偏移量一起,可确定内存的物理地址。通常CS划定并控制程序区,DS和ES控制数据区,SS控制堆栈区。

控制寄存器
IP、标志寄存器是系统中的两个16位控制寄存器,其中IP是指令指针寄存器,用来控制CPU的指令执行顺序,它和代码段寄存器CS一起可以确定当前所要取的指令的内存地址。顺序执行程序时,CPU每取一个指令字节,IP自动加1,指向下一个要读取的字节;当IP单独改变时,会发生段内的程序转移;当CS和IP同时改变时,会产生段间的程序转移。
标志寄存器的内容被称为处理器状态字PSW,用来存8086/8088CPU在工作过程中的状态

标志寄存器
8086/8088内部标志寄存器的内容,又称为处理器状态字PSW。其中共有9个标志位,可分成两类:一类为状态标志,一类为控制标志。
其中状态标志表示前一步操作(如加、减等)执行以后,ALU所处的状态,后续操作可以根据这些状态标志进行判断,实现转移;控制标志则可以通过指令人为设置,用以对某一种特定的功能起控制作用(如中断屏蔽等),反映了人们对微机系统工作方式的可控制性。
在这里插入图片描述
状态标志:6个

  • SF—符号(Symbol)标志位,当运算结果的最高位为1,该标志位置1,否则清0。即与运算结果的最高位相同。
  • ZF—零标志位,运算结果为0时,该标志位置1,否则清0。
  • PF—奇偶标志位(Parity Flag),当运算结果的低8位中l的个数为偶数时,则该位置1,反之为0。
  • CF—进位标志位,做加法时最高位出现进位或做减法时最高位出现借位,该位置1,反之为0。
  • AF—半进位标志位,做字节加法时,当低四位有向高四位的进位,或在做减法时,低四位有向高四位的借位时,该标志位就置1。通常用于对BCD算术运算结果的调整。
  • OF—溢出(overflow)标志位,当运算过程产生溢出时,会使OF为1。

控制标志:3个

  • DF—方向(direction )标志位,若该位置1,则串操作指令的地址修改为自动减量方向,反之,为自动增量方向。
  • IF—中断(interrupt)允许标志位,若该位置1,则处理器可以响应可屏蔽中断,否则就不能响应可屏蔽中断。
  • TF—陷阱标志位(单步标志位、跟踪标志)。当该位置1时,将使8086/8088进入单步工作方式,通常用于程序的调试。
5、8086/8088的总线周期的概念

一个最基本的总线周期有4个状态,即T1状态、T2状态、T3状态和T4状态。
① 在T1状态,CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。
② 在T2状态,CPU从总线上撤消地址,而使总线的低16位浮置成高阻状态,为传输数据作准备。总线的最高4位(A19~ A16)用来输出本总线周期状态信息。
③ 在T3状态,多路总线的高4位继续提供状态信息,而多路总线的低16位上出现由CPU写出的数据或者CPU从存储器或端口读入的数据。
④ 在T3,T4期间,数据在CPU和存储器或I/O端口之间传输。若这两个时钟周期为外部逻辑提供的时间不足以响应访问要求,即数据未准备好,则在T3和T4之间可插入1~n个等待周期Tw来延长总线周期。
⑤ 在T4状态,总线周期结束。
在这里插入图片描述

2.3 8086/8088的引脚信号和工作模式

1、最小模式和最大模式的概念

所谓最小模式,就是系统中只有一个8088/8086微处理器,在这种情况下,所有的总线控制信号,都是直接由8088/8086CPU产生的,系统中的总线控制逻辑电路被减到最少,该模式适用于规模较小的微机应用系统。
最大模式是相对于最小模式而言的,最大模式用在中、大规模的微机应用系统中,在最大模式下,系统中至少包含两个微处理器,其中一个为主处理器,即8086/8086CPU,其它的微处理器称之为协处理器,它们是协助主处理器工作的。
两种工作模式构成两种不同规模的应用系统

  • 最小模式
    构成小规模的应用系统
    8088本身提供所有的系统总线信号
  • 最大模式
    构成较大规模的应用系统,例如可以接入数值协处理器8087
    8088和总线控制器8288共同形成系统总线信号
  • 两种工作模式利用MN/MX引脚区别
    ==MN/MX
    接高电平为最小模式==
    MN/MX*接低电平为最大模式
  • 两种工作模式下的内部操作并没有区别
    IBM PC/XT采用最大模式
    本书以最小模式展开基本原理
    (通常在信号名称加上划线(如:MX)或星号(如:MX*)表示低电平有效)
2、8086/8088的引脚信号和功能

如图所示,是8088CPU的外部结构,即引脚信号图,注意:在不同的工作模式下,其中一部分引脚的名称和功能可能不一致。
8088/8086CPU芯片都是双列直插式集成电路芯片,都有40个引脚,其中32个引脚在两种工作模式下的名称和功能是相同的,还有8个引脚在不同的工作模式下,具有不同的名称和功能。
在这里插入图片描述
外部特性表现在其引脚信号上,学习时请特别关注以下几个方面:
⑴ 引脚的功能:指引脚信号的定义、作用;通常采用英文单词或其缩写表示
⑵ 信号的流向:信号从芯片向外输出,还是从外部输入芯片,或者是双向的
⑶ 有效电平:起作用的逻辑电平高、低电平有效,上升、下降边沿有效
⑷ 三态能力:输出正常的低电平、高电平外,还可以输出高阻的第三态
在这里插入图片描述
分类学习这40个引脚(总线)信号
(1)数据和地址引脚
(2)读写控制引脚
(3)中断请求和响应引脚
(4)总线请求和响应引脚
(5)其它引脚

  • ①VCC 电源,输入,第40脚
    8088/8086CPU采用单一的+5V电压
    GND 接地引脚,第1、20脚
    向CPU提供参考地电平,有两个接地引脚。

  • ② AD15~AD0(Address Data Bus)
    地址/数据复用信号输入/输出引脚,双向工作
    第2~ 16脚分别为AD14~AD0,第39脚为AD15。
    分时输出低16位地址信号及进行数据信号的输入/输出。
    在8088中,高8位地址线实际上不作复用,只输出地址,称为A15~A8。

  • ③A19/s6~A15/s3(Address/Status Bus)
    地址/状态复用信号输出引脚, 输出
    第35~38脚分别为A19/s6∼A15/s3,这些引脚在总线周期的T1状态输出地址的最高4位,在总线周期的T2、T3、Tw和T4状态时,用来输出状态信息
    其中s6为0用以指示8086/8088CPU当前与总线连通;
    s5为1表明8086/8088CPU可以响应可屏蔽中断;
    s4、s3共有四个组态,用以指明当前正在使用哪个段寄存器,如表2.1所示,00—ES,01—SS,10—CS,11—DS。
    在这里插入图片描述
    ④ BHE/S7(Bus High Enable/Status)
    高8位数据允许/状态复用信号输出引脚,输出。
    分时输出有效信号,在T1状态,表示高8为数据线D15~D8上的数据有效;在T2、T3、T4及Tw状态,输出S7 状态信号,但S7未定义任何实际意义。
    利用BHE信号和AD0信号,可知系统当前的操作类型,具体规定见表2.2所示。
    在这里插入图片描述

  • ⑤NMI (Non-Maskable Interrupt)
    非屏蔽中断输入引脚:非屏蔽中断信号是一个由低到高的上升沿。这类中断不受中断允许标志IF的影响,也不能用软件进行屏蔽。每当NMI端进入一个正沿触发信号时,CPU就会在结束当前指令后,执行对应于中断类型号为2的非屏蔽中断处理程序。
    INTR(Interrupt Request)
    可屏蔽中断请求信号,输入,第18引脚:可屏蔽中断请求信号为高电平有效。CPU在执行每条指令的最后一个时钟,周期会对INTR信号进行采样,若CPU的中断允许标志IF为1,并且又接受
    到INTR信号
    , CPU就结束当前指令,响应中断请求,执行一个中断处理
    子程序。

  • ⑥ RD (Read)
    读输出信号,第32脚,输出
    用以指明要执行一个对内存单元或I/O端口的读操作,具体是读内存单元,还是读I/O端口,取决于控制信号M/IO

  • ⑦ CLK(Clock)
    时钟信号输入,第19脚,输入
    时钟信号的方波信号,占空比约为33%,即1/3周期为高电平,2/3周期为底电平,8088/8088的时钟频率(又称为主频)为4.77MHz,即从该引脚输入的时钟信号的频率为4.77MHz。时钟信号为CPU和总线控制逻辑电路提供定时手段。

  • ⑧ Reset (Reset)
    复位信号输入,第21脚,输入电平有效
    8088/8086CPU要求复位信号至少维持4个时钟周期才能起到复位的效果,复位信号输入之后,CPU结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为0FFFFH。当复位信号变为低电平时,CPU从FFFF0H开始执行程序。

  • ⑨ READY(Ready)
    “准备好”信号输入,第22脚,输入,高电平有效
    “Ready”输入引脚,接收来自于内存单元或I/O端口向CPU发来的“准备好”状态信号,表明内存单元或I/O端口已经准备好进行读写操作。该信号是协调CPU与内存单元或I/O端口之间进行信息传送的联络信号

CPU在每个总线周期的T3状态开始对READY信号进行采样。若检测到READY为低电平,则在T3状态之后插入等待状态Tw。在Tw状态,CPU也对READY进行采样,如READY仍为低电平,则会继续插入Tw,直到READY变为高电平后,才进入T4状态,完成数据传送过程。

⑨TEST (Test)
测试信号输入,第23脚,低电平有效
TEST信号与WAIT指令结合起来使用,CPU执行WAIT指令后,处于等待状态,当TEST引脚输入低电平时,系统脱离等待状态,继续执行被暂停执行的指令。

  • ⑩ MN/MX(Minimum/Maximum Model Control)
    最小/最大模式设置信号输入,第33脚
    该输入引脚电平的高、低决定了CPU工作在最小模式还是最大模式,当该引脚接==+5V时,CPU工作于最小==模式下,当该引脚接地时,CPU工作于最大模式下。

在这里插入图片描述
最小模式下的24~31引脚

  • ① INTA(Interrupt Acknowledge)
    中断响应信号输出,第24脚,电平有效
    该引脚是CPU响应中断请求后,向中断源发出的认可信号,用以通知中断源,以便提供中断类型码,该信号为两个连续的负脉冲。第一个负脉冲通知外设的接口,它发出的中断请求已经得到允许;外设接口收到第二个负脉冲后,往数据总线上放中断类型码, CPU便可得到有关中断请求的详尽信息。

  • ②ALE(Address Lock Enable)
    地址锁存允许信号,输出,第25脚,高电平有效
    CPU通过该引脚向地址锁存器8282/8283发出地址锁存允许信号,把当前地址/数据复用总线上输出的是地址信息,锁存到地址锁存器8282/8283中去。注意:ALE信号不能被浮空。

  • ③ DEN(Data Enable)
    数据允许信号,输出,第26脚,电平有效
    为总线收发器8286/8287提供一个控制信号,表示CPU当前准备发送或接收一项数据。

  • ④ DT/R(Data Transmit/Receive)
    数据收发控制信号,输出,第27脚
    CPU通过该引脚发出控制数据传送方向的控制信号,在使用8286/8287作为数据总线收发器时,DT/R信号用以控制数据传送的方向,当该信号为高电平时,表示数据由CPU经总线收发器8286/8287输出,否则,数据传送方向相反。

  • ⑤ M/IO(Memory/Input &Output)
    存储器/ I/O端口选择信号,第28脚,输出
    这是CPU区分进行存储器访问还是I/O访问的输出控制信号。在8086中,当该引脚输出电平时,表明CPU要进行I/O端口的读写操作,低位地址总线上出现的是I/O端口的地址;当该引脚输出低电平时,表明CPU要进行存储器的读写操作,地址总线上出现的是访问存储器的地址。注意:在8088中,该引脚为 ,正好相反。

  • ⑥ WR (Write)
    写控制信号,输出,第28脚,电平有效,
    WR有效时,表示CPU当前正在进行存储器或I/O写操作。与M/IO配合实现对存储单元、I/O端口所进行的写操作控制。

  • HOLD (Hold Request)
    总线保持请求信号输入,第31脚,电平有效
    这是系统中的其它总线部件向CPU发来的总线请求信号输入引脚。

  • HLDA(Hold Acknowledge)
    总线保持响应信号输出,第30引脚,电平有效
    当HELD有效时,表示CPU认可其他总线部件提出的总线占用请求,准备让出总线控制权。同时,所有与三态门相接的CPU的引脚呈现高阻状态,从而让出了总线。

最大模式下的24~31引脚(未整理)

2.4 8086的操作和时序

时序(Timing)是指信号高低电平(有效或无效)变化及相互间的时间顺序关系
CPU时序决定系统各部件间的同步和定时
总线时序描述CPU引脚如何实现总线操作

1、指令周期、总线周期及时钟周期

微机系统的工作,必须严格按照一定的时间关系来进行,CPU定时所用的周期有三种,即指令周期、总线周期和时钟周期。
(1) 指令周期
一条指令从其代码被从内存单元中取出到其所规定的操作执行完毕,所用的时间,称为相应指令的指令周期。由于指令的类型、功能不同,因此,不同指令所要完成的操作也不同,相应地,其所需的时间也不相同。也就是说,指令周期的长度因指令的不同而不同。

(2) 总线周期
我们把CPU通过总线与内存或I/O端口之间,进行一个字节数据交换所进行的操作,称为一次总线操作,相应于某个总线操作的时间即为总线周期。虽然,每条指令的功能不同,所需要进行的操作也不同,指令周期的长度也必不相同。但是,我们可以对不同指令所需进行的操作进行分解,它们又都是由一些基本的操作组合而成的。如存储器的读/写操作、I/O端口的读/写操作、中断响应等,这些基本的操作都要通过系统总线实现对内存或I/O端口的访问的。不同的指令所要完成的操作,是由一系列的总线操作组合而成的,而线操作的数量及排列顺序因指令的不同而不同。
8088的总线操作,就是8088CPU利用总线(AB、DB、CB)与内存及I/O端口进行信息交换的过程,与这些过程相对应的总线上的信号变化的相对时间关系,就是相应总线操作的时序。

总线操作是指CPU通过总线对外的各种操作
8088的总线操作主要有:

  • 存储器读、I/O读操作
  • 存储器写、I/O写操作
  • 中断响应操作
  • 总线请求及响应操作

CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti
描述总线操作的微处理器时序有三级
指令周期 → 总线周期 → 时钟周期

(3) 时钟周期
时钟周期是微机系统工作的最小时间单元,它取决于系统的主频率,系统完成任何操作所需要的时间,均是时钟周期的整数倍。时钟周期又称为T状态。时钟周期是基本定时脉冲的两个沿之间的时间间隔,而基本定时脉冲是由外部振荡器产生的,通过CPU的CLK输入端输入,基本定时脉冲的频率,我们称之为系统的主频率。例如8088CPU的主频率是5MHz,其时钟周期为200ns。一个基本的总线周期由4个T状态组成,我们分别称为T1~T44个状态,在每个T状态下,CPU完成不同的动作。

2、8086/8088微机系统的主要操作

8086/8088微机系统,能够完成的操作有下列几种主要类型

  • 系统的复位与启动操作;
    • 暂停操作;
    • 总线操作;(I/O读、I/O写、存贮器读、存贮器写)
    • 中断操作;
    • 最小模式下的总线保持;
    • 最大模式下的总线请求/允许。
3、典型的8086时序分析

指令所执行的操作,可以分为内部操作和外部操作。不同的指令其内、外部操作是不相同的,但这些操作可以分解为一个个总线操作。即总线操作的不同组合,就构成了不同指令的不同操作,而总线操作的类型是有限的,我们如果能够明确不同种类总线操作的时序关系,且可以根据不同指令的功能,把它们分解为不同总线操作的组合,那么,任何指令的时序关系,我们就都可以知道了。

最小模式下的典型时序
时序如图2-11所示,一个最基本的读周期包含有4个状态,即T1、T2、T3、T4,在存储器和外设速度较慢时,要在T3之后可插入1个或几个等待状态Tw。

8086读周期时序
在这里插入图片描述
T1状态
① 首先M/IO有效,用来指出本次读周期是存贮器读还是I/O读,它一直保持到整个总线周期的结束即T4状态。
②地址线信号有效,高4位通过地址/状态线A19/S6~ A16/S3送出,低16位通过地址/数据线AD15~ AD0送出,用来指出操作对象的地址,即存贮器单元地址或I/O端口地址。
③ALE有效,在最小模式的系统配置中我们讲过,地址信号通过地址锁存器8282锁存,ALE即为8282的锁存信号,下降沿有效
④BHE(对8088无用)有效,用来表示高8位数据总线上的信息有效,现在通过传送的是有效地址信息,BHE常作为地址存贮体的选通信号,因为奇地址存贮体中的信息总是通过高8位数据线来传输,而偶地址体的选通则用A0。
⑤当系统中配有总线驱动器时,T1使DT/R变低,表示本周期为周期,并通知总线驱动器接收数据(DT/R 接收 T)。

T2状态
⑥高四位地址/状态线送出状态信息,S6~S6。
⑦低16位地址/数据线浮空,为下面传送数据准备。
⑧BHE/S7引脚成为S7 (无定义)。
⑨RD有效,表示要对存贮器/I/O端口进行读。
⑩DEN有效,使得总线收发器(驱动器)可以传输数据(DEN 接收 OE )。

T3状态
在基本总线周期的T3状态,内存单元或者I/O端口将数据送到数据总线上,CPU通过AD15~AD0接收数据。

Tw状态
若存贮器或外设速度较慢,不能及时送上数据的话,则通过READY线通知CPU,CPU在T3的前沿(即T2结束末的下降沿)检测READY,若发现READY=0,则在T3结束后自动插入1个或几个Tw,并在每个Tw的前沿处检测READY,等到READY变高后,则自动脱离Tw进入T4。

T4状态
在T4与T3(或Tw)的交界处(下降沿),CPU对数据总线进行采样,从而获得数据,并使各控制及状态线进入无效 。

8086写周期的时序
在这里插入图片描述T1状态
基本上同读周期,只有此时DT/R为高不是低。

T2状态
与读周期有两点不同:
(1) RD变成WR;
(2) A15~A0不是浮空,而是发出要写入存储器或IO端口的数据

T3状态
在T3状态,CPU继续提供状态信息和数据,并且继续维持WR、M/IO及DEN信号为有效电平。

Tw状态
若CPU在T3状态的一开始未收到“准备好”信号,那么,会在状态T3和T4之间插入1到n个Tw,直到在某个Tw的前沿处,CPU采样到“准备好”信号后为止

T4状态
在T4状态,CPU认为存储器或I/O端口已经完成数据写入,因而,数据从数据总线上被撤除,各控制信号线和状态信号线也进入无效状态。此时,DEN信号进入高电平,从而使总线收发器不工作

最大模式下的典型时序(未整理)

2.5 中断操作和中断系统

1、中断的分类

中断源:引起中断的原因或发出中断请求的设备称为中断源。
8086/8088为每个中断源分配了一个中断类型码,其取值范围为0~255,即可处理256种中断。其中包括软件中断,系统占用的中断以及开放给用户使用的中断。
从产生中断的方法来分,这256种中断可以分为两大类:一类叫硬件中断;一类叫软件中断
(1)硬件中断
即通过外部的硬件产生的中断,如打印机、键盘等,有时也称为外部中断。硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。
不可屏蔽中断:由NMI引脚引入,它不受中断允许标志的影响,每个系统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。这种中断一旦发生,系统会立即响应;
可屏蔽中断:由INTR引脚引入,它受中断允许标志的影响,也就是说,只有当IF=1时,可屏蔽中断才能进入,反之则不允许进入,可屏蔽中断可有多个,一般是通过优先级排队,从多个中断源中选出一个进行处理。

(2) 软件中断(内部中断)
即CPU根据软件中的某条指令或者对标志寄存器中某个标志的设置而产生,它与硬件电路无关,常见的如除数为0引起的中断,或用INT n指令产生的中断。
在这里插入图片描述

2、中断向量和中断向量表

系统处理中断的方法很多,处理中断的步骤中最主要的一步就是如何根据不同的中断源进入相应的中断服务子程序,目前用的最多的就是向量式中断。

中断向量:把各个中断服务子程序的入口都称为一个中断向量;每个中断类型对应一个中断向量。

中断向量表:将这些中断向量按一定的规律排列成一个表,就是所谓的中断向量表,当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。

8086/8088中断系统中的中断向量表是位于0段的0~3FFFH的存贮区内,每个中断向量占四个单元,其中前两个单元存放中断处理子程序的入口地址的偏移量(IP),低位在前,高位在后;后两个单元存放中断处理子程序入口地址的段地址(CS),也是低位在前,高位在后,整个中断向量的排列是按中断类型号进行的。

图示给出了中断类型码与中断向量所在位置之间的对应关系。其中00H~04H为专用中断,05H~3FH为系统保留中断,用户一般是不能对它们定义的(这里面有一些为固定的用途,如INT 21H即为MS-DOS 的系统调用),40~FF为用户定义的中断。
在这里插入图片描述
在这里插入图片描述
中断类型号*4即可计算某个中断类型的中断向量在整个中断向量表中的位置。如类型号为20H,则中断向量的存放位置为20H*4=80H,(设中断服务子程序的入口地址为4030:2010,则0000:0080H~0000:0083H中就应顺序放入10H、20H、30H、40H。当系统响应20H号中断时,会自动查找中断向量,找出对应的中断向量装入CS、IP,即转入该中断服务子程序。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值