第二章 16位微处理器(Pro)

目录

考点1:功能结构类型、寄存器结构的类型

                一、功能结构特点

考点2:8088CPU引脚及功能

$”引脚“$

$8088和8086区别$

8086和8088引脚的注意事项

功能、类型:        A0~A19,D0~D7,ALE,BHE

工作电平               高低电平 ,高阻(无效),沿触发<上升沿   下降y

分时复用

工作模式     最大工作模式     最小工作模式

方向       单入,单出,双向

三态

考点3: 8088/8086CPU工作模式及配置

最小工作模式:

考点4:8088/8086CPU操作时序

1、周期的5个名词

8086  I/O读总线周期​编辑

①从T1~T4 I/O有效,CPU访问外设的接口由②决定,而不是主存

A0到A19  20根地址线 :在T1  200ns 时期 ③ 传送的是地址信号(A0~A15)④ 在访问I/O时  高4位 的地址线无效

T1状态 

T2状态

T3状态

T4状态

READY 

8086存储器读总线周期

不同指令的总线周期

考点5:中断相关概念考点

1中断类型

④三类中断主要区别于: 如何获取中断类型码                     共同之处:通过中断类型码,从中断向量表中获取(中断服务程序的入口地址(中断向量  CS:IP  分别是 字数据 ))

2什么是中断源?识别中断源有哪些方法?

识别中断源的方法:向量中断 中断向量号 通过8259中断控制器给了CPU,拿到中断类型号之后,由中断类型号NX4 nX4 佐移两位 这个数值找到的是内存中断向量表中的一个地址,在从内存单元的地址中,取出两个字,分别给CS:IP 这种就是向量法 中断向量就是子程序的入口地址

3什么是中断类型码、中断向量、中断向量表?

中断类型码:

中断向量

中断向量表

4中断优先级

5中断嵌套

6中断过程

中断响应的步骤

6考点:流水线技术,流水线的管理

 总结

    掌握8088/8086CPU的结构和引脚的功能。

     掌握8086/8088CPU寄存器的组成及应用。   掌握8086/8088CPU的引脚构成,理解其功能、

   特性掌握计算机系统中断的相关知识。    

考点1:功能结构类型、寄存器结构的类

 一、功能结构特点

  1. BIU(Bus Interface Unit)

    • BIU负责与内存和其他外部设备之间的数据传输和通信。它包括地址生成和总线控制单元,用于从内存中读取指令数据以供CPU执行。
    • BIU的主要任务包括指令的取指、将指令和数据加载到CPU内部的寄存器中,以及将执行结果写回内存或其他设备。
    • BIU通常包含一个地址寄存器和一个数据寄存器,用于在内存和CPU之间传输数据。
  2. EU(Execution Unit)

    • EU负责执行CPU内部的指令。它包括算术逻辑单元(ALU)和寄存器文件,用于进行算术和逻辑运算,并存储中间和最终的执行结果。
    • EU的主要任务包括执行指令,进行数据运算,控制程序的流程(通过分支和跳转指令),以及将结果存储到寄存器文件中。

        这两个部件在流水线方式下可以并行工作,以提高CPU的性能和效率。在一个时钟周期内,  BIU可以取指令,同时EU可以执行前一个周期取得的指令。这种并行工作方式可以充分利用总线和CPU内部的资源,加速指令的执行。

总的来说,BIU和EU之间的协调是通过流水线方式来实现的,它们可以同时执行不同的任务,从而提高了CPU的工作效率。这种并行处理有助于加快计算机的运行速度。


88/86由6个状态位3个控制位组成

  1. CF(进位标志位)

    • CF=1:表示运算结果需要进位,通常出现在无符号数的加法操作中。
  2. OF(溢出标志位)

    • OF=1:表示有符号运算结果产生了溢出,通常出现在有符号数的加法或减法操作中。
  3. ZF(零标志位)

    • ZF=1:表示运算结果零。
    • ZF=0:表示运算结果不为零。
  4. SF(符号标志位)

    • SF=1:表示运算结果为负数。
    • SF=0:表示运算结果为正数。
  5. PF(奇偶标志位)

    • PF=1:表示运算结果中1的个数为偶数。
    • PF=0:表示运算结果中1的个数为奇数。
  6. AF(调整标志位)

    • AF=1:表示低4位向高4位产生进位。
    • AF=0:表示没有产生进位借位。
  7. DF(方向标志位)

    • DF=0:表示地址递增,从低地址向高地址处理数据。
    • DF=1:表示地址递减,从高地址向低地址处理数据。
  8. IF(中断允许标志位)

    • IF=0:禁止其他可屏蔽中断,CPU不响应中断请求。
    • IF=1:允许处理可屏蔽中断,CPU可以响应中断请求。
  9. TF(跟踪标志位)

    • TF=0:8086 CPU处于正常状态,指令连续执行。
    • TF=1:8086 CPU处于单步状态,每执行一条指令后暂停,用于调试目的。

这些标志位对于程序的控制和调试非常重要,程序员可以根据这些标志位的状态来决定下一步的操作,例如,进行条件分支或处理中断请求。

有关8086/8088 CPU体系结构说法正确的是(B)

        A.EU和BIU完全相同

        B.EU相同,BIU不同

        C.EU不同,BIU相同

        D.EU和BIU完全不同

