当前位置:鱼C工作室 >汇编语言 > 查看文章

外中断03 – 零基础入门学习汇编语言71

第十五章:外中断03

 

让编程改变世界

Change the world by program


 

继续编写int 9中断例程

 

第三步:如果是Esc键的扫描码,改变显示的颜色后返回。。。。。。

那么,下一个问题:如何改变显示的颜色?

显示的位置是屏幕的中间,即第12行40列,显存中的偏移地址为:160*12+40* 2。所以字符的ASCII码要送入b800:160*12+40*2处。 而b800:160*12+40*2+1 处是字符的属性,我们只要改变此处的数据就可以改变在b800:160*12+40*2 处显示的字符的颜色了。 该程序的最后一个问题是,要在程序返回前,将中断向量表中的ini 9中断例程的入口地址恢复为原来的地址。否则程序返回后,别的程序将无法使用键盘。   经过分析,整理得到完整的程序代码:相关代码下载(http://bbs.fishc.com) 注意,本章中所有关于键盘的程序,因要直接访问真实的硬件,则必须在DOS实模式下运行。 在Windows 2000 的DOS 方式下运行,会出现一些和硬件工作原理不符合的现象。

检测点15.1

 

安装新的 int 9中断例程

下面,我们将安装一个新的int 9中断例程,使得原int 9中断例程的功能得到扩展。 任务:安装一个新的int 9中断例程 功能:在DOS下,按F1键后改变当前屏幕的显示颜色,其他的键照常处理。

我们进行一下分析:

(1)改变屏幕的显示颜色 怎么改变屏幕的颜色呢? 学习win 32 的朋友立马百度:有相应的函数吗? 其实,我们认真考虑下原理应该不难:改变从B800 开始的4000 个字一节中的所有奇地址单元中的内容,当前屏幕的显示颜色即发生改变。 实现 – – – – > > >   改变屏幕的显示颜色程序

mov ax,0b800h
	mov es,ax
	mov bx,1
	mov cx,2000
s: 	
	inc byte ptr es:[bx]
	add bx,2
	loop s
    (2)对于其他键则照常处理,我们可以调用原int 9中断处理程序,来处理其他的键盘输入。   (3)原int 9 中断例程入口地址的保存 因为在编写的新int 9中断例程中要调用原int 9中断例程,所以,要保存原int 9中断例程的入口地址。保存在哪里?显然不能保存在安装程序中, 因为安装程序返回后地址将丢失。我们因此又将目标锁定在0:200单元处。   (4)新int 9中断例程的安装 这个问题在前面己经详细讨论过。 我们可将新的int 9中断例程安装在0:204 处。

这一章中,我们通过对键盘输入的处理,讲解了CPU 对外设输入的通常处理方法。即:

(1)外设的输入送入端口; (2)向CPU 发出外中断(可屏蔽中断)信息; (3)CPU检测到可屏蔽中断信息,如果IF=1,CPU在执行完当前指令后响应中断,执行相应的中断例程; (4)可在中断例程中实现对外设输入的处理。  

分页阅读: 1 2 下一页
为您推荐

报歉!评论已关闭.