本文为《汇编语言程序设计》1503小节例程。点击链接…进课程主页。

任务:在屏幕中间依次显示 ‘a’~’z’ ,并可以让人看清,在显示的过程中,按下Esc键后,改变显示的颜色。
程序:
v0.2

assume cs:code
code segment
start:  mov ax,0b800hmov es,axmov ah,'a's: mov es:[160*12+40*2],ahinc ahcmp ah,'z'jna smov ax,4c00hint 21h
code ends
end start

v0.4

assume cs:code
stack segmentdb 128 dup (0)
stack endscode segment
start:  mov ax,stackmov ss,axmov sp,128; 显示字符mov ax,0b800hmov es,axmov ah,'a's:  mov es:[160*12+40*2],ahcall delayinc ahcmp ah,'z'jna smov ax,4c00hint 21h; 定义延时函数
delay:  push axpush dxmov dx,10hmov ax,0s1:  sub ax,1sbb dx,0cmp ax,0jne s1cmp dx,0jne s1pop dxpop axretcode ends
end start

v1.0

assume cs:codestack segmentdb 128 dup (0)
stack endsdata segmentdw 0,0
data endscode segment
start:  mov ax,stackmov ss,axmov sp,128mov ax,datamov ds,ax; 改中断例程入口地址mov ax,0mov es,axpush es:[9*4]pop ds:[0]push es:[9*4+2]pop ds:[2]mov word ptr es:[9*4],offset int9mov es:[9*4+2],cs; 显示'a'~'z'mov ax,0b800hmov es,axmov ah,'a's:   mov  es:[160*12+40*2],ahcall delayinc ahcmp ah,'z'jna smov ax,0mov es,ax; 恢复原来的地址push ds:[0]pop es:[9*4]push ds;[2]pop es;[9*4+2]mov ax,4c00hint 21h; 定义延迟程序
delay:  push axpush dxmov dx,10hmov ax,0s1:  sub ax,1sbb dx,0cmp ax,0jne s1cmp dx,0jne s1pop dxpop axret; 定义中断例程
int9:   push axpush bxpush esin al,60hpushfpushfpop bxand bh,11111100bpush bxpopfcall dword ptr ds:[0]cmp al,1 ; ESC扫描码1jne int9ret;改变颜色mov ax,0b800hmov es,axinc byte ptr es:[160*12+40*2+1]
int9ret:pop espop bxpop axiretcode ends
end start

注:此程序运行后,键盘功能将失效。程序中潜伏着一个不引人注目的小bug。——先请自行找一找