在80868088 CPU体系结构中,EU(Execution Unit,执行单元)是相同的,它负责执行指令。但是,BIU(Bus Interface Unit,总线接口单元)在80868088之间是不同的,它们在处理外部总线访问和数据传输方面有所不同。
8086/8088CPU的EU部件中,标志寄存器共有16位,其中7位可以使用。(判断) X

8086/8088 CPU的标志寄存器共有16位,其中只有6位用于标志位

8086/8088 CPU的标志寄存器共有16位,其中只有6位用于标志位,而不是7位。这6个标志位是:

CF(Carry Flag):进位标志位。
PF(Parity Flag):奇偶标志位。
AF(Adjust Flag):调整标志位。
ZF(Zero Flag):零标志位。
SF(Sign Flag):符号标志位。
OF(Overflow Flag):溢出标志位。
这6个标志位用于控制和记录CPU的运算状态和执行结果。它们的状态可以影响程序的执行路径和条件分支。所以,虽然标志寄存器有16位,但只有6位用于标志位。
下列4个寄存器中,不允许用传送指令赋值的寄存器是()

A.CS B.DS C.ES D.SS)


不允许用传送指令赋值的寄存器是 CS(Code Segment Register,代码段寄存器)。

 CS 寄存器用于存储当前执行的代码段的起始地址,它通常由 CPU 来自动管理,并且不能被通常的数据传送指令赋值。CS 寄存器的值是由操作系统加载的程序决定的,用于指示 CPU 执行哪个代码段。

DS(Data Segment Register,数据段寄存器)、ES(Extra Segment Register,附加段寄存器)和SS(Stack Segment Register,堆栈段寄存器)都可以用传送指令进行赋值,以指定数据段、附加段和堆栈段的起始地址。这些寄存器用于访问不同的内存段,可以通过合适的指令来修改它们的值。
堆栈指针SP的内容是(B)

A.栈顶单元内容 B.栈顶单元地址 c.栈底单元内容 D.栈底单元地址


堆栈指针(Stack Pointer,SP)的内容是:

B. 栈顶单元地址

SP 寄存器通常包含指向当前堆栈顶部元素的地址,它指向堆栈中最新的数据。当数据被推入(压栈)或弹出(出栈)堆栈时,SP 寄存器的值会相应地增加或减少,以反映堆栈的状态。所以,SP 的内容是栈顶单元的地址。

8086CPU从功能上可分为哪两部分?它们的功能分别是什么?

  1. EU(Execution Unit,执行单元):EU负责执行指令。它包括算术逻辑单元(ALU)和寄存器文件。EU的功能包括:

    • 执行算术和逻辑运算,如加法、减法、乘法、除法、位运算等。
    • 控制数据的传输和存储,包括从内存读取数据、将数据写回内存以及存储在寄存器中。
    • 执行条件分支和跳转指令,以控制程序的流程。
    • 处理中断和异常,响应外部事件。
  2. BIU(Bus Interface Unit,总线接口单元):BIU负责处理与外部总线和内存的通信。它的功能包括:

    • 从内存中获取指令和数据,以供EU执行。
    • 控制地址生成,确定要访问的内存位置。
    • 处理与外部设备的I/O操作。
    • 管理指令队列和缓存,以提高指令的获取效率


      这两个部分协同工作,使8086 CPU能够执行指令并与外部设备和内存进行通信。EU执行指令的操作,而BIU负责获取指令和数据,以及处理与外部设备的数据交换。通过这种方式,8086 CPU能够执行复杂的计算任务并与外部环境进行数据交互。
