第八章输入与输出程序设计 第八章输入与输出程序设计
第八章第一章输入与输出程序设计 基础知识 第八章 输入与输出程序设计
第八章输入与输出程序设计 内容提要 IO设备的数据传送方式 程序控制方式 中断方式 DMA方式
第八章第一章输入与输出程序设计 基础知识
第八章输入与输出程序设计 第一节:I/O设备的数据传送方式 输入输出设备都通过一个硬件接口或控制器和CPU相连。例如软磁盘通过软盘控 制器和CPU连接起来;终端显示器通过数据接口和CPU连接起来。这些接口和控制器 都能支持输入输出IN、OUT与外部设备交换信息。这些信息包括控制、状态和数据三 种不同性质的信息,它们必须按不同的端口地址分别传送。 控制信息输出到I/O接口:告诉接口和设备要做什么工作 状态信息的读取:表示ⅣO设备当前的状态 数据信息的传输:是I/O设备和CPU真正要交换的信息。 常用的输入/输出方式: 1、查询输入输出;2、中断输入输出;3、DMA方式 DMA方式:也称为成组数据传送方式。主要适用于些高速的I/O设备,如 磁带、磁盘、模数转换器等设备。DMA方式能使I/0设备直接和存储器进行成 批数据的快速传送。每个字节一到达端口,就直接从接口送到存储器,同样, 接口和它的DMA控制器也能直接从存储器取出字节并把它送到I/0设备中去
第八章第一章输入与输出程序设计 基础知识 第一节:I/O设备的数据传送方式 输入输出设备都通过一个硬件接口或控制器和CPU相连。例如软磁盘通过软盘控 制器和CPU连接起来;终端显示器通过数据接口和CPU连接起来。这些接口和控制器 都能支持输入输出IN、OUT与外部设备交换信息。这些信息包括控制、状态和数据三 种不同性质的信息,它们必须按不同的端口地址分别传送。 控制信息输出到I/O接口: 告诉接口和设备要做什么工作 状态信息的读取:表示I/O设备当前的状态 数据信息的传输:是I/O设备和CPU真正要交换的信息。 常用的输入/输出方式: 1、查询输入输出; 2、中断输入输出; 3、DMA方式 DMA方式:也称为成组数据传送方式。主要适用于—些高速的I/O设备,如 磁带、磁盘、模数转换器等设备。DMA方式能使I/O设备直接和存储器进行成 批数据的快速传送。每个字节一到达端口,就直接从接口送到存储器,同样, 接口和它的DMA控制器也能直接从存储器取出字节并把它送到I/O设备中去
第八章输入与输出程序设计 DMA方式 CPU可继续运算 DMA方式 总控 制逻辑 除 盘始 MIEMI 控器 存始 辛节数 磁盘 网卡 显示卡
第八章第一章输入与输出程序设计 基础知识
第八章输入与输出程序设计 第二节:程序直接控制I/O方式 I/O端口的地址编码:计算机的外部设备和大容量存储设备都是通过接口连接 到系统上,每个端口由一组寄存器组成,这些寄存器都分配有一个地址编码, 该编码称为I/0端口的地址编码。计算机的CPU和内存就是通过这些端口和 外部设备进行通讯的。 IN AL.10 /O接口中有用作数据缓 冲的数据寄存器,有用做 保存设备和接口的状态信 息,供CPU对外设进行测 试的状态寄存器;还有用 来保存CPU发出的命令以 C MEM P IO接口 控制接口和设备的操作的 命令寄存器。它们都分配 有各自的端口号,CPU就 是通过不同的端口号来选 择外部设备的 备存了数据何时有效 状态寄存器 控制寄存器
第八章第一章输入与输出程序设计 基础知识 第二节:程序直接控制I/O方式 I/O端口的地址编码:计算机的外部设备和大容量存储设备都是通过接口连接 到系统上,每个端口由一组寄存器组成,这些寄存器都分配有一个地址编码, 该编码称为I/O端口的地址编码。计算机的CPU和内存就是通过这些端口和 外部设备进行通讯的。 I/O接口中有用作数据缓 冲的数据寄存器,有用做 保存设备和接口的状态信 息,供CPU对外设进行测 试的状态寄存器;还有用 来保存CPU发出的命令以 控制接口和设备的操作的 命令寄存器。它们都分配 有各自的端口号,CPU就 是通过不同的端口号来选 择外部设备的
第八章输入与输出程序设计 端口数量: 在 IBMPC中,1M空间的低16位地址线有效,因此这个ⅣO空间允许设置 64K(65536)个8位端口或32K(32768个16位端口。 PC机的部分端口地址(16进制 00—0F DMA芯片8237A 0-21 中断控制器8259A 40-43 时钟/定时器 6063 可编程序外圈接口芯片(PPI)8255A 200-20F 游戏适配器 32032F 硬磁盘控制器 378-37A 并行接口打印机适配器 3B0-3BF 单色显示和并行打印机适配器 3DO-3DF 彩色/图形适配器 3F03F7 软磁盘控删器 3F8--3FE 异步通讯适配器( Primary) 2F8--2FE 异步通讯适配器( Alternate)
第八章第一章输入与输出程序设计 基础知识 端口数量: 在IBM PC中, 1M空间的低16位地址线有效,因此这个I/O空间允许设置 64K (65536) 个8位端口或32K(32768)个16位端口。 PC机的部分端口地址(16进制)
第八章输入与输出程序设计 IO指令 PC机的I/O指令IN和OUT,这两条指令既可以传送字节也可以传送字,并 且都有直接端口寻址和间接端口寻址两种方式。如下所示: IN AL, PORT (AL)+( PORT) IN AX, PORT (AX)+(PORT+I: PORT IN AL, DX (AL)←((DX》) IN AX. DX (AK)+((Dx)1:(DX)) OUT PORT, AL (PORT)+(AL) OUT PORT, AX (PORT+11 PORT)+(AX) OUT DX. AL ((DX)+(AL) OUT DX.AX ((DX)+1:(DX)+(AX) 直接端口寻址方式:端口地址PORT是一个8位的立即数,其范围是0-255 间接寻址方式:端口地址在DX中,其范围为0-65535。 另外要注意的是,ⅣO指令中使用的寄存器必须是AL或AX
第八章第一章输入与输出程序设计 基础知识 一、 I/O指令 PC机的I/O指令IN和OUT,这两条指令既可以传送字节也可以传送字,并 且都有直接端口寻址和间接端口寻址两种方式。如下所示: 直接端口寻址方式 :端口地址PORT是一个8位的立即数,其范围是0一255。 间接寻址方式 :端口地址在DX中,其范围为0一65535 。 另外要注意的是,I/O指令中使用的寄存器必须是AL或AX
第八章输入与输出程序设计 用IN指令可以从一个数据寄存器输入数据或从状态寄存器输入接口和外没的状态。 例如下面两条指令能把一个字从端口地址0028和0029传送到存储器的 DATA WORD单元中。 N AX, 28H MOV DATA WORD, AX 例测试某状态寄存器端口地址为27H的第2位是否为1,若为1,则转移到 ERROR进 行处理。 N AL, 27H TEST AL, 00000100B JNZ ERROR OUT指令用来输出数据或给一个指定的I/O端口传送命令信息。 例某接口的命令寄存器端口地址为126 h MOv DX,126H 的第7位控制成组数据传送。 AL, DX 注意:DOS功能调用或BIOS例行程序, 其例行程序本身也是用ⅣN和OUT指令ORAL,80H 与外部设备进行数据交换的。 OUT DX.AL
第八章第一章输入与输出程序设计 基础知识 用IN指令可以从一个数据寄存器输入数据或从状态寄存器输入接口和外没的状态。 例如 下面两条指令能把一个字从端口地址0028和0029传送到存储器的 DATA_WORD单元中。 例 测试某状态寄存器(端口地址为27H)的第2位是否为1,若为1,则转移到ERROR进 行处理。 OUT指令用来输出数据或给一个指定的I/O端口传送命令信息。 例 某接口的命令寄存器(端口地址为126H) 的第7位控制成组数据传送。 注意:DOS功能调用或BIOS例行程序, 其例行程序本身也是用IN和OUT指令 与外部设备进行数据交换的
第八章输入与输出程序设计 IO直接数据传输举例 例 SOUND程序(发声程序) 基本原理: 程序通过I/O指令使设备控制寄存器(I/O端口地址为6H的第1位交替为0和 而端口6H的第1位和扬声器的脉冲门相连,当第1位由0变为1,延迟一会又由0变为1时, 脉冲门就先打开后关闭,产生了一个脉冲电流。这个脉冲电流被放大后送到扬声器使 之发出了声音。61H端口的第0位和一个振荡器(2号定时器)相连,现在不用振荡器产生 声音,所以把第0位置零。 3210 端口6H 控制其它外部设备 2号定时器门控 门敵大器 设备控制寄存器
第八章第一章输入与输出程序设计 基础知识 二、 I/O直接数据传输举例 例 SOUND程序(发声程序) 基本原理: 程序通过I/O指令使设备控制寄存器(I/O端口地址为61H)的第1位交替为0和l, 而端口6lH的第1位和扬声器的脉冲门相连,当第1位由0变为1,延迟一会又由0变为1时, 脉冲门就先打开后关闭,产生了一个脉冲电流。这个脉冲电流被放大后送到扬声器使 之发出了声音。61H端口的第0位和一个振荡器(2号定时器)相连,现在不用振荡器产生 声音,所以把第0位置零
第八章输入与输出程序设讣 程序: soundprogram segment assume cs: soundprogram main proc far start: mov bx. 0f350h mov dx. 2300h n 1, 61h mov ah, al and al,lb;关断定时器通道2的门控 sound: xor al,2;触发61H端口第1位 out 61h. al mov CX,dx;(dx)=控制脉宽的计数值 wait: loop waitI;延时循环 dec bx;(bx)=脉冲持续的时间 jnz sound mov al, ah out6h,al;恢复61H端口 mov ax 4c00h int 21h main endp soundprogram ends end start
第八章第一章输入与输出程序设计 基础知识 程序: soundprogram segment assume cs:soundprogram main proc far start: mov bx, 0f350h mov dx, 2300h in al, 61h mov ah, al and al, 11111100b;关断定时器通道2的门控 sound: xor al, 2;触发61H端口第1位 out 61h, al mov cx, dx;(dx)=控制脉宽的计数值 wait1: loop wait1;延时循环 dec bx; (bx)=脉冲持续的时间 jnz sound mov al, ah out 61h, al;恢复61H端口 mov ax,4c00h int 21h main endp soundprogram ends end start