利用int 16h读取键盘缓冲区,int16的使用方法如下:

mov ah,0
int 16h

结果:ah=扫描码,al=ASCII码
调用int16h中断检测到键盘缓冲区后,发现缓冲区空,则循环等待,知道缓冲区中有数据;如果缓冲区满,则覆盖掉之前的数据。
本实验就是利用了16中断检测缓冲区空不断读取的特性,完成了从缓冲区读取一个字符,并作出判断,根据是否符合条件来改变屏幕的颜色值。代码如下:

assume cs:code,ss:stack,ds:data
data segmentdb 128 dup(0)
data ends   stack segment stackdb 128 dup(0)
stack endscode segment
start:mov ax,stackmov ss,axmov sp,128call get_colormov ax,4c00hint 21h
get_color:mov ah,0int 16hmov ah,1cmp al,'r'   je redcmp al,'g'je green  cmp al,'b'je bluejmp get_colorretred:shl ah,1
green:  shl ah,1blue:mov bx,0b800hmov es,bxmov bx,1mov cx,2000
setColor:and byte ptr es:[bx],11111000bor es:[bx],ahadd bx,2loop setColorjmp get_color
getColorRet:        mov ax,4c00hint 21h
;;===================================
code ends
end start

按下r键,效果如下:

按下g键,效果如下

按下b键,效果如下

汇编语言_使用int16h中断读取键盘缓冲区相关推荐

  1. NASM汇编语言与计算机系统11-9号与0X16号中断显示键盘输入(int)

    本文的示例将显示从键盘上输入一个按键,屏幕上显示该按键的内容 0x09号中断:当从键盘上敲一个按键,会将按键的内容放到0x60端口,然后执行9号中断例程,由于9号中断例程已经被bios写好了,所以会直 ...

  2. 汇编语言笔记17-使用BIOS进行键盘输入和磁盘读写

    转载必须注明出处,违者必究.http://www.cnblogs.com/dennisOne ☞使用BIOS进行键盘输入和读取键盘缓冲区 复习键盘缓冲区和状态字节 (1). BIOS键盘缓冲区是系统启 ...

  3. [书]x86汇编语言:从实模式到保护模式 -- 第九章 硬中断,使用RTC芯片实现实时时间的显示;软中断,使用BIOS中断实现键盘输入的读取和显示

    PART 1 >> 使用BIOS中断实现键盘输入的读取和显示 ; File: c09_2.asm ; Date: 20191222; =========================== ...

  4. 汇编语言随笔(15)- 对键盘输入进行处理(int 9 和 int 16h 中断例程)

    键盘输入 1,前面讲过, int 9 中断例程负责对键盘输入进行处理,具体为:从 60h 端口读出扫描码,并将其转化为相应的ASCII码或状态信息,一起存储到内存的指定空间(键盘缓冲区或状态字节)中. ...

  5. 黑马毕向东Java课程笔记(day19-11——19-22)IO字节流:字节流及其读取、字节流缓冲区、自定义字节流(读取)的缓冲区、读取键盘的输入、读取/写入转换流、流操作规律

    1.字节流--File   字节流的介绍 字符流:(一个字符2个字节16位) FileReader FileWriter. BufferedReader BufferedWriter字节流:(一个字节 ...

  6. c语言清除键盘缓冲区函数,C语言程序中清除键盘缓冲区的方法

    第四期2006年12月益阳职业技术学院学报 JournalofYiyangVocationalandTechnicalCollegeNO.4Dec.2006 C语言程序中清除键盘缓冲区的方法 杨长虹 ...

  7. getchar(关于键盘缓冲区)

    函数名: getchar 功 能: 从stdio流中读字符 用 法: int getchar(void); 注解: getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键 ...

  8. C语言编程 - 清空键盘缓冲区

    转载自这里 清空键盘缓冲区很多种方法,如用fflush(stdin); rewind(stdin);等,但是在linux这些都不起作用,还得我今天试了半天都没成功,上网搜了一下发现setbuf(std ...

  9. 汇编语言机器语言c语言区别,高级语言和汇编语言_机器语言的区别

    描述 高级语言简介 高级语言,它是在低级语言的基础上,采用接近于人类自然语言的单词和符号来表示一组低级语言程序,使编程变得更加简单,易学,且写出的程序可读性强. 高级语言的优点 1.高级语言接近算法语 ...

最新文章

  1. 关于pyecharts 地图显示添加数据的问题
  2. 汇编语言--串处理指令
  3. QT显式调用VC开发的DLL
  4. 【渝粤题库】陕西师范大学700011 新课程改革与生物教材研究
  5. python 编码规范
  6. 如何阻止表单的默认提交事件
  7. tomcat原理解析(一):一个简单的实现
  8. duilib消息机制的介绍
  9. java 浏览器 爬虫_java 网络编程-爬虫+模拟浏览器
  10. 01 掌握运算符的分类 1204
  11. 强化学习《基于价值 - Dueling Q-Learning》
  12. pip 安装 tensoflow
  13. cpu相关信息(进程、线程、核...)
  14. 第十一章Web服务器的安装与配置
  15. CS224N笔记——神经机器翻译与Attention机制
  16. ES6、7学习笔记(尚硅谷)-5-箭头函数
  17. 77个数据科学家常见面试题
  18. 基于python实现resnet_【Tensorflow系列】使用Inception_resnet_v2训练自己的数据集并用Tensorboard监控...
  19. Android中实现播放背景音乐功能
  20. 一个屌丝程序猿的人生(四十八)

热门文章

  1. 论文阅读_DeepWalk
  2. Windows下Python新手安装教程
  3. ERP、OA、BPM是什么?这样搭配对企业管理有奇效!
  4. Linux下异步IO(libaio)的使用以及性能
  5. git(一)不同情景下的git用法
  6. matlab axis坐标轴相关设置详解
  7. js实现搜索框智能搜索提示,类似百度搜索
  8. IntelliJ IDEA如何导出和导入项目
  9. matlab 对矩阵进行复制 || repmat
  10. csgo 机器人模式_csgo怎么单机跟电脑打只有每队5人,怎么增加BOT