- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
复 习 1、CPU和外设传递信息的方式有哪几种? 2、 CPU和外设交换的信息有哪几种? CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序。 总结:几种传送方式的比较 无条件传送:慢速外设需与CPU保持同步 查询传送: 简单实用,效率较低. 中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销. DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送. 8.3.5 中断处理程序 编写中断处理子程序步骤: (1)保存现场,CS和IP入栈 (2)开中断,形成中断入口地址(STI) (3)处理中断,执行中断处理 (4)关中断 (CLI) (5)恢复现场 (6)中断返回(IRET) 主程序需要调用中断服务程序 调用前,需要设置中断向量 利用INT n 指令调用中断服务程序 1、设置新的中断向量 (1)首先用AH=35H的DOS系统调用得到原中断处理程序地址(返回地址在ES:BX) MOV AH,35H MOV AL,80H ;原中断号 INT 21H MOV AX,ES MOV CSR,AX ;保存原中断程序段地址 ; CS:IP MOV IPR,BX (2)其次 用AH=25H的DOS系统调用设置新的中断向量 MOV DX,SEG INTR MOV DS,DX MOV DX,OFFSET INTR MOV AH,25H MOV AL,80H ; INT 21H 例8.3 内部中断服务程序 编写80H号中断服务程序(neiint.asm) 功能:显示以“0”结尾字符串的功能 利用显示器功能调用INT 10H 字符串缓冲区首地址为入口参数 DS:DX(段地址:偏移地址)传递参数 程序为NEIINT.ASM 数据段 INTOFF DW ? INTSEG DW ? INTMSG DB ‘A INSTRUCTION INTERRUPT !’ DB 0DH, 0AH, 0 1.保存中断向量 MOV AX, 3580H INT 21H MOV INTOFF, BX ;保存偏移地址 MOV INTSEG, ES ;保存段基地址 2.设置中断向量 PUSH DS MOV DX,OFFSET NEW80H MOV AX,SEG NEW80H MOV DS,AX ;DS:DX传递中断向量 MOV AX,2580H INT 21H POP DS 3.调用中断服务程序 MOV DX,OFFSET INTMSG INT 80H 4.进入中断服务程序 NEW80H PROC STI ;开中断 PUSH AX ;保护寄存器 PUSH BX PUSH SI 5.显示字符串 MOV SI,DX NEW1: MOV AL,[SI] CMP AL,0 JZ NEW2 MOV BX,0 MOV AH,0EH INT 10H INC SI JMP NEW1 6.退出中断服务程序 NEW2: POP SI ;恢复寄存器 POP BX POP AX IRET ;中断返回 NEW80H ENDP 7.主程序结束 MOV DX,INTOFF MOV AX,INTSEG MOV DS,AX MOV AX,2580H INT 21H MOV AX,4C00H INT 21H 中断调用举例(3) 时间中断调用(1AH) ;(480页) INT 1AH中断调用有2 个功能,功能号在AH中,AH=0,1 (1) AH=0的功能:读取时间计数器的当前值 出口参数:CX=计数值的高位字,DX=计数值的低位字,若上次读它后,计数未超过24小时,AL=0,否则不为0。 时间计数器每55MS自动加1,所以CX:DX中的数除以65536得小时数,余数除1092得分数,所得余数再除18.2得秒数。 (2) AH=1的功能设置时间计数器的当前值 入口参数:AH=1,CX,DX 出口参数:时间计数器设为CX与DX中的值时间计数器. 将时间计数器的当前值设置为0 MOV AH,1 MOV CX,0 MOV DX,0 INT 1AH 例:计算程序执行时间 STI Mov ah,1 MOV CX,0 MOV DX,0 INT 1AH CAL
文档评论(0)