定制键盘输入处理(1503)
来源:互联网 发布:centos搭建git服务器 编辑:程序博客网 时间:2024/06/05 06:14
本文为《汇编语言程序设计》1503小节例程。点击链接…进课程主页。
任务:在屏幕中间依次显示 ‘a’~’z’ ,并可以让人看清,在显示的过程中,按下Esc键后,改变显示的颜色。
程序:
v0.2
assume cs:codecode segmentstart: mov ax,0b800h mov es,ax mov ah,'a' s: mov es:[160*12+40*2],ah inc ah cmp ah,'z' jna s mov ax,4c00h int 21hcode endsend start
v0.4
assume cs:codestack segment db 128 dup (0)stack endscode segmentstart: mov ax,stack mov ss,ax mov sp,128 ; 显示字符 mov ax,0b800h mov es,ax mov ah,'a' s: mov es:[160*12+40*2],ah call delay inc ah cmp ah,'z' jna s mov ax,4c00h int 21h ; 定义延时函数delay: push ax push dx mov dx,10h mov ax,0 s1: sub ax,1 sbb dx,0 cmp ax,0 jne s1 cmp dx,0 jne s1 pop dx pop ax retcode endsend start
v1.0
assume cs:codestack segment db 128 dup (0)stack endsdata segment dw 0,0data endscode segmentstart: mov ax,stack mov ss,ax mov sp,128 mov ax,data mov ds,ax ; 改中断例程入口地址 mov ax,0 mov es,ax push es:[9*4] pop ds:[0] push es:[9*4+2] pop ds:[2] mov word ptr es:[9*4],offset int9 mov es:[9*4+2],cs ; 显示'a'~'z' mov ax,0b800h mov es,ax mov ah,'a' s: mov es:[160*12+40*2],ah call delay inc ah cmp ah,'z' jna s mov ax,0 mov es,ax ; 恢复原来的地址 push ds:[0] pop es:[9*4] push ds;[2] pop es;[9*4+2] mov ax,4c00h int 21h ; 定义延迟程序delay: push ax push dx mov dx,10h mov ax,0 s1: sub ax,1 sbb dx,0 cmp ax,0 jne s1 cmp dx,0 jne s1 pop dx pop ax ret ; 定义中断例程int9: push ax push bx push es in al,60h pushf pushf pop bx and bh,11111100b push bx popf call dword ptr ds:[0] cmp al,1 ; ESC扫描码1 jne int9ret ;改变颜色 mov ax,0b800h mov es,ax inc byte ptr es:[160*12+40*2+1]int9ret:pop es pop bx pop ax iretcode endsend start
注:此程序运行后,键盘功能将失效。程序中潜伏着一个不引人注目的小bug。——先请自行找一找
阅读全文
0 0
- 定制键盘输入处理(1503)
- 处理键盘输入
- D3D键盘输入处理
- OSG处理键盘输入
- Cocos2Dx之处理键盘输入
- Cocos2Dx之处理键盘输入
- [Rx86OS-XV] 键盘输入处理
- c++接受键盘输入处理
- MIDP1.0中处理键盘输入
- 实时检测键盘输入(在窗体级别处理键盘输入)
- 键盘输入
- 键盘输入
- 键盘输入
- 1个键盘输入处理的例子:GetKeyState
- Cocos2Dx之处理键盘输入-欧阳左至
- Community Server-->模板定制处理
- Java 使用BufferedReader类来处理键盘输入流(键盘输入数据的标准格式)
- MapReduce-XML处理-定制InputFormat及定制RecordReader
- Intellij IDEA 2017 体验分享
- netty高性能原因,netty调优
- 命名规范问题
- 端口的读写(1402)
- 操作CMOS RAM芯片(1403)
- 定制键盘输入处理(1503)
- 改写中断例程的方法(1504)
- 用中断响应外设(1701)
- 应用:字符串的输入(1702)
- GPS用户定位
- C语言基础系列-C语言中的32个关键字-02
- Mariadb数据库:基本语句及操作 数据库及用户管理
- 让计算机“唱歌”(1704)
- “一带一路”高峰论坛联合公报