答:1.在总线周期的T1状态,复用总线用来输出要访问的存储器或I/O端口的地址给地址锁存器8282(3片)锁存;在其他状态为传
送数据或作传送准备。地址锁存器8282在收到CPU发出的地址锁存允许信号ALE后,锁存地址。 2.ALE信号在每个总线周期的T1状态为有效高电平。
2.15
BHE(数据总线允许信号)信号和A0信号是通过怎样的组合解决存储器和外设端口的读/写的?这种组合决定了8086系统中存储器
偶地址体及奇地址体之间应该用什么信号来区分?怎样区分? 答:1.组合情况如下:
BHE 0 1 1 0 1 A0 0 0 1 1 0 操 作 从偶地址开始读/写一个字 从偶地址单元或端口读/写一个字节 从奇地址单元或端口读/写一个字节 从奇地址开始读/写一个字(在第一个总线周期,将低8位数送AD15~AD8, 在第二个总线周期,将高8位数送AD7~AD0) 所用的数据引腿 AD15~AD0 AD7~AD0 AD15~AD8 AD15~AD8 AD7~AD0 2.用A0信号来区分偶地址体和奇地址体。
3.当A0=0时选中偶地址体,A0=1时选中奇地址体。
2.16
RESET信号来到后,CPU的状态有哪些特点?
答:复位信号来到后,CPU便结束当前操作,并对处理器标志寄存器FR、IP、DS、SS、ES、其他寄存器及指令队列清0,而将
CS设置为FFFFH。当复位信号变为低电平后,CPU从FFFF0H单元开始执行程序。
2.17 在中断响应过程中,8086往8259A发的两个INTA信号分别起什么作用?
答:第一个负脉冲通知外部设备的接口,它发出的中断请求已经得到允许;外设接口收到第二个负脉冲后,往数据总线上放中断
类型码,从而CPU得到了有关此中断请求的详尽信息。
2.18 总线保持过程是怎样产生和结束的?画出时序图。
答:1.当系统中CPU之外的另一个主模块要求占用总线时,通过HOLD引腿向CPU发一个高电平的请求信号。如果CPU此时允
T4/TI 采样 CLK
HOLD
采样 HLDA
5
三态引腿
高阻
许让出总线,就在当前总线周期完成时,于T4状态从HLDA引腿发出一个应答信号,对刚才的HOLD请求做出响应。同时,CPU使地址/数据总线和控制状态线处于浮空状态。总线请求部件收到HLDA信号后,就获得了总线控制权,在此后一段时间,HOLD(总线保持请求信号)和HLDA(总线保持响应信号)都保持高电平。在总线占有部件用完总线之后,会把HOLD信号变为低电平,表示现在放弃对总线的占有。8086/8088收到低电平的HOLD信号后,也将HLDA变为低电平,这样,CPU又获得了地址/数据总线和控制状态线的占有权。 2.时序图为:
2.19 8086系统在最小模式时应该怎样配置?请画出这种配置并标出主要信号的连接关系。
答:1.8086系统在最小模式时的配置是:8086CPU一片,8284A时钟发生器一片,8282地址锁存器三片,8286总线收发器二片。
2.连接关系为:
READY
RESET READY 8284A 8282 (3片) CLK RESET BHE STB ALE BHE 地址总线 A19~A16
AD15~AD0 8286(2片) OE T 数据总线
6
DEN DT/R 控制总线 8086
2.20 时钟发生器的功能是什么?画出它的线路图。
答:1.时钟发生器的功能是:提供频率恒定占空比符合标准的时钟信号,对准备好(READY)和复位(RESET)信号进行同步。
2.线路图见书21页图2.7所示。
2.21 8086在最大模式下应当怎样配置?最大模式时为什么一定要用总线控制器?总线控制器的输入信号是什么?输出信号是什么? 答:1.8086在最大模式下的配置是:8086CPU一片,8284A时钟发生器一片,8282地址锁存器三片,8286总线收发器二片,8288
总线控制器一片,8259A中断优先级管理部件一片。
2.因为在最大模式下,需要用外加电路来对CPU发出的控制信号进行变换和组合,以得到对存储器和I/O端口的读/写信号和对锁存器8282及总线收发器8286的控制信号。8288总线控制器就是完成上述这些功能的专用芯片。所以必须用总线控制器。
3.总线控制器的输入信号是:来自CPU的S2、S1、S0状态信息,时钟CLK信号,及决定本身工作方式的信号IOB、AEN、CEN。
4.总线控制器的输出信号是:用来作为CPU进行中断响应的信号INTA,两组读/写控制信号MRDC、MWTC、IORC、两个提前的写控制信号AMWC、送给地址锁存器的信号ALE,送给数据收发器的信号DEN和DT/R。 IOWC,AIOWC,
2.22 在编写程序时,为什么通常总要用开放中断指令来设置中断允许标志?
答:因为在复位时,标志寄存器FR被清0,则IF=0,禁止从INTR进入的可屏蔽中断,所以必须在编写程序时,用指令来设置中
断允许标志。
2.23 T1状态下,数据/地址复用总线上是什么信息?用哪个信号将此信息锁存起来?数据信息是在什么时候给出的?用时序图表示出来。 答:1.T1状态下,数据/地址复用总线上是地址信息。
2.用ALE信号的下降沿将此地址信息锁存在三片8282中。 3.数据信息的给出时间分两种:
① 总线读周期时,数据信息在T3、TW、T4中间给出; ② 总线写周期时,数据信息在T2、T3、TW、T4中间给出。 4.时序图如下: T1 T2 T3 TW T4
CLK
A19/S6~ 地址 状态 输出 7
A16/S3
AD15~AD0
地址 数据 输出
地址 数 据输 入
BHE 输出
2.24 画出8086最小模式时的读周期时序。 答:见书27页图2.11所示。
2.25 8086最多可有多少个中断?按照产生中断的方法分为哪两大类? 答:1.8086最多可有256个中断。
2.按照产生中断的方法分为硬件中断和软件中断两大类。
2.26 非屏蔽中断有什么特点?可屏蔽中断有什么特点?分别用在什么场合?
答:1.非屏蔽中断的特点有:中断请求从NMI引腿进入,不受中断允许标志IF的影响。非屏蔽中断只有一个,其中断类型码为2。
2.可屏蔽中断的特点有:中断请求从INTR引腿进入,只有在IF=1时CPU才响应该中断。可屏蔽中断有若干个,其中断类型码可以是5~255。
3.非屏蔽中断用来处理系统的重大故障,如掉电等。可屏蔽中断用在一般外部设备申请的中断中。
2.27 什么叫中断向量?它放在那里?对应于1CH的中断向量存放在哪里?如果1CH的中断处理子程序从5110H:2030H开始,则中断向量应怎样存放?
答:1.中断处理子程序的入口地址就是中断向量。
2.中断向量放在0段的0~3FFH区域的中断向量表中。
3.对应于类型号为1CH的中断向量应放在00070~00073H的4个单元中。
4.若1CH的中断向量为5110H:2030H,则中断向量的存放方法为:00070H存放30H,00071H存放20H (IP);00072H存放10H,00073H存放51H (CS)。
2.28 从8086/8088的中断向量表中可以看到,如果一个用户想定义某个中断,应该选择在什么范围? 答:应该选择在中断类型码为32(20H)~255(FFH)范围。
8
2.29
非屏蔽中断处理程序的入口地址怎样寻找?
答:CPU在响应NMI引腿的中断请求时,CPU并不需要从中断类型码计算中断向量的地址,而是直接从中断向量表中读取
00008~0000BH这4个单元对应于中断类型2的中断向量就行了。CPU将00008H、00009H两个单元的内容装入IP,而将0000AH、0000BH两个单元的内容装入CS,于是就转入了对非屏蔽中断处理程序的执行。
2.30 叙述可屏蔽中断的响应过程,一个可屏蔽中断或者非屏蔽中断响应后,堆栈顶部四个单元中为什么内容?
答:首先在CPU的INTR引腿上有可屏蔽中断请求输入,且IF=1。在当前指令执行完后,CPU发两个INTA中断响应负脉冲,外
设接到第二个负脉冲后,立即往数据线上给CPU送来中断类型码。然后CPU取中断类型码,将标志FR推入堆栈,清除IF和TF,再将CS和IP推入堆栈来保护断点,进入中断处理子程序并执行,最后弹出IP和CS及标志而中断返回。中断响应后,堆栈顶部四个单元的内容分别是:IPL、IPH、CSL、CSH。
2.31 一个可屏蔽中断请求来到时,通常只要中断允许标志为1,便可在执行完当前指令后响应,在哪些情况下有例外? 答:1.正好遇到CPU执行封锁指令时,必须等下一条指令执行完后才响应中断。
2.正好执行往段寄存器传送数据的指令,必须等下一条指令执行完后才响应中断。 3.执行WAIT或串操作指令时,可在指令执行中响应中断。
2.32 在对堆栈指针进行修改时,要特别注意什么问题?为什么?
答:1.必须先修改堆栈段寄存器SS的值,接着修改堆栈指针SP的值。
2.因为,CPU在修改段寄存器值时不响应中断,待下一条指令执行后才响应中断。这样对SS、SP的修改是一个完整的过程。否则先修改SP后修改SS则可能中断响应而分开修改,导致堆栈指针的错误,因此CS、IP、FR进入错误的堆栈区域而破坏该单元的数据或程序。
2.33 在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?有些寄存器即使在中断处理子程序中并没有用到也需要保护,这又是为什么(联系串操作指令执行时遇到中断这种情况来回答)?
答:1.因为中断处理子程序运行时需要使用CPU内部的寄存器,这些寄存器的值发生了改变。因此若不加保护在返回原程序时就
修改了断点处的现场,而使程序不能正常运行。
2.因为串操作指令允许在执行过程中进入中断,若与串操作有关的寄存器未保护好,中断返回时串操作指令就不能正常继续运行。而且还有隐含寻址问题。
2.34 一个可屏蔽中断响应时,CPU要执行哪些读/写周期?对一个软件中断又如何? 答:1.对可屏蔽中断响应,CPU要执行的读/写周期如下:
① 执行两个中断响应总线周期。并取得中断类型码。 ② 执行一个总线写周期。标志寄存器FR值入栈。 ③ 执行一个总线写周期。CS值入栈。
9