外中断不可屏蔽中断,中断类型码为2
1 | pushf |
外中断可屏蔽中断,和内中断一样
1 | ;1.获取中断类型码 |
编程:在屏幕中间依次显示”a-z”,并可以让人看清,在显示过程中,按下esc键后,改变显示颜色,依次显示”a-z”
1 | assume cs:code |
每显示一个字母后,延时一段时间,让人看清,再显示下一个字母
我们可以让cpu执行一段时间的空循环,cpu执行的速度非常块,所以循环次数一定要到
用两个16位寄存器存放32位的循环次数
1 | mov dx,10h |
上面的程序,循环1000000h次,我们可以将循环延时的程序写作一个子程序
1 | assume cs:code |
键盘输入的处理过程:
1.键盘产生扫描码
2.扫描码送入60h端口
3.引发9号中断
4.cpuz执行int9中断例程处理键盘输入
键盘输入到达60h端口后,就会引发9好中断,cpu则转去执行int 9中断例程
1.从60h端口读出键盘输入
2.调用bios的int 9中断例程,处理其他硬件细节
3.判断是否为Esc的扫描码,如果是,改变显示的颜色后返回;如果不是则直接返回
1 | assume cs:code |
实验15 安装新的int9中断例程
安装一个新的 int9 中断例程,功能:在DOS下,按下”A”键后,除非不再松开,如果松开,就显示满屏幕的”A”,其他的按键照常处理
1 | assume cs:code |