- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
清华大学“汇编语言课程”教案第8章
* 第八章 输入输出程序设计 汇编 语言 ? I/O 设备的数据传送方式 ? 程序直接控制 I/O 方式 ? 中断传送方式 主要内容: 汇编 语言 查询方式 (程序控制方式) 中断方式 DMA方式 (直接存储器存取方式/成组传送方式) 1. I/O 设备的数据传送方式 汇编 语言 I/O 指令是主机与外设进行通信的最基本途径。DOS 功能调用和BIOS例行程序中的输入/输出功能也是由IN和OUT指令完成的。 例:循环测试某状态寄存器的第2位是否为1 AGAIN: IN AL, 27H TEST AL, JZ AGAIN 2. 程序直接控制 I/O 方式 汇编 语言 设备控制寄存器( 61h ) 1/0 0 控制其它外部设备 与门 放大器 2号定时器门控 1 0 例:Sound 程序1 …… mov dx, 100 in al, 61h and al, sound: xor al, 2 out 61h, al mov cx, 140h wait1: loop wait1 dec dx jne sound …… 汇编 语言 code segment main proc far assume cs:code start: push ds sub ax, ax push ax call speaker_on mov ah, 1 int 21h call speaker_off ret main endp speaker_on proc near push ax in al, 61h or al, 3? out 61h, al pop ax ret speaker_on endp? speaker_off proc near push ax in al, 61h and al, 0fch out 61h, al pop ax ret speaker_off endp code ends end start 例:Sound 程序2 汇编 语言 print proc near push ax push dx mov dx, 378h ; 数据寄存器 out dx, al mov dx, 379h ; 状态寄存器 again: in al, dx test al, 80h je again ; 打印机忙? mov dx, 37ah ; 控制寄存器 mov al, 0dh out dx, al ; 送选通信号 jmp $+2 ; 展宽选通信号 mov al, 0ch out dx, al pop dx pop ax ret print endp 例:打印机查询输出子程序 汇编 语言 中断源:引起中断的事件 外中断(硬中断): 外设的 I/O 请求 —— 可屏蔽中断 电源掉电 / 奇偶错 —— 非屏蔽中断 内中断(软中断): INT 指令 / CPU 错(除法错、溢出)/ 为调试程序设置的中断 3. 中断传送方式 汇编 语言 非屏蔽中断请求 中断逻辑 INT n INTO 除法错 单步 n 4 0 1 CPU 2 NMI 8259A 可编程中断控制器 (PIC) IR0 系统定时器 IR1 键盘 IR2 彩色/图形接口 IR3 保留 IR4 串行通讯口 IR5 保留 IR6
文档评论(0)