微机原理与接口技术实验报告 下载本文

MOV MOV

SI,OFFSET BUF1 CX,10H

INT 47H ;调用中断服务

程序

MOV AX,0 MOV ES,AX

MOV DI,4*47H MOV AX,IPBAK

CLD STOSW MOV AX,CSBAK

STOSW MOV AH,4CH INT

21H

MYINT PROC FAR

;自定义显示中断,入口

参数为SI,CX

PUSH AX PUSH DX C1: MOV AL,[SI]

AND

AL,0F0H

PUSH CX MOV CL,4

17

;恢复系统中断矢量

;返回dos

;取高4位

SHR AL,CL

POP CX CMP AL,0AH

JB

C2 ADD

AL,07H

C2: ADD AL,30H MOV DL,AL

MOV AH,02H

INT

21H MOV AL,[SI] AND AL,0FH

CMP

AL,0AH

JB

C3 ADD AL,07H C3: ADD

AL,30H

MOV DL,AL

MOV AH,02H

INT 21H INC

SI

LOOP C1 POP DX POP

AX

18

;是否是A以上的数

;显示字符 ;取低4位

;显示字符

IRET MYINT ENDP CODE ENDS END START

五. 实验结果并分析。

;中断返回

六.收获体会。

在对汇编语言有了语法及基本程序设计思路的基础上,我们开始了理论的进一步学习。开始设计子程序及中断方面的设计实验。处理随机事件的程序,就称为中断服务子程序。二进制转换为16进制,从最低4位开始为1组,高位不足4个补0,没组换算一下合起来就是16进制的了,如1100011011:(0011)(0001)(1011)则16进制数为31BH或写成031BH十进制转换成16进制,就是十进制数除以16,直到商为0为止,将每次除的余数倒排,就是了。在程序中有较为抽象的地方不好理解,今后在这方面还需多多加强。

19

实验六、PC机内部8259中断及应用

一.实验内容

1.编写一键盘中断处理程序:

计算键盘中断次数,并用该程序替换系统键盘中断处理程序,使当按键8次(键盘中断产生16次)后,显示中断次数并结束应用。参见参考程序清单。 键盘中断处理的说明

当从键盘上键入一个键时,键盘上的处理器首先向微机产生硬件中断请求(IRQ1),然后将该键的扫描码传送给主机。而PC主机在IRQ1中断的作用下,调用09H型中断服务程序从键盘接口电路(口地址60H)读入扫描码,并转换成ASCII码,存入键盘缓冲区。 本实验置换系统的09H型中断服务程序,完成对键盘中断次数的统计。在该中断服务程序中,必须对键盘控制器(口地址61H)复位。复位键盘控制器只需读出端口61H的内容,并将最高位置1,再写入该端口。此外,按键按下和抬起均会引起中断,所以实际中断次数等于按键次数乘2。

修改上述程序,将按键的扫描码输出到屏幕上,并统计中断次数。

2.利用系统的1CH型中断(又称外扩的日时钟中断),编写程序,实现每隔2S在屏幕上显示一串字符“TIME TO!”,按任意键停止。

二. 分析设计思想

硬件中断是由CPU以外的器件发出的中断请求信号而引发的中断。80x86CPU只有两个引脚(INTR和NMI)可以接受外部的中断脉冲,为了管理众多的外部中断源,INTER公司设计了专用的配套芯片——8259A中断控制器 1. 8259A中断控制器简介

8259A中断控制器将中断源优先级排队、辨别中断源以及提供中断向量的电路于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设置。同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。8259A的内部结构和管脚如图11-1所示。

11-1

2. 8259A的中断过程,即微机系统响应可屏蔽中断的过程

20