3
1000:0F6H
B1
1000:0F8H
2
1000:0FAH B1
1000:0FCH 1
1000:0FEH RETN
1000:100H
7. 写出分配给下列中断类型号在中断向量表中的物理地址。
(1) INT 12H (2) INT 8
答案:
(1) 00048h
(2) 00020h
8. 试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程结束。两个状态寄存器的端口地址分别是0024和0036,与其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。
答案:
mov si, 0
mov di, 0
test12: in al, 0024h
test al, 08
jnz exit
in al,0036h
test al, 08
jnz exit
dev1: in al, 0024h
test al, 01
jz dev2
in al, 0026h
mov buffer[si], al
inc si
dev2: in al, 0036h
test al, 01
jz test12
in al, 0038h
mov buff2[di],al
inc di
jmp test12
exit: ret
9. 给定(SP)=0100,(SS)=0300,(FLAGS)=0240,存储单元的内容为(00020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT 8,试问执行INT 8指令后,SP,SS,IP,FLAGS的内容是什么?栈顶的三个字是什么?
答案:
(SP) = 00FA
(SS) = 0300
(IP) = 0040
(FLAGS) = 0040
堆栈内容:
00A1H
0900H
0240H
10. 编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为;
输入数字: 0,1,2,3,4,5,6,7,8,9
密码数字: 7,5,9,1,3,6,8,0,2,4
答案:
scode db 7,5,9,1,3,6,8,0,2,4
buffer db 10 dup(?)
; … …
mov si,0
mov cx,10
lea bx,scode
input: mov ah,01
int 21h
cmp al,0ah
jz exit
and al,0fh
xlat
mov buffer[si],al
inc si
loop input
exit: ret
第7章 中断控制器8259A
1.试说明一般中断系统的组成和功能。
答:处理器内部应有中断请求信号的检测电路,输出中断响应信号,保存断点的逻辑,转向中断处理程序的逻辑,中断返回逻辑。系统中要有一中断控制器,管理多个中断源,提供处理机所需的中断处理信息。系统中请求中断处理的I/O接口电路要有提供中断请求信号及接收中断响应信号的逻辑。
2.什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?
答:处理机可处理的每种中断的编号为中断类型码。中断向量是指中断处理程序的入口地址,由处理机自动寻址。中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。在8086系统中,中断类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量。
3.什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不同?
答:硬件中断是通过中断请求线输入电信号来请求处理机进行中断服务;软件中断是处理机内部识别并进行处理的中断过程。硬件中断一般是由中断控制器提供中断类型码,处理机自动转向中断处理程序;软件中断完全由处理机内部形成中断处理程序的入口地址并转向中断处理程序,不需外部提供信息。
4.试叙述基于8086/8088的微机系统处理硬件中断的过程。
答:以INTR请求为例。当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,清除IF、TF;8086将类型码乘4后得到中断向量入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求的响应过程。