文章目录

  • 1. 预备知识
  • 2. 检测点 17.1
  • 3. 总结

1. 预备知识

  • 一般的键盘输入,在 CPU 执行完 int 9 中断例程后,都放到了键盘缓冲区。键盘缓冲区中有 16 个字单元,可以存储 15 个按键的扫描码和对应的 ASCII 码。
  • BIOS 提供了 int 16h 中断例程供程序员调用,其中包含的一个重要功能是从键盘缓冲区读取一个键盘输入,该功能的编号为 0。从缓冲区读取一个键盘输入,并将其删除;如果键盘缓冲区为空,则循环等待,直到缓冲区中有数据。
mov ah,0
int 16h
;(ah)=扫描码,(al)=ASCII码

如,编程接收用户的键盘输入,输入 r 将屏幕上的字符设置为红色;输入 g 将屏幕上的字符设置为绿色;输入 b 将屏幕上的字符设置为蓝色。

assume cs:code
code segment
start:mov ah,0int 16h       ;调用16h中断例程的0号功能从键盘缓冲区读取数据,如果为空则循环等待mov ah,1;最后三位依次为RGBcmp al,'r'je redcmp al,'g'je greencmp al,'b'je bluejmp short sret
;移动一位AH,对应于G
red:shl ah,1
;移动两位AH,对应于R
green:shl ah,1
;不移动AH,对应于B
blue:mov bx,0b800hmov es,bx mov bx,1mov cx,2000
s:and byte ptr es:[bx],11111000bor es:[bx],ahadd bx,2loop s
sret:mov ax,4c00hint 21h
code ends
end start

运行程序,等待用户输入。输入 r:

输入 g:

输入 b:


2. 检测点 17.1

在 int 16h 中断例程中,一定有设置 IF=1 的指令。这种说法对吗?

  • IF 用于确定 CPU 是否响应可屏蔽中断,IF=1 时响应中断,IF=0 时不响应中断。
  • 当键盘缓冲区为空时,16h 中断例程循环等待,直到缓冲区中有数据。此时,如果键盘输入数据,则会调用 9h 中断将键盘数据写入键盘缓冲区。此时,需设置 IF=1 响应可屏蔽中断 9h。所以,这种说法正确。

3. 总结

  • 一般的键盘输入,在 CPU 执行完 int 9 中断例程后,都放到了键盘缓冲区。
  • BIOS 提供了 int 16h 中断例程供程序员调用,其中包含的一个重要功能是从键盘缓冲区读取一个键盘输入,该功能的编号为 0。

(三十)《汇编语言(王爽)》 | 检测点 17.1相关推荐

  1. 汇编语言(第三版)王爽著(实验十)编写子程序

    实验内容.程序清单及运行结果 显示字符串: 问题: 显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能.我们应该提供灵活的调用接口,使调用者可以决定显示的位置(行.列).内 ...

  2. 汇编语言 王爽 第四版 第三章 检测点3.2

    汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 检测点3.2 1 补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中. mov ax,1 ...

  3. 汇编语言(第三版)王爽著(实验十一)编写子程序

    三.实验内容.程序清单及运行结果 1.编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下. 名称:letterc 功能:将以0结尾的字符串中的小写字母转变成大写字母 ...

  4. 汇编语言(第三版)王爽著(实验八)分析一个奇怪的程序

    实验内容.程序清单及运行结果 分析下面的程序,在运行前思考:这个程序可以正确返回吗? 运行后思考:为什么会是这种结果? 通过这个程序加深对相关内容的理解. assume cs:codesg codes ...

  5. 汇编语言 第3版 王爽 检测点习题部分—答案及详细解析

    第一章 基础知识 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为()位. (2)1KB的存储器有() 个存储单元,存储单元的编号从()到() . (3)1KB的存储器可以存 ...

  6. 汇编语言 王爽 第四版 第二章 检测点2.2

    汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 检测点2.2 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH . 最小肯定是偏移地址为0, ...

  7. 汇编语言 王爽 第四版 第六章 检测点6.1

    汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 检测点6.1 1 下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序: assume cs:codesg cod ...

  8. 汇编语言——王爽版 总结

    汇编语言-王爽summary<考试复习版> 摆烂一学期,期末抱佛脚 只针对必要内容总结,并非按目录总结 文章目录 汇编语言-王爽summary<考试复习版> `只针对必要内容总 ...

  9. 汇编语言 王爽 第四版 实验5

    汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 实验5 编写.调试具有多个段的程序 1 编译连接下面程序,用debug加载.跟踪,回答问题. assume cs:code,ds:data, ...

  10. 汇编语言 王爽第二版 总结

    汇编语言 王爽第二版 总结,所以内容都是8086的 summary asssembly ,汇编总结 why: 最初始的编程语言就是使用打孔机,打出来的0 1 代码,然后把卡片插入到电脑中运行然后 看输 ...

最新文章

  1. java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
  2. 实体类dao接口mysql_利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件...
  3. 破解密码高手王小云教授简介
  4. 公安计算机专业就业前景,公安视听技术专业毕业后干什么
  5. jstree 节点拖拽保存数据库
  6. 151. Reverse Words in a String
  7. 软件测试工程师和WGT,软件系统测试(WGT)工程师---ATK
  8. 重要社区链接(资源技术网站)
  9. [转载]基于TFS实践敏捷-工作项跟踪
  10. 紫书 习题 8-2 UVa 1610 (暴力出奇迹)
  11. Cozmo机器人使用中文Scratch3编程案例(codelab)
  12. Hutool - 身份证验证及其信息解读封装
  13. GMS Apps安装
  14. 深度学习:透过神经网络的内在灵魂与柏拉图的哲学理念 输入数字反向的产生数字图像
  15. 想要感受三星S8屏幕的震撼 先过APP适配这道坎
  16. win10用不了计算机一级,教你一招解决Win10计算器打不开的问题
  17. 在html页面添加了评论和回复的显示页面
  18. linux grep正则表达式与grep用法详解
  19. linux中 likely与unlikely
  20. 使用MSF进行提权(windows提权、linux提权、wesng使用)

热门文章

  1. pygame----Surfarray介绍
  2. The GAMEE Jam 游戏创作大赛
  3. 参数估计之点估计和区间估计
  4. SAP HANA 学习指南
  5. [从头学数学] 第124节 不等式与不等式组
  6. ITK学习笔记(一)ITK的使用
  7. buuctf 萌萌哒八戒
  8. 【STM32H7】第19章 ThreadX GUIX的OLED单色屏移植
  9. 卡方检验、T检验+F检验、方差分析、Z检验
  10. 段路由SR(Segment Routing)是基于源路由理念而设计的在网络上转发数据包的一种技术架构