80x86汇编语言程序设计课件.ppt

  1. 1、本文档共168页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 6. 禁止/允许相应的硬件中断的方法 中断屏蔽寄存器的8位对应8个硬件中断源, 其中,端口21H的第0 ~ 7位对应IRQ0 ~ IRQ7,端口0A1H的第0 ~ 7位对应IRQ8 ~ IRQ15。 通过设置某位为1/0,以禁止/允许相应的硬件中断。 7. CPU对可屏蔽中断的响应条件 该设备的中断请求未被屏蔽,即相应的中断屏蔽位为0。 CPU允许中断,即IF=1。 ? * 8.3 DOS与BIOS服务 1.DOS系统调用:INT 21H AH = 25H:设置中断向量 AH = 35H:获取中断向量 AH = 31H:程序终止并驻留内存 ? 2.BIOS服务 (1)INT 10H:显示器输出 AH = 0AH:显示字符 AH = 0EH:显示字符 (2)INT 16H:键盘输入 AH = 0:从键盘读一键 AH = 1:判断是否有键可读 AH = 2:返回变换键的当前状态 * 8.4 DOS环境下的可执行程序 8.4.1 程序段前缀PSP 当程序在执行前装入内存时,DOS确定当前可用内存的最低地址作为程序装入的起点,在该起点处首先建立一个256(100H)字节的程序段前缀PSP(Program Segment Prefix),随后装入程序本身。 PSP中包含许多信息,但其中的大多数信息用处不大,有些因过时而已经被弃用。 * 8.4.2 .EXE文件与.COM文件 1..EXE文件 可以包含多个代码段、数据段和堆栈段,执行的起始地址可任意指定。 磁盘上的.EXE文件由两部分构成:文件头与程序本身。其中,文件头是由连接器LINK生成的,包含文件的重定位等信息,供DOS装入文件时使用。 通常,段地址在程序装入内存前是无法确定的,因此,在.EXE文件中只能使用相对地址,在装入内存时,根据程序装入的起始地址转换为绝对地址。 ? 2..COM文件 只包含一个段,同时作为代码段、数据段和堆栈段。 在段首必须预留100H个字节的空间,装入内存后由PSP占用。 程序执行的起始偏移地址必须为100H。 磁盘上的.COM文件与装入内存后的内容完全一样,不包含文件头等附加信息。因此,在.COM文件中不能(也没有必要)使用需要重定位的指令。 * 8.5 中断服务程序设计 8.5.1 中断服务程序(ISR)设计的基本方法 中断服务程序的基本结构。 设计中断服务程序应注意的问题: 中断服务程序是FAR过程,必须执行IRET指令实现返回。 在ISR的执行过程中,若允许硬件中断,应使用STI指令。 必须保护所有要修改的寄存器,尤其是硬件中断或异常的ISR。 对于硬件中断服务程序,应在返回之前,向中断控制器发送中断结束命令。 主程序的基本结构。 实例。 * 8.5.2 驻留程序设计 (1)什么是驻留程序(TSR程序)? 驻留程序在执行结束后,使程序的一部分仍留在内存,受到操作系统的保护,可以由其它程序再次激活。 (2)驻留程序的基本框架 通常分为两部分:常驻部分和暂驻部分。当TSR程序执行时,由暂驻部分完成初始化,将某个中断向量指向常驻部分对应的ISR,然后驻留退出。将来真正起作用的是常驻部分。 在设计TSR程序时,为了不浪费内存空间,最好将常驻部分放到低内存地址,使暂驻部分位于高地址。较简单的方法是把要常驻的代码和数据组织在一个段中,并使之作为装入内存的第1个段。 (3)设计驻留程序应注意的问题 由于已驻留的TSR程序随时可能会中断其它程序的执行,因此,必须保护要修改的所有寄存器的值。此外,由于INT 21H是不可重入的,因此,在驻留的中断服务程序中,要避免调用INT 21H。 * 8.5.3 键盘程序设计 1. 扫描码 键盘上每个键的位置编码。 每次按键产生两个扫描码,分别为接通扫描码(按下)和断开扫描码(释放)。 2. 键盘输入处理机制 每当按键动作产生时,系统做如下处理: ① 将扫描码放入I/O端口60H,并触发键盘中断INT 9。 ② 如果允许键盘中断则进入INT 9的中断服务程序。 ③ INT 9 ISR从端口60H读扫描码,并根据扫描码所对应的按键作相应处理。 对于某些扫描码为多个字节的键,每次按下会触发多次键盘中断。 * 3. 与键盘有关的BIOS数据:段地址为40H 键盘缓冲区:地址为40:1EH 变换键状态字节:地址为40:17H 4

文档评论(0)

爱遛弯的张先生 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档