实验十五 安装新的 int 9 中断例程
安装一个新的int 9中断例程,功能:在 DOS 下,按下 “A” 键后,除非不再松开,如果松开,就显示满屏幕的”A“,其他的键照常处理。
提示,按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。断码 = 通码 + 80h。
求解过程
(1)改变屏幕显示的内容
改变从 B800H 开始的 4000 个字节中的所有偶地址单元中的内容(设置成字符A),当前屏幕显示的内容即发生改变。程序如下:
(2)其他键照常处理
可以调用原 int 9 中断处理程序,来处理其他的键盘输入。
(3)原 int 9 中断例程入口地址的保存
因为在编写新的 int 9 中断例程中要调用原 int 9 中断例程,所以,要保存原 int 9 中断例程的入口地址。保存在哪?显然不能保存在安装程序中,因为安装程序返回后地址将丢失,这里将地址保存在 0:200 单元处。
(4)新 int 9 中断例程的安装
这里只是安装一段程序,在之前的实验中已经做过。可以将 int 9 中断例程安装在 0:204 处。
完整程序
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start