微机原理与接口技术第六章作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6-3 CPU响应中断时的处理过程是什么?在各个处理环节主要完成哪些操作?解:中断处理过程通常由中断请求、中断响应、中断处理和中断返回四个环节完成。
(1)中断请求:中断源需要进行中断服务时,由硬件产生一个中断信号INTR发给CPU且保持到CPU响应。
(2)中断响应:CPU在当前指令执行结束后采样查询INTR,若中断请求信号有效且允许响应INTR中断(IF=1),则向请求设备送回低电平有效的中断响应信号
INTR,自此系统自动进入中断响应周期,并由硬件自动完成内容入栈,清除TF
和IF标志、断点(中断返回之后将要执行的指令地址)入栈,取中断服务程序的入口地址等一系列操作,继而转去执行中断服务程序。
(3)中断处理:执行中断的主体部分。不同的中断请求源,其中断处理的内容是不同的。需要根据中断请求源所要完成的功能,编写相应的中断服务程序存入内存。等待中断响应后调用执行。
(4)中断返回:又中断服务程序中的中断返回指令IRET完成。执行该指令时,将压入对战的断点和标志位弹出,使CPU转向被中断的现行程序中继续执行。
6-10 中断向量表用来存放什么内容?它占用多大的存储空间?存放在内存的哪个区域?可以用什么方法写入或者读取中断向量表的内容?
答:中断向量表用来存放中断服务程序的偏移地址和段基址。占用1KB内存。最低端的1KB RAM区,地址范围是000H~3FFH。
写入方法:1、用传送指令直接装入。
2、DOS功能调用:INT 21H
(AH)=25H
(AL)=中断类型号
(DS:DX)=中断服务程序的入口地址
读出方法:1、用传送指令直接读。
2、DOS功能调用:INT 21H
(AH)=35H
(AL)=中断类型号
出口参数:(ES:BX)=中断服务程序的入口地址
6-19 某系统使用两片8259A管理中断,从片的INT连接到主片的IR2请求输入端。设主片工作于边沿触发、特殊完全嵌套、非自动结束和非缓冲方式,中断类型号为70H,端口地址为80H和81H;从片工作与边沿触发、完全嵌套、非自动结束和非缓冲方式,中断类型号为40H,端口地址为20H和21H。要求:(1)画出主、从片级联图
(2)编写主、从片初始化程序
解:
主片CS由A19-A1=0000 0000 0000 1000 000和M/IO给出低电平,从片CS由A19-A1=0000 0000 0000 0010 000和M/IO给出低电平。
主片8259A
MOV AL,11H(00010001B)
OUT 80H, AL ;定义ICW1
MOV AL, 70H(01110000B)
OUT 81H, AL ;定义ICW2
MOV AL, 04H(00000100B)
OUT 81H, AL ;定义ICW3
MOV AL, 11H(00010001B)
OUT 81H, AL ;定义ICW4
MOV AL, FBH(11111011B)
OUT 81H, AL ;定义OCW1
(开放从片IR2的请求)
IN AL, 81H
AND AL, 11111011
OUT 81H, AL
从片8259A
MOV AL,11H(00010001B)
OUT 20H, AL ;定义ICW1
MOV AL, 40H(01000000B)
OUT 21H, AL ;定义ICW2
MOV AL, 02H(00000010B)
OUT 21H, AL ;定义ICW3
MOV AL, 01H(00000001B)
OUT 21H, AL ;定义ICW4
6-20 某系统由8259A的IR2引入外设中断请求(跳变信号有效),要求当CPU响应IR2请求时,输出显示字符串“****”,并中断10次退出,试编写主程序和中断服务程序。
解:
设8259A的I/O地址为20H,21H,中断类型号0AH,从IR2引入
DATA SEGMENT
MESS DB '*****',OAH,ODH,'$'
INTA00 EQU 0020H
INTA01 EQU 0021H
DATA ENDS
STACK SEGMENT STACK
DB 100H DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN:MOV AX,DATA
MOV DS,AX
MOV DX,INTA00 ;8259A初始化
MOV AL,13H ;写ICW1
OUT DX,AL
MOV DX,INTA01
MOV AL,08H ;写ICW2
OUT DX,AL
MOV AL,01H ;写ICW4
OUT DX,AL
PUSH DS
MOV AX,SEG INT-P ;设置中断矢量
MOV DS,AX
MOV DX,OFFSET INT-P
MOV AL,0AH
MOV AH,25H
INT 21H
POP DS
MOV AL,0FBH ;写中断屏蔽字OCW1
OUT DX,AL
MOV DX,INTA00
MOV AL,20H ;写中断结束方式OCW2
OUT DX,AL
MOV BX,10
WAIT1: STI ;开中断
JMP WAIT1 ;等待中断
INT-P:MOV AX,DATA ;中断服务程序入口
MOV DS,AX
MOV DX,OFFSET MESS ;输出指定字符串
MOV AH,09H
INT 21H
MOV DX,INTA00 ;写OCW2,送中断结束命令EOI
MOV AL,20H
OUT DX,AL
DEC BX ;控制10次循环
JNZ NEXT
MOV DX,INTA01 ;读屏蔽寄存器IMR
IN AL,DX
OR AL,04H ;屏蔽IR2请求
OUT DX,AL
STI ;开中断
MOV AX,4C00H ;返回操作系统
INT 21H
NEXT:IRET ;中断返回
CODE:ENDS
END MAIN