汇编题目:按A键,当松开的时显示字母A
2016-01-25 15:25
232 查看
安装一个新的int9中断例程,功能:在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏的“A”;其他的按键照常处理。
提示:按下一个键时产生的扫描码称为通码,松开一个键时产生的扫描码称为断码,断码 = 通码 + 80h
我把程序改了下,按c键,在屏幕上显示B字母,程序代码如下:
运行:我使用的是win7+masm6.15环境,通过编译、链接后,使用debug xxx.exe的形式运行,直接按g命令,则会执行到断点处call breakPoint,这时候你按c键盘,就可以在屏幕上显示B字母了。
提示:按下一个键时产生的扫描码称为通码,松开一个键时产生的扫描码称为断码,断码 = 通码 + 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字母了。
相关文章推荐
- 如何在DJANGO里获取?带数据的东东,基于CBV
- 图片懒加载插件lazyload使用方法
- CSS样式设置
- 校招笔试中组合常考题
- Android viewpager结合fragment的相关优化
- debian下完成 haproxy +keepalived 高可用web集群架构
- Android BroadcastReceiver应用详解
- 【POJ 3254】 Corn Fields(状压DP)
- [MySQL]索引
- 摊还分析
- iOS UIWebView 代理方法
- str_pad() 将字符串填充成指定长度的字符串
- php文件下载功能
- 多元线性回归 机器学习基础(1)
- 已知时间与系统时间的比较
- 微信公众平台开发(PHP) 数据库操作
- Linux programming
- javascript基本语法和变量(转)
- hdu 2523 sort again
- MATLAB操作TXT文件