第八章输入输出程序设计 IO设备的数据传送方式 程序直接控制O方式 中断传送方式
1 第八章 输入输出程序设计 • I/O 设备的数据传送方式 • 程序直接控制 I/O 方式 • 中断传送方式
1.IO设备的数据传送方式 查询方式 (程序控制方式) 中断方式 DMA方式 (直接存储器存取方式/成组传送方式)
2 查询方式 (程序控制方式) 中断方式 DMA 方式 (直接存储器存取方式 / 成组传送方式) 1. I/O 设备的数据传送方式
程序直接控制ⅣO方式 IO指令是主机与外设进行通信的最基本途径 DOS功能调用和BIOS例行程序中的输入/输出功能 也是由IN和OUT指令完成的。 例:循环测试某状态寄存器的第2位是否为1 AGA工N:工N AL. 27H TEST AL 00000100B JZ AGAIN
3 I/O指令是主机与外设进行通信的最基本途径。 DOS功能调用和BIOS例行程序中的输入/输出功能 也是由 IN 和 OUT 指令完成的。 例:循环测试某状态寄存器的第2位是否为1 AGAIN: IN AL, 27H TEST AL, 00000100B JZ AGAIN 2. 程序直接控制 I/O 方式
例: Sound程序1 mov dx, 100 In 1,61h and al,11111100b sound xor al 2 out 61h al mov X,140h wail: loop wait dec dx ne sound 设备控制寄存器(61h) 0 1/00 2号定时器门控 控制其它外部设备 与放大器
4 设备控制寄存器( 61h ) 1/0 0 控制其它外部设备 与 门 放大器 2号定时器门控 1 0 例:Sound 程序 1 …… mov dx, 100 in al, 61h and al, 11111100b sound: xor al, 2 out 61h, al mov cx, 140h wait1: loop wait1 dec dx jne sound ……
例: Sound程序2 speaker_on proc push ax model tiny 1 al. 61h code or 1,3 startup out 61h. al ca speaker_on pop ax mov ah 1 ret int 21h speaker_on endp call speaker_off exit o speaker_off proc push ax 1.61h and al. ofch out 61h. al pop ax ret speaker_off endp end 5
5 .model tiny .code .startup call speaker_on mov ah, 1 int 21 h call speaker_off .exit 0 speaker_on proc push ax in al, 61 h or al, 3 out 61h, al pop ax ret speaker_on endp speaker_off proc push ax in al, 61 h and al, 0fch out 61h, al pop ax ret speaker_off endp end 例:Sound 程序 2