定制键盘输入处理(1503)相关推荐

  1. python模拟键盘输入_这件神器,每个 Python入门学习者都值得一试

    灰常实用的一篇文章,看完你会来点赞滴. 不论你是刚开始学 Python,还是正在啃数据分析的骨头,对你来说,不断在各种命令行窗口和编辑器里切来切去,或者不断打开各种窗口查看 matplotlib 的输 ...

  2. Android 自定义锁屏_三星Key Cafe 2021最新版下载-三星Key Cafe自定义键盘输入app v1.0.00.26...

    这次小编要为大家带来一款由三星官方正式推出的自定义键盘输入工具"Key Cafe",帮助大家能够自由定制手机输入法的主题和键位,允许用户能够自由定制键盘布局,增删案件等,设计一套最 ...

  3. bat脚本中如何多次键盘输入并判断_万花筒自动发布信息脚本【操作简单】

    亲,当您本店,请花掉您宝贵两分钟阅读下面两段话和看看下面的演示视频,这是我们多年B2B发帖行业心得和肺腑之言~~同时期待你成为我们的客户,我们好为你B2B推广之路添砖加瓦更上一层楼哦 万花筒自动发布信 ...

  4. ACMNO.44 C语言-平均分 有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)

    题目描述 有N个学生,每个学生的数据包括学号.姓名.3门课的成绩, 从键盘输入N个学生的数据, 要求打印出3门课的总平均成绩,以及最高分的学生的数据 (包括学号.姓名.3门课成绩) 输入 学生数量N占 ...

  5. ACMNO.22 C语言-公约公倍2 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 输入 两个数 输出 最大公约数 最小公倍数

    题目描述 写两个函数,分别求两个整数的最大公约数和最小公倍数, 用主函数调用这两个函数,并输出结果两个整数由键盘输入. 输入 两个数 输出 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 3 ...

  6. ACMNO.9求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。 例如:2+22+222+2222+22222(n=5),n由键盘输入。 输入 n 输出 a=2 时

    题目描述 求Sn=a+aa+aaa+-+aa-aaa(有n个a)之值,其中a是一个数字. 例如:2+22+222+2222+22222(n=5),n由键盘输入. 输入 n 输出 a=2 时的Sn 样例 ...

  7. ACMNO.3 有三个整数a b c,由键盘输入,输出其中的最大的数。 输入 一行数组,分别为a b c 输出 a b c其中最大的数 样例输入 10 20 30 样例输出 30

    基于平台Dev-C++ 5.11 题目描述 有三个整数a b c,由键盘输入,输出其中的最大的数. 输入 一行数组,分别为a b c 输出 a b c其中最大的数 样例输入 10 20 30 样例输出 ...

  8. Keypress - 捕获键盘输入的JavaScript库

    Keypress 是一个强大的 JavaScript 库,用于捕获键盘输入.这是一个有非常特殊的功能的输入捕获库,它是很容易掌握和使用,并且不依赖第三方库.在网站开发中,经常会碰到需要处理键盘输入的场 ...

  9. 有6个候选人,100个选民,每个选民选择一个侯选人投票;从键盘输入每个选民选择的候选人名,统计并输出6个候选人的票数。java,c++实现

    题目: 有6个候选人,100个选民,每个选民选择一个侯选人投票;从键盘输入每个选民选择的候选人名,统计并输出这6个候选人的票数.(10分) 代码部分: #include<iostream> ...

最新文章

  1. thinkphp当前php路径,分析thinkphp常见路径用法分析
  2. 机器学习(part2)--线性方程组的列表达
  3. 阿里巴巴是如何打通 CMDB,实现就近访问的?
  4. 最新量子通信芯片曝光!大小仅为现有装置的千分之一
  5. PAT乙级(1015 德才论)
  6. C++STL之整理算法
  7. 50: 加密与解密 、 AIDE入侵检测系统 、 扫描与抓包 、 总结和答疑
  8. 对C语言指针的学习与理解
  9. 北海焊接机器人_北海中型机械手臂生产,机械手
  10. python共享单车数据分析_利用python分析共享单车项目
  11. 介绍一款喜欢的产品|产品经理面试题第2篇
  12. 秦牧鸿蒙之体有什么用,第一五一二章 鸿蒙元气
  13. 天龙八部雁门关外的故事
  14. 快速理解论文主旨框架:论文十问法
  15. 美食分享平台有哪些?网友最喜欢的三大美食分享平台盘点
  16. Google两步验证安装使用方法
  17. PDN建立失败场景(二)
  18. mysql的binlog太大太多占用大量磁盘的解决
  19. LCS、LIS及LCIS
  20. 提高计算机网络可靠性的对策,提高计算机网络可靠性的方法研究

热门文章

  1. 汉芯一号、木兰语言再到天赐 OS,国产基础软件十年泣血,梦想何圆?
  2. 【Part2】用JS写一个Blog (node + vue + mongoDB)
  3. Android.mk 配置参数
  4. 洛谷P2904 [USACO08MAR]跨河River Crossing 动态规划
  5. 如何在ubuntu上安装nvidia-docker同时与宿主共享GPU cuda加速
  6. 苹果的安全神话即将结束?No!
  7. 一个合格的程序猿编程
  8. VS2005中ajax安装指南[转]
  9. 74cms 骑士人才系统v3.5.1 正式版
  10. C#语法糖(Csharp Syntactic sugar)大汇总