汇编题目:按A键,当松开的时显示字母A
2024-08-26 02:08:29
安装一个新的int9中断例程,功能:在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏的“A”;其他的按键照常处理。
提示:按下一个键时产生的扫描码称为通码,松开一个键时产生的扫描码称为断码,断码 = 通码 + 80h
我把程序改了下,按c键,在屏幕上显示B字母,程序代码如下:
;程序功能:按A键,当松开的时候在屏幕的80*25的里面全部显示字母A,不松开则不作任何处理,其他的键照常处理。 assume cs:code
data segment
db dup() data ends code segment
start:
mov ax,
mov es,ax
mov di,200h
mov ds,ax
mov si,[*]
mov cx,
cld
rep movsb mov ax,offset int9
mov ds:[*],ax
mov ax,cs
mov ds:[*+],ax call breakPoint ;还原int9中断向量表
mov ax,
mov ds,ax
mov si,200h
mov di,*
mov cx,
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, push cx
mov cx, in al,60h
cmp al,2eh+80h
jne int9ret
mov ah,'B'
s0:
mov byte ptr es:[bx],ah
add bx,
loop s0 int9ret:
int 80h
pop cx
pop bx
pop es
pop ax
iret breakPoint:
push ax
pushf
pop ax
or ah, ;这里可以增加判断,例:当cx为100的时候再设置断点
push ax
popf
pop ax
ret code ends
end start
运行:我使用的是win7+masm6.15环境,通过编译、链接后,使用debug xxx.exe的形式运行,直接按g命令,则会执行到断点处call breakPoint,这时候你按c键盘,就可以在屏幕上显示B字母了。
最新文章
- Java集合类中的哈希总结
- 应用matplotlib绘制地图
- 实例讲解虚拟机3种网络模式(桥接、nat、Host-only)
- HDU5845 Best Division
- ABAP字符串按长度拆分
- 来自 Github 的图形化 Git 使用教程
- jquery取消事件冒泡和取消默认行为
- MDM 证书申请流程(vendor及customer)
- SQL Server 索引的图形界面操作 <;第十二篇>;
- 重写系统中的UINavigationController返回按钮的事件
- PostgreSQL数据的导出导入 save your data!
- spring管理事务需要注意的
- NDK 线程同步
- 在容器中利用Nginx-proxy实现多域名的自动反向代理、免费SSL证书
- Linq、Lambda表达式详细总结(转)
- js获取浏览器版本信息整理
- 关于SqlCommand对象的2个方法:ExecuteNonQuery 方法和ExecuteScalar方法
- centos-6.5安装部署LNMP环境
- Codeforces 1038 E - Maximum Matching
- day69