微机原理与接口技术楼顺天第二版第八章习题解答文档格式.docx
《微机原理与接口技术楼顺天第二版第八章习题解答文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术楼顺天第二版第八章习题解答文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
![微机原理与接口技术楼顺天第二版第八章习题解答文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/30/7e009090-1b64-4527-822e-a71c3ebf19e1/7e009090-1b64-4527-822e-a71c3ebf19e11.gif)
8086微处理器用8位二进制码表示一个中断类型,有256个不同的中断。
这些中断可以划分为内部中断、外部不可屏蔽中断、外部可屏蔽中断三类。
用处:
使CPU识别中断源,从而能正确地转向该中断源对应的中断服务程序入口。
8.5答:
微处理器在处理低级别中断的过程中,如果出现了级别高的中断请求,微处理器停止执行低级中断的处理程序而去优先处理高级中断,等髙级中断处理完毕后,再接着执行低级的未处理完的程序,这种中断处理方式成为中断嵌套。
使用中断嵌套的好处是能够提高中断响应的实时性。
对于某些对实时性要求较高的操作,必须赋予较髙的优先级和采取中断嵌套的方式,才能保证系统能够及时响应该中断请求。
对于可屏蔽中断,实现中断嵌套的条件有:
(1)微处理器处于中断允许状态(IF=1)
(2)中断请求的优先级高于正在执行的中断处理程序的优先级。
(3)中断请求未被8259屏蔽。
(4)没有不可屏蔽中断请求和总线请求。
8.6答:
中断向量为每个中断服务子程序的入口地址,为32位(16位的偏移地址和16位的段地址),在中断向量表中占用4个地址单元。
在8086CPU组成的计算机系统中,采用最低
的1024个地址单元(称为0页)来存储中断向量。
这1024个地址单元成为中断向咼表。
因此,中断类型号为1FH的中断向克在中断向量表中的存储位置为1FHX4=07CH.
中断类型号为1FH的中断向量在中断向量表中的存放位置如图8.6所示。
图8.6中断类型号为1FH的中断向址在中断向址表中的存放位置
8.7答:
中断向量表是用来存放中断向量的。
是中断类型号与它对应的中断服务程序入口地址之间的换算表。
1)CPU获得中断类型号n后,将当前PSW、CS和IP的内容依次压入堆栈,保存断点的状态和断点地址,以便返回时恢复。
2)将PS甲中的IF位和TF位淸0,关闭中断。
3)把地址为4Xn和4Xn+l两个单元的16位数作为中断服务程序入口的偏移地址宜入IP,把地址为4Xn+2和4Xn+3两个单元的16位数作为中断服务程序入口的段地址豊入CS.
4)转入中断服务程序。
8.8答:
在IF位为1情况下,从INTR端加入中断请求信号开始,到进入中断服务程序为止所经过的一系列操作,称为可屏蔽中断的响应过程。
首先等待当前指令结朿后,进入中断响应周期。
然后,从微处理器外部的中断控制逻辑获得中断类型号。
随后把当前的PSW.CS
和IP的内容依次压入堆栈,接着淸除PSW中的IF位和TF位为5最后把中断服务程序的入口地址置入IP和CS’」至此,完成了可屏蔽中断的响应过程,开始进入中断服务程序。
8.9答:
IRR:
中断请求寄存器,用来锁存外部设备送来的IR?
~IR°
中断请求信号。
当外部
中断请求线IK有中断请求时,IRR中与之对应的第i位被置1。
该寄存器内容可以被微处理藩读出。
IMR:
用于设置中断请求的屏蔽信号。
此寄存器第i位被置1时,与之对应的外部中断
请求线IR「被屏蔽,不能向微处理器发出INT信号。
ISR:
用于记录当前正在被服务的所有中断级,包括尚未服务完而中途被更高优先级打断的中断级。
若微处理器响应了IR「中断请求,则ISR中与之对应的第i位置1。
中断处理结束前,要用指令淸除这一位。
10答:
初始化编程就是指对ICW(初始化命令字)的初始化,对ICW的初始化有一定的顺序,必须从ICW1开始。
对中断控制器8259A的初始化编程次序如图8.10所示。
图8.10对中断控制器8259A的初始化編程次序
8.11答:
一片8259可控制8级中断,第1片通过级联8片8259可将中断扩充至64级。
所以组成该中断机构共需9片8259。
12答:
在全嵌套方式下,中断优先级的级別是固泄的,即IR。
优先级最高,IR|逐级次之,IR7最低。
如果对8259A进行初始化后没有设置其他优先级别,那么8259A就按全嵌套方式工作。
8.13答:
(1)设备3和4同时发岀中断请求;
中断处理次序为:
D3-D4,示意图如图&
13(a)所示。
D3.D4同时
主程序
请求
/
D3服务程序
D4服务程呼
1
4sti
\
X
ISR4置1卜
、IR?
?
——
清零/
—
/1
匚一ISR
止
一一一’
图&
13(a)设备3和4同时发出中断请求的中断处理程序的次序示总图
(2)
设备2发出中
设备3和4同时发出中断请求,并在设备3的中断处理程序完成之前,
断请求:
D3-D2-D3-D4,示意图如图8.13(b)所示。
13(b)中断处理程序的次序示意图
(3)设备1.3、5同时发出中断请求,在设备3的中断处理程序完成之前,设备2发出中断请求。
D1-D3-D2-D3—D5,示意图如图8.13(c)所示。
13(c〉中断处理程序的次序示总图
8.14答:
ICW1、0CW2和0CW3共用一个端口地址,但在命令字中通过命令字的两位取值不同来区分,ICW2、ICW3、ICW4和OCW1根据命令字的先后次序区分。
15答:
IMR为8259内决泄是否屏蔽接入8259的中断请求的,IF是8086CPU内部决能是否可以响应外部非屏蔽中断的标志位。
在中断系统中IMR决左外部中断请求能否被8259转发给CPU,IF决左CPU能否响应INTR引脚的中断请求。
16答:
在二片以上的8259芯片级联的情况。
主片的ICW3的每一位确定哪一个INi引脚接从片,从片的ICW3的低三位的组合确定从片的INT接主片的哪一个INi。
17答:
8259A利用优先权处理器来识别和管理中断请求信号的优先级别。
当几个中断请求信号同时出现时,优先权处理器根据控制逻辑规定的优先权级别和IMR的内容来判断这些请求信号的最髙优先级。
微处理器响应中断请求时,把优先权最高的IRR中的“1”送入ISR.°
当8259A正在为某一级中断服务时,若又岀现新的中断请求,则由优先权处理器判断新出现的中断请求的级别是否高于正在处理的那一级。
若是,则进入多重中断处理。
8259A有5种中断优先级管理方式。
(1)完全嵌套方式:
按固左优先级髙低来管理中断,若8259A初始化时未对优先级管理方式编程,则8259A自动进入该方式:
(2)自动循环方式:
中断源的优先级将随中断响应过程的结朿而随时跟着改变的中断优先级管理方式。
可用两种方式使8259A进入自动循环方式:
一是在中断服务程序末尾发一条普通EOI循环命令:
二是在主程序或中断服务程序中,发程位/复位自动EOI命令;
(3)特殊循环方式:
通过在主程序或中断服务程序中发“特殊循环方式”操作命令来指眾某个中断源的优先级为最低级,其余中断源的优先级随之循环变化:
(4)特殊屏蔽方式:
可在中断服务程序中用中断屏蔽命令来屏蔽当前正在服务的中断级别时,同时是中断服务寄存器中对应当前中断级的为自动淸0,从而屏蔽了当前正在处理的本级中断:
(5)查询排序方式:
用软件査询方法来响应与8259A相连的8级中断请求,CPU先用操作命令字发査询命令给8259A,再用输入指令读取IRR寄存器的状态,以识别当前有无中断请求及最髙级别的中断请求。
8.18答:
多片8259级联时,主片必须工作在特殊全嵌套方式下。
假设从片工作在全嵌套方式下,先后收到了两次中断请求,而且第二次中断请求有较高的优先级,那么该从片就会两次通过INT引脚向上一级申请中断。
如果主片采用全嵌套方式,则它不会响应来自同一引脚的第二次中断请求。
而采用特殊全嵌套方式后,就会响应该请求。
8.19答:
向8259A发送'
'
中断结束”命令,使相应的中断级在ISR中的相应位淸“0”,表示该中断处理已经结束。
8259A有自动中断结朿方式(AEOI)和非自动中断结束方式(EOI)。
(1)自动中断结朿方式(AEOI)o
在这种方式下,系统一目进入中断响应,8259A就在第二个中断响应周期而入信号的后沿,自动将ISR中被响应中断级的对应位淸“0”。
这是一种最简单的中断结朿处理方式,可以通过初始化命令来设过,但这种方式只能用在系统中只有一个8259A,且多个中断不会嵌套的情况。
(2)非自动中断结束方式(EOI)。
在这种工作方式下,从中断服务程序返回前,必须在程序里向8259A输岀一个中断结朿命令(EOI),把ISR对应位淸“0”。
具体做法有一般的中断结束方式和特殊的中断结朿EOI命令。
这种方式可用于系统中有多个8259A或多个中断中有嵌套的情况,但这种方式要比自动中断结束方式复杂。
而且在这种方式下,如果在程序里忘记了将ISR对应位淸零,那么,8259A在一般情况下将不再响应这个中断以及比它级别低的中断请求。
8.20答:
必须发送中断结朿命令,即向操作控制字OCW:
的EOI位写1。
如果不设置这种命令,则该中断服务程序结束后,CPU将无法响应优先级比它低的中断请求以及它自身的下一次中断请求。
若初始化为自动结朿方式,则不需设置这种操作。
1&
21答:
关于有前缀的指令,前缀包括段寄存器前缀(例如指令MOVAX,CS:
VAR)、重复前缀(例如指令REPMOVSB)、和LOCK前缀。
应明确的是,指令前缀并不是一个独立的指令,只是指令的一部分,所以不允许在前缀码和指令码之间响应中断,所以应在这条指令前苣CLI(关中断)指令,在这条指令后置STI(开中断)指令。
2对于目的地址是段寄存器的MOV和POP指令(除CS外),本条指令后不允许响应中
断,而是还要执行一条指令结束后才能响应中断,这时可以在指令前加CLI,指令后加
STL
需要进行中断嵌套时,由于微处理器在响应中断时已将IF淸零,所以一左要在中断处理程序中加开中断指令,才有可能进行中断嵌套。
8.22答:
设备A在一次I/O操作完成后在8259A从片中断请求输入端IR5上产生中断请求,中断请求被锁存在8259A从片IRR中,并经IWIR“屏蔽”,其结果送给优先权电路判优。
控制逻辑接收中断请求,向8259A主片IR2引脚输出INT信号,中断请求被锁存在8259A主片IRR中,并经IMR“屏蔽”,英结果送给优先权电路判优。
控制逻辑接收中断请求,向CPU输出INT信号°
CPU从INTR引脚接受8259A主片的INT信号,进入连续两个丽页周期。
优先权电路设置ISR中的对应位,在收到第一个而只信号后,8259A主片把当前申请中断的8259A从片的ID代码010,通过CAS0〜CAS2送到相应的8259A从片。
相应地8259A从片任收到第二个而只信号时,将中断类型号N送到数据线上。
8086CPU获得中断类型号N后,在NX4和NX4+2对应的中断向量表单元获取中断向量分别置入IP和CS,从此进入设备A的中断服务程序。
在中断服务程序结朿前(即执行IRET指令前),应分別向从片8259和主片8259发送EOI中断结朿命令,然后执行IRET指令,返回断点。
8.23答:
设8258A主片的端口地址为2OH(Ao=O)和21H(Ai=l),第一个8259A从片的端口地址为50H(Ao=0)和51H(A,=1),第二个8259A从片的端口地址为0A0H(A(>
=0)和0AlH(Ai=l),初始化程序如下:
主片:
MOV
AL.
00010001B:
ICW「边沿触发,级联
OUT
201L
AL
AL,
00010000B:
ICW,中断类型号10H~17H
21H-
01010000B:
icWj^IR4和IR&
连有从片
21H・
ICW4:
特殊全嵌套.非缓冲.非自动中断结束
从片1:
ICW«
:
边沿他发,级联
50H,
00100000B:
ICW2:
中断类型号20H-27H
51H-
00000100B:
1的2INT引脚连主片叭
5田,
00000001B:
完全嵌套,非缓冲.非自动中断结束
51H・
从片二:
AL.00010001B:
icw):
边沿触发.级联
0A0H,AL
AL,00110000B:
ICW2.中断类型号3OH-37H
0A1H.AL
AL.00000110B:
INT引脚连主片叭
AL.00000001B:
完全嵌套,非缓冲,非自动中断结束
0A1H,AL
AL,13H
50H.AL;
初始化icw「设宜为边沿•触发,单片工作
AL,08H
51H,AL;
ICW.
;
中断类型号的高5位为00001B,即中断类型号为08『
AL.OBH
51H,
8.24答
0FH
AL;
初始化一般全嵌套缓冲方式.中断非自动结束
25答:
8259A可通过设置操作控制字0C\%发送中断结束命令(EOI命令),来淸除ISR
的指左位。
OCYV;
的值为23H,OS%用低位端口地址(即A0=0)进行操作,因此可编程如
下:
MOVAL,23H
MOV20H»
AL
8.26答:
1)设计必要的中断源,确崖它们提出的中断请求的方式。
2)编写初始化程序。
根拯急迫程度的不同,规泄好中断源的优先级别,以确左当几个中断源同时请求时,处理机能有一个先后响应次序。
3)当处理机响应中断后,需要把被中断程序的现场、断点保护起来,以便中断处理结朿后能返回原程序。
4)中断服务程序设计。
5)恢复现场,返回原程序。
27答:
执行INT8之后,(SP)=00FAH>
(SS)=0300H,(IP)=0040H,(PSW)=0040Ho由于INT8为双字节指令,所以栈顶的三个字从上到下分別是00A2H,0900H,0240H.
8.28答:
可以。
但这样做存在问题。
IRET指令执行时将出栈IP,CS和PSW的值,而RETF指令只岀栈IP,CS的值,因而若中断服务程序中改变了标志位,用RETF指令返回在主程序中将无法恢复标志位的值。
尤其是在中断服务程序中关中断后(IF=0),用RETF指令将无法重新开中断,从而导致中断服务结朿后CPU不能再响应其他可屏蔽中断。
8.29答:
根据题目,主片的ICW1为00010001B,边沿触发、级联、写ICW4,主片的ICW2为20H,ICW3为0CH(因为从片INT接主片的IR3和IR4),ICW4为00010001B(特殊全嵌套.非缓冲方式、中断正常结束、8086CPU):
从片一的ICW1为00010001B,ICW2为30H,ICW3为03H,ICW4为00000001B(普通全嵌套、非缓冲、中断正常结束、8086CPU):
从片二的ICW1为11H,ICW2为40H,ICW3为04H,ICW4为01H,
根据译码逻辑,主片的端口地址为040H.042H,从片一的端口地址为044H、046H,
从片二的端口地址为048H、04AHo初始化编程为:
主片初始化编程
MOVDX.040H
MOVAL.11H:
ICW1
OUTDX.AL
MOVDX.042H
MOVAL.20H:
ICW2
OUTDX.AL
MOVAL.OCH:
ICW3
MOVALJ1H:
ICW4
从片一初始化编程
MOVDX.044H
MOVDX.046H
MOVAL.30H:
MOVAL.03H:
MOVAL.01H:
从片二初始化编程
MOVDX.048H
MOVAL.11H
IC\V1
MOVDX.04AH
MOVAL.40H
MOVAL.04H
MOVAL.OIH