int 9和int 16h中断-键盘输入、读取
8086PC机当中,键盘的输入将会引发9号中断,BIOS提供了int 9的中断例程。CPU在9号中断发生之后,会去执行int 9中断例程,然后从60h端口当中读取出扫描码,并且将其转换为相应的ASCII码和状态信息,存储在内存的指定的空间(键盘缓冲区或状态字节)当中
一般的键盘输入,在CPU执行完int 9 中断例程之后都放到了键盘缓冲区当中,键盘缓冲区有16个字单元,可以存储15个按键扫描码和对应的ASCII码,这里之所以只能放15个是因为键盘缓冲区是用环形队列结构管理的内存区域,虽然缓冲区的本身长度为16个字,但出于判断“对列满”的考虑,它最多只能保存15个键盘信息。
环形队列的关键是判断队列为空,还是为满。当tail追上head时,队列为满时,当head追上tail时,队列为空。要知道是满还是空,可以根据下面的方法来判断
1、添加一个标志位tag
当head赶上tail,队列空,则令tag=0
当tail赶上head,队列满,则令tag=12、限制tail赶上head,即队尾结点与队首结点之间至少留有一个元素的空间
队列空: head==tail
队列满: (tail+1)% MAXN ==head
上面提到了我们使用shift+A的时候,其实输出到屏幕的是大写字母A,我在Mac下面试验也是一样的,说明其实大致的机制都是差不多的
程序如下所示
assume cs:codecode segment
start:mov ah,0int 16hmov ah,1cmp al,'r' ;要是输入的是r,就跳到Red处je redcmp al,'g' ;如果输入的是g,那么就跳到green处je greencmp al,'b' ;如果输入的是b,那么就跳到blue处je bluejmp short sretred: shl ah,1
green: shl ah,1
blue:mov bx,0b800h ;设置要改变的字符地址处mov es,bxmov bx,1mov cx,2000s:and byte ptr es:[bx],11111000b ;要改变的是第0、1、2位or es:[bx],ahadd bx,2loop ssret:mov ax,4c00hint 21hcode ends
end start
执行结果如下所示
int 9和int 16h中断-键盘输入、读取相关推荐
- 6.S081-7中断(键盘输入+屏幕输出) - Interrupts
6.S081-7中断(输入输出) - Interrupts 文章目录 6.S081-7中断(输入输出) - Interrupts 本节课的主要内容: 仔细越读以下内容,将会对理解接下来的课程有帮助: ...
- 汇编语言随笔(15)- 对键盘输入进行处理(int 9 和 int 16h 中断例程)
键盘输入 1,前面讲过, int 9 中断例程负责对键盘输入进行处理,具体为:从 60h 端口读出扫描码,并将其转化为相应的ASCII码或状态信息,一起存储到内存的指定空间(键盘缓冲区或状态字节)中. ...
- 贺利坚老师汇编课程73笔记:键盘输入的处理过程
指路老师的博客 键盘的每一个键相当于一个开关,键盘中有一个芯片对键盘的每一个键的开关状态进行扫描 按下一个键的操作 开关接通,该芯片就产生了一个扫描码,扫描码说明按下的键在键盘的位置 扫描码被送入主板 ...
- 校招小白机考入坑之从键盘输入java的各种数据类型
//1.从键盘输入一个整型(其他基本类型类似) Scanner sc =new Scanner(System.in); sc.hasNextInt(); int str1 = sc.nextInt() ...
- C语言程序设计第三版苏小红5.7键盘输入字符,字母大写改小写,小写改大写,并输出ASCII码
#include<stdio.h> int main() { char ch; printf("从键盘输入一个字符:\n"); ch=getchar(); if(ch& ...
- python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...
- python二维数组换行输出_python 二维数组切割Python读取键盘输入的2种方法
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...
- python获取键盘输入_python之判断数据异常Python读取键盘输入
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: <python之判断数据异常Python读取键盘输入>总结了关于python网站教程,对于我们来www. ...
- 键盘I/O中断调用(INT 16H)和常见的int 17H、int 1A H
说明:下文为转载的,下文中的"扩展码"其实就是"扫描码(scan code)"的意思 键盘扫描码:是每个键盘生产厂家为自己所生产的键盘设置的扫面方式,目的检测是 ...
最新文章
- cmd做个定时弹窗_揭秘200元山寨苹果耳机!一颗耳边的“定时炸弹”...
- esp32 micropython spiffs_二十一,ESP32 SPIFFS:读取一个文件
- 练习2: Python基本图形绘制 (第2周)
- 历届奥运会中国金牌数
- 技术干货|如何在企业内部实现云信私有化?
- Java客户端操作elasticsearch--创建索引(集群模式下)
- 数据采集录入填报时如何只更新当前修改行
- python-虚拟环境操作指令-centos环境下
- 模型秒变API只需一行代码,支持TensorFlow等框架
- 解决Gerrit的git unpack error问题
- 3767(按姓名排序)
- 2020 APP批量头像,高质量严选真实用户头像
- 男生的长相到底有多重要?
- vga焊接线顺序_VGA线的焊接方法,15线与7线分别如何焊接?
- 腾讯云实验室 Gitea 互动教程上线啦
- 微信查好友单删检测方法,无打扰,快来学
- 分享50个优秀的电子商务网站设计案例
- 手机卫星定位系统_手机一键“连接”北斗卫星导航?这一设置打开:立马连接,很简单...
- 关于学习的过程:痛并快乐着是一种收获
- Stroke:脑白质微结构完整性可预测脑卒中预后功能恢复情况
热门文章
- EL表达式和JSTL标签:简化JSP的Java代码
- 学编程为什么要学数据结构?
- 2020JCIM | ChemGrapher+:Optical Graph Recognition of Chemical Compoundsby Deep Learning
- 逻辑回归_sigmod函数
- 计时器(视频的计时:时间码)
- ffmpeg c++ vs2017 将pcm转mp3格式
- centos7 部署pbootcms nginx php-fpm php
- python-numpy库
- c++ 哥德巴赫猜想
- 2021第六届GPLT 团体程序设计天梯赛CCCC 个人题解