第5章__BIOSDOS中断.docVIP

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

第 5章 BIOS/DOS中断 BIOS是系统板提供的基本输入输出程序。在存储器系统中,从地址0FE000H开始的8K ROM中装有BIOS例行程序。BIOS给PC系列的不同微处理器提供了兼容的系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来管理系统的基本输入/输出。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中提供的例程,就可以实现相应的功能,所以利用BIOS功能编写的程序简洁,可读性好,而且易于移植。 DOS是PC机上重要的操作系统,它和BIOS一样提供近百个设备管理、目录管理和文件管理程序,是一个功能齐全、使用方便的中断例行程序的集合。由于DOS模块提供了更多更必要的测试,使用DOS操作比使用相应功能的BIOS操作更简易、更方便,而且DOS对硬件的依赖性更少些。   BIOS与DOS功能都是通过软中断调用的,它们分层次使用,其关系如图5.1所示。在中断调用前需把功能号装入AH寄存器,把子功能号装入AL寄存器,除此而外,通常还需在寄存器中提供专门的调用参数。一般地说,调用DOS或BIOS功能时,有以下几个基本步骤:   1.将调用参数装入指定的寄存器中;   2.如需功能号,把它装入AH;   3.如需子功能号,把它装入AL;   4.按中断号调用DOS或BIOS中断;   5.检查返回参数是否正确。   在一些情况下,既能选择DOS也可以选择BIOS功能调用来实现同样的功能。例如,打印机输出一个字符,可用DOS中断INT 21H的功能5,也可用BIOS中断INT 17H的功能0。因为BIOS比DOS更靠近硬件,需要掌握较多的硬件知识,因此建议尽可能地使用DOS功能,但在少数情况下必须使用BIOS功能,例如,BIOS中断INT 17H的功能2为读打印机状态,它就没有等效的DOS功能。   DOS中断能处理大多数的I/O,但有一些功能还没有提供,如声音控制等,这就要考虑用I/O指令在端口级上编程,或使用高级语言编程。 5.1 键盘I/O 键盘是PC机上最主要的数据输入设备。如何通过键盘将数据输入到计算机中是我们所关心的一个重要问题。当有按键按下时,必须通知计算机此时有键按下,并且应确定是哪一个键被按下,这个键的识别是由键盘处理器完成的,键盘处理器识别一个键后,通过硬件中断,将按键信息传送的计算机中。 键盘数据传送过程如图5.2所示。 5.1.1 字符码与扫描码 在键盘中有一个键盘处理器对键按下和键释放进行处理,当我们按下一个键时,键盘处理器将产生该键对应的位置码称为键盘扫描码(见表5-1),并请求INT 09H中断,这个中断是指向BIOS的一个中断处理程序,该中断处理程序从I/O端口60H读取键盘的扫描码,将取得的扫描码转换成相应的字符码(大部分键的字符码是一个标准的ASCII码,没有相应ASCII码的键,如Alt和功能键F1--F10,字符码为0,还有一些非ASCII码键产生一个指定的操作,如打印屏幕内容等),并将该扫描码和与之对应的字符码(如果有的话)组合在一起,传送到BIOS的键盘缓冲区的两个字节中,以便于请求键盘输入的软件中断INT 16H能从键盘缓冲区读取相应的按键信息。图5.2说明了这个过程。 当按下一个键时,键盘处理器自动产生该键的第一个8位扫描码(最高位为“0”,称为通码)并请求INT 09H中断,该码就是我们所说的键盘扫描码,如果在1/2秒内释放该键,键盘处理器产生该键的第二个扫描码(在第一个扫描码的基础上加80H,即置最高位为“1”),称为断码,也请求INT 09H中断。例如,按下Esc键时产生的通码为01H,放开Esc键时产生的断码为81H。这第二个扫描码告诉INT 09H中断处理程序,该键已经释放。如果你按一个键超过1/2秒,则键盘处理为打字状态,自动重复这个键的操作,直到你释放该键。 值得注意的是,在键盘上有一些键没有对应的ASCII码,如Alt、Shift、Ctrl键,它们只表示键盘的状态,在按动这些键时,同样产生INT 09H中断,所不同的是中断处理程序不传送任何按键数据到键盘缓冲区,只是将键盘数据区中的键盘状态字节的相应位进行设置,以便于后续的程序判断键盘的状态。 在存储器的40H段,存在两个键盘数据区,以指示和控制键盘当前状态。键盘数据区1包含40:17H、40:18H两个字节,它们表示当前键盘的状态,它们各位为“1”的含义如表5-2所示: 表5-1 键盘部分键的扫描码 键 扫描码 (通码) 扫描码 (断码) 键 扫描码 (通码) 扫描码 (断码) 键 扫描码 (通码) 扫描码 (断码) 键 扫描码 (通码) 扫描码 (断码) 1 02 82 H 23 A3 Space 39 B

文档评论(0)

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

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

1亿VIP精品文档

相关文档