微机原理与接口技术第六章作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档