汇编题目:按A键,当松开的时显示字母A
安装一个新的int9中断例程,功能:在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏的“A”;其他的按键照常处理。
提示:按下一个键时产生的扫描码称为通码,松开一个键时产生的扫描码称为断码,断码 = 通码 + 80h
我把程序改了下,按c键,在屏幕上显示B字母,程序代码如下:
;程序功能:按A键,当松开的时候在屏幕的80*25的里面全部显示字母A,不松开则不作任何处理,其他的键照常处理。 assume cs:code data segment db 100 dup(0) data ends code segment start: mov ax,0 mov es,ax mov di,200h mov ds,ax mov si,[9*4] mov cx,4 cld rep movsb mov ax,offset int9 mov ds:[9*4],ax mov ax,cs mov ds:[9*4+2],ax call breakPoint ;还原int9中断向量表 mov ax,0 mov ds,ax mov si,200h mov di,9*4 mov cx,4 cld rep movsb mov ax,4c00h int 21h ;实现int9中断例程 int9: cli push ax mov ax,0b800h push es mov es,ax push bx mov bx,0 push cx mov cx,2000 in al,60h cmp al,2eh+80h jne int9ret mov ah,'B' s0: mov byte ptr es:[bx],ah add bx,2 loop s0 int9ret: int 80h pop cx pop bx pop es pop ax iret breakPoint: push ax pushf pop ax or ah,3 ;这里可以增加判断,例:当cx为100的时候再设置断点 push ax popf pop ax ret code ends end start
运行:我使用的是win7+masm6.15环境,通过编译、链接后,使用debug xxx.exe的形式运行,直接按g命令,则会执行到断点处call breakPoint,这时候你按c键盘,就可以在屏幕上显示B字母了。
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/5157577.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!