PC汇编语言程序设计 本科 教学课件 作者 王闵 第8-11章 第9章.pptVIP

PC汇编语言程序设计 本科 教学课件 作者 王闵 第8-11章 第9章.ppt

  1. 1、本文档共91页,可阅读全部内容。
  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文档。上传文档
查看更多
表 9-3 数字键区(小键盘)对应的扫描码 根据上述程序设计模型, 编写由串口输入、 输出一个数据的程序如下: DATASEG SEGMENT BUFF1 DB ?  BUFF2 DB ′A′ DATASEG ENDS  COM2_IN PROC NEAR  PUSH DX ; 保护信息 PUSH AX MOV DX, 3FDH  TESTATE: IN AL, DX ; 读取串口状态 TEST AL, 01H ; 输入数据准备好?  JE TESTATE ; 否, 继续查询 MOV DX, 3F8H ; DX←接收缓冲寄存器地址 IN AL, DX ; 读接收缓冲寄存器 MOV BUFF1, AL ; 接收到的数据送缓冲区 POP AX POP DX ; 恢复信息 RET COM2_IN ENDP COM2_OUT PROC NEAR PUSH DX ; 保护信息 PUSH AX MOV DX, 3FDH TESTATE1: IN AL, DX ; 读取串口状态 TEST AL, 20H ; 串口保存寄存器为空?  JE TESTATE1 ; 否, 继续查询 MOV AL, BUFF2 ; 是, 从内存读取要发送的数 MOV DX, 3F8H ; DX←发送保持寄存器地址 OUT DX, AL ; 送数据到保持寄存器地址 POP AX ; 恢复信息 POP DX RET COM2_OUT ENDP … … 9.4 程序中断方式 1. 中断的一般概念 所谓中断,是指当CPU正在运行某一程序段时,由于某种特殊事件出现,CPU需要停止当前正在执行的程序,转而去执行为处理特殊事件而编写的程序,当特殊事件的处理完成后, 返回到被中断的程序继续运行。通常把引起中断的事件称为中断源; 处理特殊事件的程序称为中断服务程序或中断处理程序。 中断发生时正在执行的程序被中断的位置称为断点。为使CPU返回被中断的程序继续运行,CPU在执行中断服务程序之前必须保护现场(关于当时正在执行程序的一些状态,如IP、 PSW、 通用寄存器的内容等),而在执行中断服务程序之后必须恢复现场。 2. PC机的中断源 8088/8086具有很强而又灵活的中断处理能力,最多可以处理256种类型的中断。这些中断来自CPU的内部或外部,通常把由中断指令产生的中断或由CPU的某些错误结果产生的中断称为内中断,把来自CPU外部的由外设控制器等产生的中断称为外中断。  内中断包括除法出错中断、软中断指令引起的中断、溢出中断、单步中断等。 它们通常都需要CPU立即进行处理,这些中断都是非屏蔽中断。 外中断又分为非屏蔽中断和可屏蔽中断。连接到CPU的非屏蔽中断(NMI)通常保留给电源错等必须立即处理的异常事件,而连接到CPU的可屏蔽中断(INTR)通常通过可屏蔽中断控制器8259A连接到各外部设备控制器上。 3. PC机的中断向量码与中断向量表 为方便各种中断的处理,8088/8086 CPU为每一个中断源分配了一个中断向量码(0~FFH),这些中断向量码中的一部分由系统规定,其它的由用户根据需要设定。例如,系统规定除法出错中断向量码为0,而溢出中断的中断向量码为4,系统定时器的中断向量码为08H等。每种类型的中断都要有相应的中断服务程序, 而这些中断服务程序通常由用户编写,用户如何把自己的中断服务程序的入口地址告诉CPU呢? 为解决这个问题, 8088/8086 CPU利用内存的最低1K存储空间(地址为00~3FFH)保存各中断源的中断服务程序入口地址, 通常把这个保存各中断源中断服务程序(服务程序)入口地址的地址表称为中断向量表, 其结构如图9.3所示。 中断向量表中各中断服务程序的入口地址由四个字节构成, 其中低两个字节存放段内地址、高两个字节存放中断服务程序的段基址。用户只要将中断服务程序入口地址、段内偏移量和段基址放在中断向量表的相应位置,CPU将中断向量码乘4, 就可以得出对应的中断服务程序入口地址的地址,由中断向量表中将中断服务程序的入口地址装入IP和CS, 进入中

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档