实验十五_安装新的int 9中断例程

来源:互联网 发布:谷歌翻译 mac 编辑:程序博客网 时间:2024/05/18 00:42
图片载入中
安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不在松开,    如果松开,就显示满屏幕的“A”;其他的键照常处理。
提示:按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。 
断码 = 通码 + 80h。
assume cs:code code segment start:  mov ax,cs         mov ds,ax         mov si,offset int9;ds:si指向源地址         mov ax,0         mov es,ax         mov di,204h;es:di指向目的地址         mov cx,offset int9end - offset int9         cld         rep movsb                  mov ax,es:[9*4]         mov es:[200h],ax         mov ax,es:[9*4+2]         mov es:[202h],ax                  cli         mov word ptr es:[9*4],204h         mov word ptr es:[9*4+2],0         sti         mov ax,4c00h         int 21h ;---------------------------------------------------------------------------         int9:   push ax         push es         in al,60h                  pushf         call dword ptr cs:[200h]                  cmp al,9EH;9EH是'A'的断码         jne int9ret                  mov ax,0b800h         mov es,ax         mov cx,2000         mov di,0 int9_s: mov byte ptr es:[di],'A'         mov byte ptr es:[di+1],0CH;高亮红         add di,2         loop int9_s                  int9ret:pop es         pop ax         iret int9end:nop code ends end start -------------------------------------------------------------------- 总结:首先搭建框架: int9中断例程安装 保存原来的int 9中断例程 设置中断向量表 int9 int9end:nop 
心得:为了便于程序的调试,写程序时可以先把功能简化,就上述程序来说
可以用在屏幕中间显示一个字符来替代满屏‘A’这样的功能,如果实现了
一个字符的显示,说明程序(除了满屏‘A’部分)其他地方基本上正确
(不一定完全正确,原因很多),这样在把满屏显示‘A’这样的功能添加上
去,完善起程序。
0 0
原创粉丝点击