第5章 总线及其形成
5.1 微处理器的外部结构表现为 数量有限的输入输出引脚 ,它们构成了微处理器级总线。 5.2 微处理器级总线经过形成电路之后形成了 系统级总线 。
5.3 答:总线是计算机系统中模块(或子系统)之间传输数据、地址和控制信号的公共通道,它是一组公用导线,是计算机系统的重要组成部分。
采用标准化总线的优点是: ① 简化软、硬件设计。 ② 简化系统结构。 ③ 易于系统扩展。 ④ 便于系统更新。 ⑤ 便于调试和维修。
5.4 答:在微型计算机应用系统中,按功能层次可以把总线分成:片内总线、元件级总线、系统总线和通信总线。
5.5 答:RESET为系统复位信号,高电平有效,其有效信号至少要保持四个时钟周期,且复位信号上升沿要与CLK下降沿同步。系统复位后的启动地址为0FFFF0H。即:(CS)=0FFFFH,(IP)=0000H。
5.6 8086CPU复用的引脚有AD15~AD0、A16/S3、A17/S4、A18/S5、A19/S6、BHE/S7。 8088CPU复用的引脚有AD7~AD0、A16/S3、A17/S4、A18/S5、A19/S6、BHE/S7。 5.7 答:设置引脚复用主要是可以减少引脚数量。CPU通过分时复用解决地址线和数据线的复用问题。ALE为地址锁存使能信号在总线周期的T1周期有效,BHE为高8位数据线允许,在T1周期有效,需要锁存器锁存,在需要使用高8位数据线时使用。 5.8 答:高阻态可做开路理解。可以把它看作输出(输入)电阻非常大。 5.9 答:RESET(Reset):复位信号,输入,高电平有效。CPU收到复位信号后,停止现行操作,并初始化段寄存器DS、SS、ES,标志寄存器PSW,指令指针IP和指令队列,而使CS=FFFFH。RESET信号至少保持4个时钟周期以上的高电平,当它变成低电平时,CPU执行重启动过程,8086/8088将从地址FFFF0H开始执行指令。
READY(Ready):准备就绪信号,输入,高电平有效。在T3状态结束后CPU插入一个或几个TW暂停状态,直到READY信号有效后,才进入T4状态,完成数据传送过程。
TEST(Test):测试信号,输入,低电平有效。TEST信号与WAIT指令结合起来使用,CPU执行WAIT指令后,处于等待状态,当TEST引脚输入低电平时,继续执行被暂停的指令。
5.10 P159-160 5.11 P170 5.12 P162
5.13 8086 CPU的M/IO信号在访问存储器时为 高 电平,访问I/O端口时为 低 电平。
5.14答:8086CPU有20条地址线和16条数据线,为了减少引脚,采用了分时复用,共占了20条引脚。这20条引脚在总线周期的T1状态输出地址。为了使地址信息在总线周期的其他T状态仍保持有效,总线控制逻辑必须有一个地址锁存器,把T1状态输出的20位地址信息进行锁存。
5.15 根据传送信息的种类不同,系统总线分为 数据总线 、 地址总线 和 控制总线 。 5.16 三态逻辑电路输出信号的三个状态是 高电平 、 低电平 和 高阻态 。
5.17 在8086的基本读总线周期中,在T1状态开始输出有效的ALE信号;在T2状态开始输出低电平的RD信号,相应的DEN为__低__电平,DT/R为__低__电平;引脚AD15 ~ AD0上在T1状态期间给出地址信息,在T4状态完成数据的读入。
5.18
5.19 H 5.20 E
5.21 存储器读、存储器写、I/O读、I/O写。 5.22 RD,WR,MEMW,IOR,IOW 5.23 存储器读,I/O写 5.24 地
5.25 高,FFFFH,0000H,FFFF0H 5.26 ALE,地;DT/R,DEN 5.27 一,一,两 5.28 T3,高,Tw 5.29 8288总线控制器 5.30 B, C
5.31
5.32答:(1)没有等待的8086最小方式时序如图5.32(1)所示。
一个基本的总线周期T1T2T3T4
CLKA19~A16BHEBHES6~S3状态输出AD15~AD0A15~A0D15~D0数据输入ALEM/IORDDT/RDEN 图5.32(1) 没有等待的8086最小方式时序
(2)有一个等待周期的8086最小方式时序图如图5.32(2)所示。
插入一个TW的总线周期T1T2T3TWT4CLKA19/S6~A16/S3A19~A16BHEBHES6~S3状态输出AD15~AD0A15~A0D15~D0数据输入ALEM/IORDDT/RDEN 图5.32(2)有一个等待周期的8086最小方式时序图
5.33 (1)因为DATA为偶地址,则DATA+1为奇地址。故要完成本条指令,需要两个总线周期。时序图如图5.33(1)所示
图5.33(1) 执行MOV DATA+1,AX指令的时序参考图
(2)DATA+1虽然为奇地址,但是AL为八位存储器,故本条指令需用一个总线周期,时序图如图5.33(2)所示。
图5.33(2) 执行MOV DATA+1,AL指令的时序参考图
(3)执行OUT DX,AX(DX的内容为偶数 )指令的时序图如图5.33(3)所示。
图5.33(3) 执行OUT DX,AX指令的时序参考图
(4)执行IN AL,0F5H指令的时序图如图5.33(4)所示。
图5.33(4) 执行IN AL,0F5H指令的时序参考图
5.34 T1,高,M/IO,T1,低,T2
微机原理与接口技术(楼顺天第二版)习题解答
第8章中断系统与可编程中断控制器8259A
8.1答:(1)非屏蔽,可屏蔽;(2)IF=1,完成当前总线操作,执行完当前指令;(3)电平
触发,边沿触发;(4)7,22;(5)IN3,12CH。 8.2 答:(1)A; (2)C;
(6)D;
(7)B;
(3)C; (8)B;
(4)A; (9)C。
(5)A;
8.3 答:在CPU执行程序的过程中,由于某个事件的发生,CPU暂停当前正在执行的程序,转去执行处理该事件的一个中断服务程序,待中断服务程序执行完成后,CPU再返回到原被中断的程序继续执行。这个过程称为中断。
8086微机系统中有3种中断: 1) 外部可屏蔽中断。 2) 外部不可屏蔽中断。 3) 内部中断
其中,内部中断又分5种,分别为:除法错中断,单步中断,断点中断,溢出中断以及INT N软件中断。
8.4 答:通常用若干位二进制编码来给中断源编号,该编号称为中断类型号。8086微处理器用8位二进制码表示一个中断类型,有256个不同的中断。这些中断可以划分为内部中断、外部不可屏蔽中断、外部可屏蔽中断三类。
用处:使CPU识别中断源,从而能正确地转向该中断源对应的中断服务程序入口。 8.5 答:微处理器在处理低级别中断的过程中,如果出现了级别高的中断请求,微处理器停止执行低级中断的处理程序而去优先处理高级中断,等高级中断处理完毕后,再接着执行低级的未处理完的程序,这种中断处理方式成为中断嵌套。
使用中断嵌套的好处是能够提高中断响应的实时性。对于某些对实时性要求较高的操作,必须赋予较高的优先级和采取中断嵌套的方式,才能保证系统能够及时响应该中断请求。
对于可屏蔽中断,实现中断嵌套的条件有: (1)微处理器处于中断允许状态(IF=1)
(2)中断请求的优先级高于正在执行的中断处理程序的优先级。 (3)中断请求未被8259屏蔽。
(4)没有不可屏蔽中断请求和总线请求。
8.6 答:中断向量为每个中断服务子程序的入口地址,为32位(16位的偏移地址和16位的段地址),在中断向量表中占用4个地址单元。在8086CPU组成的计算机系统中,采用最低的1024个地址单元(称为0页)来存储中断向量。这1024个地址单元成为中断向量表。
因此,中断类型号为1FH的中断向量,在中断向量表中的存储位置为1FH×4=07CH。中断类型号为1FH的中断向量在中断向量表中的存放位置如图8.6所示。
图8.6 中断类型号为1FH的中断向量在中断向量表中的存放位置
8.7 答:中断向量表是用来存放中断向量的。是中断类型号与它对应的中断服务程序入口地址之间的换算表。
1) CPU获得中断类型号n后,将当前PSW、CS和IP的内容依次压入堆栈,保存断点
的状态和断点地址,以便返回时恢复。 2) 将PSW中的IF位和TF位清0,关闭中断。
3) 把地址为4×n和4×n+1两个单元的16位数作为中断服务程序入口的偏移地址置
入IP,把地址为4×n+2和4×n+3两个单元的16位数作为中断服务程序入口的段地址置入CS。
4) 转入中断服务程序。
8.8 答:在IF位为1情况下,从INTR端加入中断请求信号开始,到进入中断服务程序为止所经过的一系列操作,称为可屏蔽中断的响应过程。首先等待当前指令结束后,进入中断响应周期。然后,从微处理器外部的中断控制逻辑获得中断类型号。随后把当前的PSW、CS和IP的内容依次压入堆栈,接着清除PSW中的IF位和TF位为0。最后把中断服务程序的入口地址置入IP和CS。至此,完成了可屏蔽中断的响应过程,开始进入中断服务程序。 8.9 答:IRR:中断请求寄存器,用来锁存外部设备送来的IR7~IR0中断请求信号。当外部中断请求线IRi有中断请求时,IRR中与之对应的第i位被置1。该寄存器内容可以被微处理器读出。
IMR:用于设置中断请求的屏蔽信号。此寄存器第i位被置1时,与之对应的外部中断请求线IRi被屏蔽,不能向微处理器发出INT信号。
ISR:用于记录当前正在被服务的所有中断级,包括尚未服务完而中途被更高优先级打断的
中断级。若微处理器响应了IRi中断请求,则ISR中与之对应的第i位置1。中断处理结束前,要用指令清除这一位。
8.10 答:初始化编程就是指对ICW(初始化命令字)的初始化,对ICW的初始化有一定的顺序,必须从ICW1开始。对中断控制器8259A的初始化编程次序如图8.10所示。
初始化ICW1地址A0=0初始化ICW2地址A0=1N是级联吗?Y初始化ICW3地址A0=1NIC4=1?Y初始化ICW1地址A0=1
图8.10 对中断控制器8259A的初始化编程次序
8.11 答:一片8259可控制8级中断,第1片通过级联8片8259可将中断扩充至64级。所以组成该中断机构共需9片8259。
8.12 答:在全嵌套方式下,中断优先级的级别是固定的,即IR0优先级最高,IR1~IR6逐级次之,IR7最低。如果对8259A进行初始化后没有设置其他优先级别,那么8259A就按全嵌套方式工作。
8.13 答:(1)设备3和4同时发出中断请求;
中断处理次序为:D3→D4,示意图如图8.13(a)所示。
主程序D3,D4同时请求D3服务程序STID4服务程序STI3置ISR1ISR3清零ISR4置1IRETIRETISR4清零
图8.13(a)设备3和4同时发出中断请求的中断处理程序的次序示意图
(2)设备3和4同时发出中断请求,并在设备3的中断处理程序完成之前,设备2发出中断请求;
中断处理次序为: D3→D2→D3→D4,示意图如图8.13(b)所示。
D3,D4同时请求D2请求D3服务程序STID2服务程序STI主程序I置1SR3ISR12置ISR3清零ISR4置1ISR2清零IRETIRETD4服务程序STIISR4清零IRET
图8.13(b)中断处理程序的次序示意图
(3)设备1、3、5同时发出中断请求,在设备3的中断处理程序完成之前,设备2发出中断请求。
中断处理次序为:D1→D3→D2→D3→D5,示意图如图8.13(c)所示。
主程序D1,D3,D5同时请求D2请求D1服务程序STID3服务程序STID2服务程序STI11置RSIISR1清零IRETIRETISR3置1ISR3清零ISR2清零IRETISR5置1D5服务程序STIISR5清零IRET
图8.13(c)中断处理程序的次序示意图
8.14 答:ICW1、OCW2和OCW3共用一个端口地址,但在命令字中通过命令字的两位取值不同来区分,ICW2、ICW3、ICW4和OCW1根据命令字的先后次序区分。
8.15 答:IMR为8259内决定是否屏蔽接入8259的中断请求的,IF是8086CPU内部决定是否可以响应外部非屏蔽中断的标志位。在中断系统中IMR决定外部中断请求能否被8259转发给CPU,IF决定CPU能否响应INTR引脚的中断请求。
8.16 答:在二片以上的8259芯片级联的情况。主片的ICW3的每一位确定哪一个INi引脚接从片,从片的ICW3的低三位的组合确定从片的INT接主片的哪一个INi。
8.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)。
在这种方式下,系统一旦进入中断响应,8259A就在第二个中断响应周期INTA信号的后沿,自动将ISR中被响应中断级的对应位清“0”。这是一种最简单的中断结束处理方式,可以通过初始化命令来设定,但这种方式只能用在系统中只有一个8259A,且多个中断不会嵌套的情况。
(2) 非自动中断结束方式(EOI)。
在这种工作方式下,从中断服务程序返回前,必须在程序里向8259A输出一个中断结束命令(EOI),把ISR对应位清“0”。具体做法有一般的中断结束方式和特殊的中断结束EOI命令。这种方式可用于系统中有多个8259A或多个中断中有嵌套的情况,但这种方式要比自动中断结束方式复杂。而且在这种方式下,如果在程序里忘记了将ISR对应位清零,那么,8259A在一般情况下将不再响应这个中断以及比它级别低的中断请求。
8.20 答:必须发送中断结束命令,即向操作控制字OCW2的EOI位写1。如果不设置这种命令,则该中断服务程序结束后,CPU将无法响应优先级比它低的中断请求以及它自身的下一次中断请求。若初始化为自动结束方式,则不需设置这种操作。
① 8.21 答:关于有前缀的指令,前缀包括段寄存器前缀(例如指令MOV AX , CS:VAR)、
重复前缀(例如指令 REP MOVSB)、和LOCK 前缀。应明确的是,指令前缀并不是一个独立的指令,只是指令的一部分,所以不允许在前缀码和指令码之间响应中断,所以应在这条指令前置CLI(关中断)指令,在这条指令后置STI(开中断)指令。 ② 对于目的地址是段寄存器的MOV 和POP 指令(除CS外),本条指令后不允许响应中
断,而是还要执行一条指令结束后才能响应中断,这时可以在指令前加CLI,指令后加STI。
需要进行中断嵌套时,由于微处理器在响应中断时已将IF清零,所以一定要在中断处理程序中加开中断指令,才有可能进行中断嵌套。
8.22 答:设备A在一次I/O操作完成后在8259A从片中断请求输入端IR5上产生中断请求,中断请求被锁存在8259A从片IRR中,并经IMR“屏蔽”,其结果送给优先权电路判优。控制逻辑接收中断请求,向8259A主片IR2引脚输出INT信号,中断请求被锁存在8259A主片IRR中,并经IMR“屏蔽”,其结果送给优先权电路判优。控制逻辑接收中断请求,向CPU输出INT信号。CPU从INTR引脚接受8259A主片的INT信号,进入连续两个INTA 周期。优先权电路设置ISR中的对应位,在收到第一个INTA 信号后, 8259A主片把当前申请中断的8259A从片的ID代码010,通过CAS0~CAS2送到相应的8259A从片。相应地8259A从片在收到第二个INTA 信号时,将中断类型号N送到数据线上。
8086CPU获得中断类型号N后,在N×4和N×4+2对应的中断向量表单元获取中断向量分别置入IP和CS,从此进入设备A的中断服务程序。
在中断服务程序结束前(即执行IRET指令前),应分别向从片8259和主片8259发送EOI中断结束命令,然后执行IRET指令,返回断点。
8.23 答:设8258A主片的端口地址为20H(A0=0)和 21H(A1=1),第一个8259A从片的端口地址为50H(A0=0)和 51H(A1=1),第二个8259A从片的端口地址为0A0H(A0=0)和 0A1H(A1=1),初始化程序如下: 主片:
MOV AL,00010001B;ICW1:边沿触发,级联
OUT 20H,AL
MOV AL,00010000B;ICW2:中断类型号10H~17H OUT 21H,AL
MOV AL,01010000B;ICW3:IR4和IR6连有从片
OUT 21H,AL
MOV AL,00010001B;ICW4:特殊全嵌套,非缓冲,非自动中断结束 OUT 21H,AL
从片1:
MOV AL,00010001B;ICW1:边沿触发,级联 OUT 50H,AL
MOV AL,00100000B;ICW2:中断类型号20H~27H OUT 51H,AL MOV AL,00000100B;OUT 51H,AL
ICW3:INT引脚连主片IR4
MOV AL,00000001B;ICW4:完全嵌套,非缓冲,非自动中断结束 OUT 51H,AL
从片二:
MOV AL,00010001B;ICW1:边沿触发,级联 OUT 0A0H,AL
MOV AL,00110000B;ICW2:中断类型号30H~37H OUT 0A1H,AL MOV AL,00000110B;OUT 0A1H,AL
ICW3:INT引脚连主片IR6
MOV AL,00000001B;ICW4:完全嵌套,非缓冲,非自动中断结束 OUT 0A1H,AL
8.24 答:MOV AL, 13H
OUT 50H, AL ;初始化ICW1,设置为边沿触发,单片工作
MOV AL, 08H
OUT 51H, AL ;ICW2 ;中断类型号的高5位为00001B,即中断类型号为08H~0FH MOV AL, 0BH
OUT 51H, AL ; 初始化ICW,一般全嵌套缓冲方式,中断非自动结束
48.25 答:8259A可通过设置操作控制字的指定位。下:
MOV AL,23H MOV 20H,AL
发送中断结束命令(EOI命令),来清除ISR
的值为23H,用低位端口地址(即A0=0)进行操作,因此可编程如
8.26 答:1)设计必要的中断源,确定它们提出的中断请求的方式。
2)编写初始化程序。根据急迫程度的不同,规定好中断源的优先级别,以确定当几个中断源同时请求时,处理机能有一个先后响应次序。
3)当处理机响应中断后,需要把被中断程序的现场、断点保护起来,以便中断处理结束后能返回原程序。 4)中断服务程序设计。 5)恢复现场,返回原程序。
8.27 答:执行INT 8之后,(SP)=00FAH,(SS)=0300H,(IP)=0040H,(PSW)=0040H。 由于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、04AH。
初始化编程为:
;主片初始化编程 MOV DX,040H
MOV AL,11H ;ICW1 OUT DX,AL MOV DX,042H
MOV AL,20H ;ICW2 OUT DX,AL
MOV AL,0CH ;ICW3 OUT DX,AL
MOV AL,11H ;ICW4 OUT DX,AL ;从片一初始化编程 MOV DX,044H
MOV AL,11H ;ICW1 OUT DX,AL MOV DX,046H
MOV AL,30H ;ICW2 OUT DX,AL
MOV AL,03H ;ICW3 OUT DX,AL
MOV AL,01H ;ICW4 OUT DX,AL ;从片二初始化编程 MOV DX,048H
MOV AL,11H ;ICW1 OUT DX,AL MOV DX,04AH
MOV AL,40H ;ICW2 OUT DX,AL
MOV AL,04H ;ICW3 OUT DX,AL
MOV AL,01H ;ICW4 OUT DX,AL
因篇幅问题不能全部显示,请点此查看更多更全内容