1.8086/8088数据总线条数是(AA. 16 B. 32 C. 20 D. 82.



8086/8088处理器的数据总线宽度为16位。
2.CPU内指令队列的工作方式是() 
A.先进先出
B.先进后出
C. 随机 
D.循环

A. 先进先出

CPU内指令队列通常采用先进先出(FIFO)的工作方式。这意味着最先进入队列的指令将首先被取出并执行,而最后进入队列的指令将最后被执行。这种方式确保了指令的顺序性和一致性。
3. 计算机CPU内通用寄存器的位数等于() A. 16 B. 32C. 64D. 计算机机器字长

D. 计算机机器字长

通用寄存器的位数通常与计算机的机器字长相对应。例如,如果计算机的机器字长是32位,那么通用寄存器的位数也通常是32位。

这些引脚和状态线的组合允许8088微处理器与外部设备和内存进行通信,并执行读取和写入操作。引脚的状态和功能对于编程和连接外部设备非常重要。

考点2:8088CPU引脚及功能

8088引脚的基本功能

8088微处理器是一款8位微处理器,具有多种引脚,每个引脚具有不同的功能。以下是一些8088微处理器引脚的功能解释:

  • AD0-AD7(Address/Data Lines 0-7):这是8位的数据总线,用于传输数据和地址信息。

  • AD0-AD19(Address/Data Lines 0-19):AD0到AD19是20位的地址总线,用于传输内存和外设的地址信息。

  • A16-A19(Address Lines 16-19):这是高4位的地址线,与AD0到AD19一起用于寻址内存和外设。

  • S3、S4、S5、S6(Status Lines):这些引脚用于传输状态信息。

    • S3和S4表示当前正在使用的段寄存器。
    • S5表示开关中断的状态。
  • A16/S3、A17/S4(Address Lines/Status Lines):这些引脚分时复用,既可以用作地址线,也可以用作状态线。

  • A16-A19/S3-S6(Address Lines/Status Lines):高4位的地址线A16到A19和S3到S6引脚分时复用,可用于地址传输和状态传输。

  • RD(Read)和WR(Write):这些引脚用于控制读取和写入操作。

    • RD(32号引脚)表示读命令。
    • WR(29号引脚)表示写命令。
  • M/IO(Memory/Input-Output):这是一个控制引脚,用于指示处理器当前访问的是主存储器还是I/O设备。

    • 当M/IO为0时,表示正在访问主存储器。
    • 当M/IO为1时,表示正在访问I/O设备。
  • 8086/8088系统中,对存储器进行写操作时,CPU输出控制信号有效的是(M/WR=1

    A.M/IO=0, WR=0   B.M/10=0, WR=1
    C. M/10=1, WR=0  D. M/10=1, WR=1

  1. 8086最小工作模式下,决定CPU最终接受或发送数据的引脚是__DT/R__
    
    当DT/R#引脚为低电平时,表示CPU要发送数据,即将数据传输到外部设备或内存。
    当DT/R#引脚为高电平时,表示CPU要接收数据,即从外部设备或内存中读取数据。
    因此,DT/R#引脚是在最小工作模式下决定数据传输方向的关键引脚。这个引脚通过与外部总线连接,用于控制数据的流动。
  2. 8086中,ALE信号的功能是_____地址锁存器___
    
    
    在8086微处理器中,ALE代表的是"Address Latch Enable",即地址锁存使能信号。它的主要功能是在8086 CPU将地址信息输出到地址总线上时,通过使能外部设备的地址锁存器(Latch),确保地址信号在总线上稳定。ALE信号在8086的机器周期中的T1时钟脉冲期间被激活,以允许外部设备捕获地址信号。
    
    具体来说,ALE信号在每个机器周期的T1期间,将地址信息放置在地址总线上,然后在T2期间将数据放置在数据总线上。这个过程有助于外部设备准确地捕获地址信号,以便执行相应的操作,如内存读取或写入。
    
    所以,ALE信号的主要功能是在8086微处理器和外部设备之间协调地址和数据的传输,确保在合适的时间捕获地址信息。非常抱歉之前的错误回答,希望这次能够解释清楚。

    ”引脚“

    CPU引脚分成三类系统总线信号:

                8088: 8位数据线:D0~D7

                8086:16位数据线:D0~D15

        20位地址线:A0~A19

        控制线:RD,WR

        INTR NMI ,ready reset入

        可 非 clk

$8088和8086区别$

两种CPU完全兼容,主要区别:

(1)数据总线位数的差别:

8088 : 88086:16

2)指令队列容量的差别:

8088为4字节, 8086为6字节

(3)引脚特性的差别:

① AD15~AD0的定义不同:

②34号引脚的定义不同:8086为 BHE

③28号引脚的相位不同:在8086中为 M/IO

而在8088中被倒相,改为 `IO/M`

8086和8088引脚的注意事项

NMI通常被视为比一般可屏蔽中断更为紧急的中断类型,因为它们用于处理系统的关键错误或故障。处理NMI通常需要采取特殊的措施,以确保系统的稳定性和可靠性。通常,NMI中断处理程序会记录错误信息,然后尝试恢复系统的稳定状态或采取适当的措施来应对错误。

协处理器8087的异常状态中断:协处理器8087是用于浮点运算的协处理器,当它检测到异常状态(如被零除或溢出)时,可以触发NMI中断。这有助于操作系统或应用程序处理浮点运算错误。

  1. A0~A19(Address Lines 0-19)

    • 功能:这些引脚用于传输地址信息,共有20位地址总线。
    • 类型:输出引脚。
  2. D0~D7(Data Lines 0-7)

    • 功能:这是8位的数据总线,用于传输数据。
    • 类型:双向引脚。
  3. 请注意,不同的引脚可能在不同的上升沿或下降沿触发,具体取决于CPU的时钟和时序要求。正确理解和连接这些引脚对于构建和操作8086和8088系统至关重要。

  4. ALE(Address Latch Enable)

    • 功能:ALE引脚用于在时钟信号的上升沿时锁定地址线上的地址,以便外部设备捕获地址。
    • 类型:输出引脚。
  5. BHE(Bus High Enable)

    • 功能:BHE引脚用于指示数据总线的高字节有效。当BHE为低电平时,D8~D15(数据线的高8位)有效。
    • 类型:输出引脚。
  6. RD(Read)

    • 功能:RD引脚用于控制读取操作。当RD为低电平时,表示要执行读取操作。
    • 类型:输出引脚。
  7. WR(Write)

    • 功能:WR引脚用于控制写入操作。当WR为低电平时,表示要执行写入操作。
    • 类型:输出引脚。
  8. M/IO(Memory/Input-Output)

    • 功能:M/IO引脚用于指示处理器当前访问的是主存储器还是I/O设备。
    • 类型:输出引脚。
  9. S3、S4、S5、S6(Status Lines)

    • 功能:这些引脚用于传输状态信息,如段寄存器的选择、中断允许等。
    • 类型:输出引脚。
  10. INTA(Interrupt Acknowledge)

    • 功能:INTA引脚用于确认外部中断请求。当中断被响应时,外部设备将通过INTA引脚通知CPU。
    • 类型:输入引脚。
  11. TEST(Test)

    • 功能:TEST引脚用于在测试模式下控制CPU的操作。
    • 类型:输入引脚。
  12. CLK(Clock)

    • 功能:CLK引脚接收时钟信号,驱动CPU的时钟。
    • 类型:输入引脚。
  13. RESET(Reset)

    • 功能:RESET引脚用于复位CPU,将CPU恢复到初始状态。
    • 类型:输入引脚。
  14. 三态
     

    NMIINTR
    名称非屏蔽中断请求信号可屏蔽中断请求信号
    中断类型外中断外中断
    中断类型号2型由外设提供n
    IF无关IF=1 开   IF=0关
    触发方式边沿(上升沿)高电平有效
    响应信号INTA
    响应条件当前啊指令执行结束开中断、指令结束

    系统板的RAM奇偶校验错误:如果系统板的RAM读写时发生奇偶校验错误,这被视为一个严重的硬件问题,可以触发NMI中断。RAM的奇偶校验错误可能意味着RAM模块损坏或其他硬件故障
    I/O通道中的扩展选项奇偶校验错误:当I/O通道中的扩展选项出现奇偶校验错误时,也可以触发NMI。这可能表明与外部设备通信时出现了错误或通信故障。

8086CPU有两种外部中断请求线,它们分别是( )
A.NMI和INTR

B.NMI 和ALE

C.NMI和HLDA

D.INTR和ALE


8086 CPU有两种外部中断请求线,它们分别是 A. NMI 和INTR。 

NMI(Non-Maskable Interrupt,不可屏蔽中断)是一种不可被屏蔽的外部中断请求,通常用于处理重要的系统级故障或紧急情况。

INTR(Interrupt Request,可屏蔽中断请求)是一种可被屏蔽的外部中断请求,可以被CPU屏蔽或允许,用于处理常规的外部中断事件。所以选项A是正确的。

选项B、C和D中提到的ALE和HLDA不是外部中断请求线。
  1. 关于8088/8086系统,NM非屏蔽中断引脚叙述不正确的是( )

    A.非屏蔽中断信号是一个由低到高的上升沿

    B.该类中断受中断标志IF的影响

    C.该类中断不受中断标志IF的影响

    D.该类中断不可通过程序设置

实际上,非屏蔽中断(NMI)受中断标志IF的影响。IF为1时,允许NMI中断,IF为0时禁止NMI中断。
  • 考点3: 8088/8086CPU工作模式及配置

    工作模式设置:MN/MX

    最小工作模式:

    ① 系统中只有一个8086(8088)微处理器。 //8283 8256 8284 不是一个部件,而是辅助作用

    ② 最小模式是单处理器系统。

    ③系统中所需要的控制信号全部由8086(或8088)CPU本身直接提供。如图:

     最大工作模式

  • 系统中有两个两个以上的微处理器,除了主处理器8086(或8088)以外,

    还有协处理器(8087算术协处理器或8089输入/输出协处理器)。

  • 最大模式可构成多处理器系统,系统中所需要的控制信号由总线控制器8288,8289总线仲裁器提供。

    最大模式可构成多处理器系统,系统中所需要的控制信号由总线控制器8288,8289总线仲裁器提供。

    Intel8088的引脚MN/MX接地,则工作于( 最大)工作模式。

  • 8086有最小和最大两种工作模式,最大模式的特点是(A B D) 
    
    A. 需要总线控制器8288 
    
    B. 由编程进行模式设定 
    
    c. 不需8286收发器 
    
    D. CPU提供全部的控制信号
    ​​​​​​​8086有两种工作模式,最大工作模式的特点是
    A.系统中只能接1个DMA控制器          
    
      B.对存储器的寻址空间可扩大为64MB
    
    C.对存储器的寻址空间可扩大为16MB     
    
     D. 需要总线控制器
    
    
    8086微处理器有两种工作模式:最小工作模式和最大工作模式。最大工作模式的特点是:
    
    B. 对存储器的寻址空间可扩大为64MB。
    
    最大工作模式允许8086微处理器寻址更大的物理内存,最大可达64MB,而最小工作模式的地址空间最大为1MB。
    
    选项A是不正确的,因为系统中可以接多个DMA控制器,不仅限于1个。
    
    选项C也是不正确的,因为最大工作模式下的地址空间可扩大到64MB,而不是16MB。
    
    选项D没有提及最大工作模式需要总线控制器,因此这个选项不太清楚,但总线控制器(如8288)通常在最大工作模式下使用以协调总线操作。

最小模式下的HOLDHLDA信号支持DMA工作;

最大工作模式的RQo/1/GTo/1信号支持连接8087和8089,实现总线的请求和响应。

串讲

88/86复位后 CS=FFFFH IP=0000H

程序入口 在 0FFFF0 处

 

考点4:8088/8086CPU操作时序

1、周期的5个名词

时钟周期
             CLK:由8284时钟信号提供
             它是最小周期

总线周期

基本总线周期的 4个T周期
对存储器或者IO端口进行一次读/写周期的过程

根据主频计算总线周期:  用时钟周期分之1  X 4  =

指令周期
     
工作步骤:取指令,分析译码,执行指令,传送数据

等待周期

空闲周期

  CLK:由8284时钟信号提供

 2reset复位后过一个clk周期,在clk上升沿的时候开始复位
3当reset高电平时启动  内部reset 信号有效由低变高
4在过了一个CLK周期后所有三态线处于高阻(浮空)

 RESET

复位请求,输入高电平有效
该信号有效,将使CPU初始化
80//88复位后   CS=FFFFH  (置一) IP=0000H,所以程序入口在物理地址0FFFF0H位置处

CS:IP:指令地址 {INT           CALL}               保护断点(CS:IP)

执行1条指令地址:CS:IP=FFFH:0000H得出FFFF0H
 

在复位后由于标志寄存器的各位均被清零,使IF=0,处于关中断状态,8086/8088CPU不能响应可屏蔽的中断请求。NTR因而在系统程序的初始化时,用指令TI使f标志寄存器中的IF=1,以使CPU能够响应可屏蔽中断请求。IMIR

8088系统中,对存储器进行续操作时,CPU输出控制信号有效的是(C)

A. IO/M= 0,RD = 0
B. IO/ M =1,RD=0
C. IO/M = 0,RD=1
D. IO/M=1,RD =0

8086  I/O读总线周期

从T1~T4 I/O有效,CPU访问外设的接口由②决定,而不是主存

A0到A19  20根地址线 :在T1  200ns 时期 传送的是地址信号(A0~A15)
在访问I/O时  高4位 的地址线无效

⑤ 在T1时期将要结束时,ALE由高变低(下降沿在① T1T2交互时就进入了ALE
拉入 D信号 (从内存读的数据)进入T4时 数据开始卸载(CPU就收到了从内存发出的数据)

⑦ 传状态 (由地址的高4位 转换成状态4位)
⑧ 
T2开始读数据 ,发读命令 的从I/O接口(端口)把数据送到数据总线
⑨  整个  READY都是高电平 无需接入等待周期   
        READY=1   准备好


T1的时候地址有效 T2到T4数据有效 RD 从T2开始有效

 从T1到T4  M 有效

在访问  M时 ,20根地址线都有效

在T1时期快结束时,ALE由高变低(下降沿)在ALE连到8282、373上  {门打开(地址锁存器允许) 门打开后 20位地址线,准备锁入地址锁存器,在 T1T2交互时就被所入了ALE中}

传状态(由 地址4位,转换到 状态4位)
_________________________________________________________________________

T1时间的引脚的各自动作,在t1的时候 io/m cpu对内存进行操作 MOV取的东西一定在内存 IN指令在CPU 在T1的时候,最高位A19到最低位A0

ALE出现正脉冲,高电平有效,当它由高变低的这个瞬间,由有效变为无效,地址锁入,地址锁存器 读开始变低,说明数据收发器处于接受状态

T1状态 

         用M/IO信号指出当前执行的读操作是读    M 还是  IO
        CPU发出 20位地址线(A19~A0)信息,BHE和ALE有效,在ALE信号  下降沿 将20位地址和BHE信号锁入  锁存器 8282.  

T2状态

        S6~S3状态信号有效,保持到读总线周期结束

AD15~AD0为高阻态,为读数据做准备
RD有效,送  M 或  IO  ,开始读取数据
DEN有效    ,启动收发器 8286,准备接数据

T3状态

在基本总线周期中,数据准备好,在T3状态时期将数据放到数据总线上,在T3结束时,从AD15~AD0

T4状态

CPU对数据总线进行条样,读取数据

READY 

总线操作周期中:Ready=1,外设就绪,cpu继续读写
                              ready=0,cpu将插入等待周期          (M/IO)未准备就绪

8086存储器读总线周期

已知 DS=2000H,BX=0100H, (20100H) =56H,执行指令MOV AL[BX]

    AL=56H

①取指令 MOV

②取操作数周期

 {

①T1:PA=20100h   (20100)_D0_D7_AL

②T2:RD

③T3:CPU  D0-D7 运输

④ (20100H)————AL(CPU)-----------------------------------------------------------------------------------

已知DS=2000H,BX=0100H,(20100H)=56H

① io、m变低,CPU将对内存进行操作

②A19~A0上出现地址信号, 0010 0000 0001 0000 0000

③ALE出现,正脉冲信号

④DT/R变低,数据收发器处于接收状态

⑤A19~A16上出现状态信号 S6S5S4S3=0      IF=0,   使用  DS

⑥AD7~AD0变高阻状态

RD   变低,cpu将进行  读操作

⑧DEN变低,允许数据收发器进行数据传送

 ⑨AD7~AD0,上出现数据信号     56H=101 0110

从第9个动作时 就进入了T3 地址数据复用线,开始传递数据信号,20100单元的内容,才进入了数据总线

 10‘RD变高,CPU从数据线上读数据,数据56H读到AL中B

11。DEN变高 数据从收发器与总线断开AD0_AD7,变高阻态,都周期结束

到T4的时候 读信号由低变高说明,读信号结束了

———————————————————————————————————————————

不同指令的总线周期

    8088
                MOV AL,[0100]       ;
                                                ①取指令   (读信号)

                                                ②取操作数  (T1~T4)读信号

                MOV [0100],AX        ;

                                                ①取指令          (读信号)

                                                ②取被加数

                                                ③存 和 周期    (写信号)
                INC AL                    ;

                                                ①取指令

                                                ②分析译码执行   (AL+1给了AL) CPU内没有启用总线

                INC Byte PTR [0100H];

                                                ①取指令

                                                 ②取数(0100H)——CPU

                                                ③送结果到内存0100H

________________________________________________________________________

如果是8088系统,要取一个字节 , 从0100H取一个字节 包括第一个周期叫做取指周期, 第二个周期叫做取操作数的时间

INC 加一指令 第一步 取指令 第二步 分析译码执行 AL 直接 加1给了AL 因为 AL在CPU内,没有启动总线

INC只需要一个取指周期 INC Byte ptr [0100H] 操作数在主存中 把内存中的0100中的内容拿过来,取数,取0100中的数,当做被加数,加完了再送结果,加一指令

了解,不做重点

        

 WR写操作有改变,写的时候,和它一起进行改变的有 DT/R 写M的话就用从低向高的那条线

read中间有低的时候,所以就要在T3到T4之间,添加一个等待周期

BHE在这个图上,因为是86的结构 A0用于控制内存单元的偶地址 BHE用于控制内存单元中的奇地址 BHE随着A16到A19一起锁。A16到A19走的是高,BHE走的是低

从2000单元说明是对准好的字 从2001单元说明是未对准的字

2000需要一个 总线周期 2001 需要两个总线周期 访问偶地址和奇地址由指令功能来决定

考点5:中断相关概念考点

中断,中断源,中断向量,中断向量表

中断类型

屏蔽中断(INTR):由中断源(8259)提供中断类型码(也称向量号,类型号)

                                   中断响应会 受到  IF的控制

②非屏蔽中断(NMI):由类型码  2  由  硬件  预先规定

                                   无需执行 INTA , 总线周期

                                    不受IF的控制
————————————————————————————————————————————

终端类型码 也称中断类型号,也称中断向量号

INTR是由中断源把中断类型号给了8259——传给CPU

NMI的中断类型码 2号

③内部中断(软件中断):中断类型码由  指令码   给定  预先规定。无需执行INTA  
                                        不受IF的控制;除单步中断外,其他内部中断的
                                        优先级高于外部中断
————————————————————————————————————————

INT 21H 这条指令是 DOS功能调用中断 21H就是中断类型号 内中断大于NMI大于INTR大于单步中断
入口地址也称中断向量用CS:IP来表示,这是一堆寄存器,他表明的是指令地址, 子程序入口地址 入口地址叫做中断向量
内>NMI>INTR>单步中断     

④三类中断主要区别于: 如何获取中断类型码
                     
共同之处:通过中断类型码,从中断向量表中获取(中断服务程序的入口地址(中断向量  CS:IP  分别是 字数据 )

简述8086微机系统中硬件中断软件中断的区别

①硬件中断由硬件产生,通过INTR和NMI引脚发送给CPU

    软件中断由软件的中断或其他异常产生

②硬件中断的中断信号由中断控制器提供

    软件中断的中断信号在指令中提供或隐含不需要中断控制器

③硬件中断具有随机性

   软件中断具有确认性

④大部分硬件需要CPU发送请求信号,软件中断不需要

⑤硬件中断除NMI之外均可以屏蔽,软件中断不能屏蔽(IF无关)

——————————————————————————————————————

硬件中断 硬件产生,直接连到CPU上 软件中断,也叫内中段
外中断叫做故障 内中断叫做异常
软件中断不需要响应

2什么是中断源?识别中断源有哪些方法?

① 引起中断的原因或发出中断申请的来源,称为中断源

②识别方法
                ①每个中断源都有一条 中断请求信号线,且固定一个中断服务程序的入口地址,cpu一旦检测到某条信号线有中断申请,就进入相应的中断服务程序

                ②中断向量  ,使用向量中断系统的中断源,除了能输出中断请求信号外,还能再cpu响应了他的中断请求后 ,输出一个中断向量,cpu能够根据这个中断向量能够获取该中断源程序的入口地址,从而为其服务
                (88/86:中断向量号—8259—cpu——nx4(左移四位)——地址——(单元)——取两个字(CS:IP))

识别中断源的方法:向量中断 中断向量号 通过8259中断控制器给了CPU,拿到中断类型号之后,由中断类型号NX4 nX4 佐移两位 这个数值找到的是内存中断向量表中的一个地址,在从内存单元的地址中,取出两个字,分别给CS:IP 这种就是向量法 中断向量就是子程序的入口地址

3什么是中断类型码、中断向量、中断向量表?

中断类型码:

        为区别不同类型的中断,系统为每个中断源设置编号,共 0~255 用n来表示

中断

中断向量

中断向量表

用以存放中断服务程序入口地址的内存空间

中断向量表地址

中断向量在中断向量表中的位置。在8086系统中 nx4——向量标的入口,从此处读出4字节内容既为中断向量


—————————————————————————————————————————

容量1k字节 它的首单元地址 是从 0层段到 03FFH(地址范围) 总共256个中断向量 要占用1k的房间 占用的是 cs:ip(中断向量)1个中断向量是4个字节(一个字是两个字节)总共是 256X4=1k字节


画图部分 末地址是0000H:03FFH 首地址是0000H:0000H 4个单元放的是0型中断 另外4个放的是1型中断


公式:中断类型号X4就得到了中断向量表的表地址 DOS中断21H 的表地址 21HX4=84H


如果想取出 50 40 30 20 当N=1时,表地址1下=0004H CS:IP 2030H:4050H 这时,0004H就是一号中断的入口地址(中断向量)

4中断优先级

软件中断

        除法错中断       0型

        指令中断           N型

        断点中断           3型
        溢出中断           4型

非屏蔽中断               2型

可屏蔽中断               

单步中断                    1型
 

软件中断优先级要高于外部中断
软件中断中有一个单步中断比较特殊
除法错中断 也就是0型中段
指令中断 是 n型中断
非屏蔽中断 2型

在可屏蔽中断 又分为4种 由8259的8个中断请求输入端 由0到7由高到低的形式
外中断的可屏蔽中断的优先级方式 : IR0~IR7
①全嵌套方式
②特殊嵌套
③优先级自动循环方式
④优先级特殊循环方式

5中断嵌套

1定义

        系统正在执行一个中断服务时,另一个优先级更高的中断提出中断请求,会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。
——————————————————————————————————

cpu的优先级最低,如果有外部内部中断请求,cpu就要放下执行中的
高等级中断发生时可以打断较为低级的中断服务程序处理完高级中断后继续运行低级中断服务程序

2 优点

        点提高中断响应的实时性,保证系统能够及时响应优先级高的中、、断请求。

3 条件:

         中断请求的优先级高于正在执行的中断处理程序的优先级;

        如果是外中断,CPU的PSW的IF=1,开中断;

        中断请求未被8259屏蔽;

        没有不可屏蔽中断请求和总线请求(DMA)
                 (NMI                         HOLD)
       

总线周期内 T3 总线周期后

                  ready>hold>NMI>INTR
                    TW入 DMA   指令周期后)

例如

        如果设备D1>D2>D3>D4 >D5按完全嵌套优先级排列规则设备D1的优先级最高,D5最低。在下列中断请求下,给出各设备的中断处理程序的次序(假设所有的中断处理程序开始后就有STI指舍,并在中断返回之前发出结束命令)。
(1)设备3和4同时发出中断请求;

        3——4

(2)设备3和4同时发出中断请求,并在设备3的中断处理程序完成之前,设备2发出中断请求
        3——2——3——4

 3)设备1、3、5同时发出中断请求,在设备3的中断处理程序完成之前,设备2发出中断请求。

       1——3——2——3——5

_________________________________________________________________________

执行中断服务子程序,子程序开始的第一个句子就是要开中段
开中断 , 让IF=1
中断服务寄存器要清0
2 : inret返回到未执行完断电的地方

断点的地方 3 和 4 同时来, cpu内部屏蔽寄存器当中执行后,会把3传给cpu,把4进行屏蔽,执行完3之后,立刻执行4

多级中断:采用允许中断嵌套

6中断过程

        一个完整的中断过程一般经历五个步骤:

        中断请求、

        中断优先级判定、

        中断响应、

        中断处理和

        中断返回

中断条件,需要执行完当前正在执行的指令
中断处理也称 中断服务,执行中断服务子程序 中断过程 主程序,调用子程序
call ret //call 主程序 ret 返回 INT Iret //中断调用 中断返回
中断请求,判优
中断处理的子程序 SINT PROC Near IRET SINT erap

可屏蔽中断的响应条件

        ①外设有可屏蔽中断请求:INTR

        ②没有更高优先级的请求

                                                没有复位RESET信号、DMA、内部中断和不可屏蔽中断请求;

        ③中断接口中的中断允许触发器置1
            8259内部的INTE=1

        ④CPU开放中断
            CPU中标志寄存器的1F=1,中断开放;
        ⑤当前指令执行结束

            88/86CPU在当前指令的最后一个机器周期的最后一个T状态采样INTR线,查看是否有请求。

_______________________________________________________________

首先得有中断请求:INTR RESET、DMA、内部中断和不可屏蔽中断请求的优先级都要比INTR高
多级嵌套必须要开中断

中断响应的步骤

取中断类型号n:启动中断响应总线(INTA)操作,在第2个中断响应总线周期读取中断类型号n。

标志寄存器入栈:执行1个总线写周期,将PSW的内容压入堆栈。

  (保护PSW)

                                (FR、PSW、CF、OF、IF)

清除IF和TF标志:使IF=0和TF=0。   关中断/单步

CS和IP入栈(断点):关中断执行2个总线写周期,依次将CS和IP内容压入堆栈。

获取中断向量:从内存地址为:n×4和n×4+2的两个字单元中读取IP和CS。

______________________________________________________________________

1 获得中断类型号
标志寄存器 FR PSW 入栈 CF OF IF 保护主程序中,标志的结果
3 IF和TF 清0 因为要关中断 或单步中断 TF 是单步中断 关外中断或单步中断都不响应,NMI和其他内中断可以响应
4 CS IP 叫做断点入栈 执行子程序之前,不保护断点,就找不到返回的路
入栈 将原来的Psw内的值先保护起来

在刚刚的五步中经历了两个总线周期
响应时序经历了 1到4 第二个经历了 一到4 这个图不太规范,规范的话,中途有三个空闲周期
满足条件之后,就会响应
AD7到AD0处于高阻 A0D0 A7D7
类型号就是中断类型号
步骤1 中的中断类型号是在 第二个中断响应周期这儿拿到的中断类型号 CPU内先保存 随后做 3件事 把 2 3 4 该入栈的入栈,该清0的清0

 从CPU中止现行程序转到中断服务程序这一过程为中断响应周期,中断响应周期的时序图如图。当外部中断源通过INTR引脚向CPU发出中断请求信号时,如果CPU此时处在开中断状态,即中断标志IF=1时,则CPU在完成当前指令操作之后,进入中断响应周期。中断响应周期要用两个总线周期。
在第一个中断响应周期,使AD7~ADO悬空,且/S7引脚和A19/S6~A16/S3也是悬空的在第二个响应周期,被响应的外设向数据线输送一个字节的中断类型码,CPU接收中断类型码后,从中断向量表中找到该中断源的中断服务程序的入口地址,转入中断服务程序。


 

在内存的代码段中:保存的是 INT 和7 一共占了两个字节 而当前这个指令和cs:ip的地址。INT和7是CS和IP的值

在1000H:0280的位置上保存的是这条指令

这是在内存的代码段中保存的指令

当执行这条中断指令的时候 问 :执行完这条指令之后,他要执行7号中断的处理加工

这条指令的指令周期完成之后,才去执行子程序,子程序返回主程序的时候,回到这条指令的下一个指令的位置。

假如下一条指令是MOV

执行完 iret之后,要回到 MOV

要找到下一条指令的CS:IP的值,因为他的段同INT 7一样 所以起始地址不变1000H

只是位移量发生了变化,因为INT是0280 7是0281 下一条地址 的偏移量就是 0282H

以上的代码段的程序
当执行这条指令的时候 INT 7 的这条执行要经过CPU处理 第一步、CPU获得中断类型号 n=7 

入栈 把0241H压栈了 当前桟顶的指针已经移动到了41H,压栈上面是低地址,下面是高地址,每当压入一个字数据,SP-2

1800-2=17FEH 直行到第二步骤时

第三步,使 IF和TF清0 执行到这步的时候,原来的CS和IP的值,都进行了清0

​​

(编辑过)

第四步,保护断点,断点入栈。 把断点的值压入堆栈,有个规则,先压CS的值,再压IP的值 和获取中断向量表的类似 CS是1000H断点是0282 再压入堆栈 82 02 00 10 SP____41H 当前正在指向的位置 ;17FEH

执行完第4步之后,就是用SP当前的地址减去-就是17FAH 就是SP的值

PSW原来是 0241H 把IF和TF清0 原来的IF是1,清0了之后 就是0041H

 

 1是低地址,2是高地址
 

 8088、8086的功能部件 EU和BIU 寄存器 14个16位寄存器

引脚 40个 引脚 三类数据总线 AB DB CB

时序

工作模式 最大最小模式

中断名词 nx4得到表地址的公式,得到了中断向量 堆栈一直在变化

举例子 堆栈的变化 表的内容,代码段 INT 7 存两个字节

6考点:流水线技术,流水线的管理

 

 80286的时候:4个功能段

 第一个时间 T 第二个时间T 一共到6T 第一个需要两个t就出了成品

 BIU负责传送 EU负责处理加工 两个功能段实现分时复用,提高了CPU效率

简述流水线技术,8086/8088怎样实现了最简单的指令流水线?
答: (1)流水线技术是指在程序执行时多条指令重叠进行操作的一种并行处理实现技术。
(2)流水线技术的并行处理是指完成一条指令的各个部件在时间上是可以同时重叠工作,分别同时为多条指令的不同部分进行工作,以提高各部件的利用率。
(3)流水线技术是每个子过程由专门的功能部件来实现,每个子过程与其他子过程并行进行。
(4) 8086/8088中,指令的读取是在B1U单元,而指令的执行是在EU单元。因为BIU和EU两个单元相互独立、分别完成各自操作,所以可以并行操作。
(5)在EU单元对一个指令进待译码执行时,BIU单元可以同时对后续指令进行读取。
————————————————————————————————————
重叠和并行指的是时间并行
并行:三种方式 流水线技术 资源共享 资源重复
子过程:相当关于功能段,相当于缝衣服的裁剪分别进行工作

 总结

    掌握8088/8086CPU的结构和引脚的功能。

     掌握8086/8088CPU寄存器的组成及应用。
   掌握8086/8088CPU的引脚构成,理解其功能、

   特性掌握计算机系统中断的相关知识。    

posted @   YJlio  阅读(284)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示