王爽第3版《汇编语言》讲稿-17.pptVIP

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
王爽第3版《汇编语言》讲稿-17

《汇编语言》课件             王爽 著-清华大学出版社 第17章 使用BIOS进行键盘输入和磁盘读写 17.1 int 9中断例程对键盘输入的处理 17.2 使用int 16h中断例程读取键盘缓冲区 17.3 字符串的输入 17.4 应用int13h中断例程对磁盘进行读写 引言 大多数有用的程序都需要处理用户的输入,键盘输入是最基本的输入。 程序和数据通常需要长期存储,磁盘是最常用的存储设备。 BIOS 为这两种外设的I/O提供了最基本的中断例程,在本章中,我们对它们的应用和相关的问题进行讨论。 17.1 int 9中断例程对键盘输入的处理 我们已经讲过,键盘输入将引发9 号中断,BIOS 提供了int 9 中断例程。 CPU 在9 号中断发生后,执行int 9中断例程,从60h 端口读出扫描码,并将其转化为相应的ASCII 码或状态信息,存储在内存的指定空间(键盘缓冲区或状态字节)中。 17.1 int 9中断例程对键盘输入的处理 一般的键盘输入,在CPU 执行完int 9 中断例程后,都放到了键盘缓冲区中。 键盘缓冲区中有16 个字单元,可以存储15个按键的扫描码和对应的入ASCII 码。 17.1 int 9中断例程对键盘输入的处理 下面我们按照键盘缓冲区的逻辑结构,来看一下键盘输入的扫描码和对应 ASCII 码是如何写入键盘缓冲区的。 注意 17.1 int 9中断例程对键盘输入的处理 注意: 在我们的课程中,仅在逻辑结构的基础上,讨论BIOS键盘缓冲区的读写问题。 其实键盘缓冲区是用环形队列结构管理的内存区,但我们不对队列和环形队列的实现进行讨论,因为那是另一门专业课《数据结构》的内容。 17.1 int 9中断例程对键盘输入的处理 下面,我们通过下面几个键: A、B、C、D、E、Shift_A、A 的输入过程,简要地看一下int 9 中断例程对键盘输入的处理方法: 处理键盘输入演示 17.2 使用int 16h中断例程读取键盘缓冲区 BIOS提供了int 16h 中断例程供程序员调用。 int 16h 中断例程中包含的一个最重要的功能是从键盘缓冲区中读取一个键盘输入,该功能的编号为0。 17.2 使用int 16h中断例程读取键盘缓冲区 下面的指令从键盘缓冲区中读取一个键盘输入,并且将其从缓冲区中删除: mov ah,0 int 16h 结果:(ah)=扫描码, (al)=ASCII码。 17.2 使用int 16h中断例程读取键盘缓冲区 下面,我们接着上一节中的键盘输入过程,看一下 int 16h 如何读取键盘缓冲区。 int 16h读键盘缓冲区演示 17.2 使用int 16h中断例程读取键盘缓冲区 从上面我们可以看出,int 16h 中断例程的 0 号功能,进行如下的工作: (1)检测键盘缓冲区中是否有数据; (2)没有则继续做第1 步; (3)读取缓冲区第一个字单元中的键盘输入; (4)将读取的扫描码送入ah,ASCII 码送入al; (5)将己读取的键盘输入从缓冲区中删除。 17.2 使用int 16h中断例程读取键盘缓冲区 可见,B1OS 的int 9 中断例程和int 16h 中断例程是一对相互配合的程序,int 9 中断例程向键盘缓冲区中写入,int 16h 中断例程从缓冲区中读出。 它们写入和读出的时机不同,int 9 中断例程在有键按下的时候向键盘缓冲区中写入数据; 而int 16h 中断例程是在应用程序对其进行调用的时候,将数据从键盘缓冲区中读出。 17.2 使用int 16h中断例程读取键盘缓冲区 我们在编写一般的处理键盘输入的程序的时候,可以调用int 16h 从键盘缓冲区中读取键盘的输入。 编程,接收用户的键盘输入,输入“r”,将屏幕上的字符设置为红色:输入“g”, 将屏幕上的字符设置为绿色;输入“b ”,将屏幕上的字符设置为蓝色。 程序源码 特别提示 检测点17.1(page304) 没有通过此检测点,请不要向下进行! 17.3 字符串的输入 用户通过键盘输入的通常不仅仅是单个字符而是字符串。 下面我们讨论字符串输入中的问题和简单的解决方法。 17.3 字符串的输入 最基本的字符串输入程序,需要具备下面的功能: (1) 在输入的同时需要显示这个字符串; (2)一般在输入回车符后,字符串输入结束; (3)能够删除已经输入的字符。 对于这三个功能,我们可以想象在DOS 中,输入命令行时的情况。 17.3 字符串的输入 编写一个接收字符串的输入子程序,实现上面三个基本功能。因为在输入的过程中需要显示,子程序的参数如下: (dh)、(dl)=字符串在屏幕上显示的行、列位置

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档