第8 章 中断习题
8.1 80x86 的中断系统有哪几种类型中断?其优先次序如何?
80x86 的中断系统可处理256 种个中断源。这些中断源可分为两大类:外部中断(硬件
中断)、内部中断(软件中断)。软件中断包括:除法中断、单步中断、指令中断、溢出中断。
硬件中断包括:INTR 和NMI。
中断优先级的次序是:内部中断(高)_非屏蔽中断_可屏蔽中断_单步中断(低)
8.3 已知中断向量表表中地址0020H ~ 0023H 的单元中依次是40H,00H,00H,01H,
并知INT 08H 指令本身所在的地址为9000H:00A0H。若SP=0100H,SS=0300H,标志寄
存器内容为0240H,试指出在执行INT 08H 指令,刚进入它的中断服务程序时,SP,SS,
IP,CS 和堆栈顶上三个字的内容(用图表示)。
执行后 SS=0300H SP=00FAH
CS=0100H IP=0040H ,堆栈顶上三个字的内容如下所示:
0 0 F AH
0 0 F CH
执行后:0300H:00FEH
初始: 0300H:01000H
8.4 某一用户中断源的中断类型号为40H,其中断服务程序名为INTR40,请用两种不
同的方法设置它的中断向量。
法一:MOV AX,0000H
MOV DS,AX
MOV SI,0100H
MOV AX,OFFSET INTR40
MOV [SI],AX
MOV AX,SEG INTR40
MOV [SI+2],AX
法二:MOV BX,SEG INTR40
MOV DS,BX
MOV DX,OFFSET INTR40
MOV AH,25H
INT 21H
8.5 试编写一段将8259A 中IRR、ISR、IMR 的内容读出,存入到BUFFER 开始的数
据缓冲区去的程序。8259A 的端口地址为30H、31H。
START: MOV AX,DATA ;取BUFFER 所在数据段的段基址DS
MOV DS,AX
LEA SI,BUFFER ;取BUFFER 所在数据段的偏移地址SI
MOV AL,0AH ;读出命令字OCW,P=0,RR=1,RIS=0,选IRR
栈区
A2H
00H
00H
90H
40H
02H
XX
OUT 30H,AL
IN AL,30H ;读出IRR 的内容
MOV [SI],AL ;IRR 内容送内存
MOV AL,0BH ;读出命令字OCW,P=0,RR=1,RIS=1,选ISR
OUT 30H,AL
IN AL,30H ;读出ISR 的内容
MOV [SI+1],AL ;ISR 内容送内存
IN AL,31H ;读IMR 的内容
MOV [SI+2],AL ;IMR 的内容送内存
8.6 某一8086CPU 系统中,采用一片8259A 进行中断管理。设8259A 工作在全嵌套
方式,发送EIO 命令结束中断,边沿触发方式,IR0 对应的中断向量号为90H,8259A 在系
统中的端口地址为FFDCH(A0=0)和FFDDH(A0=1),试编写8259A 的初始化程序段。
初试化程序段为:
MOV AX,0FFDCH ;取8259A 的偶地址端口
MOV DX,AX
MOV AL,13H ;控制初始化命令字ICW1 设为13H,中断请求为边沿触
;发方式,单片8259A,需写入ICW4
OUT DX,AL ;设置ICW1
MOV AX,0FFDDH ;取8259A 的奇地址端口
MOV DX,AX
MOV AL,90H ;中断类型码初始化命令字ICW2 设为90H,对应于
;IR0 ~IR7 的中断类型码为90H~97H
OUT DX,AL ;设置ICW2
MOV AL,01H ;方式控制初始化命令字ICW4 设为01H,全嵌套方式,
;非缓冲方式,非自动中断结束方式,工作于8086 系统中
OUT DX,AL ;设置ICW4
第九章 可编程接口芯片及应用习题
9.1 试按如下要求分别编写初始化程序,已知计数器0 ~ 2 和控制字寄存器的端口地址
依次为204H ~ 207H。
(1)使计数器1 工作在方式0,仅用8 位二进制计数,计数初值为128。
(2)使计数器0 工作在方式1,按BCD 码计数,计数值为3000。
(3)使计数器2 工作在方式2,按二进制计数,计数值为02F0H。
初始化程序为:
(1) MOV DX,207H
MOV AL,50H
OUT DX,AL
MOV DX,205H
MOV AL,80H
OUT DX,AL
(2) MOV DX,207H
MOV AL,33H
OUT DX,AL
MOV DX,204H
MOV AX,3000H ;注意,不是3000
OUT DX,AL
MOV AL,AH
OUT DX,AL
(3) MOV DX,207H
MOV AL,0B4H
OUT DX,AL
MOV DX,206H
MOV AL,0F0H
OUT DX,AL
MOV AL,02
OUT DX,AL
9.2 硬件如题9.2 图,利用PC 内部8253 定时器0,并用中断方式实现每隔1s 使发光
二极管亮暗交替显示。(PC 内部8253 输入时钟频率为1.1932MHz,8253 定时器0 端口地址
为40H,控制寄存器端口地址为43H。Y0 为350H)。
定时器计数值=1.1932MHz÷5=32864=83D5H
软件计数值:50
程序为:(硬件图见教材P345 题9.2 图)
MOV AL,34H
OUT 43H,AL
MOV AL,0D5H
OUT 40H,AL
MOV AL,83H
OUT 40H,AL
MOV BL,50
┇
T0 中断服务程序为:
DEC BL
JNZ EXIT1
MOV BL,50
MOV AL,BUF
NOT AL
MOV BUF,AL
MOV DX,350H
OUT DX,AL
EXIT1:MOV AL,20H
OUT 20H,AL;(设8259A 的端口地址为20H,21H)
IRET
9.3 硬件如题9.3 图,8253 采用方式0,BCD 码计数方式,初始值为1000,每按一次
按钮S,计数器值减1。试编程实现显示8253 当前计数值,直至计数值为0。8253 端口地
址范围为80H ~ 83H。
(略。在何处显示---屏幕/LED/液晶?)
9.4 图9.4 为一简化的键盘/数码管显示接口电路,假设端口线a’ ~ h’及1、2 脚送“1”
电平,可使显示点亮并能实现扫描,试问U1、U2 及数码显示器的选用。
(1)U1 为 (同相驱动器 / 反相驱动器)。
(2)U2 为 (同相驱动器 / 反相驱动器)。
(3)数码显示器为 (共阴 / 共阳)数码管。
(4)若A 键闭合,则端口线3,4 的电平为 。
图9.4 见教材P295
选用同相驱动器
选用反相驱动器
选用共阴数码管
若A 键闭合,则端口线3,4 的电平为0,1
9.5 硬件如题 9.5 图,试编程实现循环检测S0、S1,当S0 按下,数码管显示0,当
S1 按下,数码管显示1,S0、S1 同时按下,则结束程序。8255 的端口地址范围为80H83H。
程序为:
MOV AL,82H
OUT 83H,AL
AGAIN: IN AL,81H
TEST AL,03
JZ EXIT
TEST AL,01
JZ NEXT
MOV AL,3FH
OUT 80H,AL
JMP AGAIN
NEXT: TEST AL,02
JZ NEXT1
MOV AL,06
OUT 80H,AL
JMP AGAIN
NEXT1: MOV AL,00
OUT 80H,AL
JMP AGAIN
EXIT: MOV AH,4CH
INT 21H__