- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]汇编语言程序设计 第08章:输入输出程序设计
第八章 输入输出程序设计 8 输入输出程序设计 输入输出功能是计算机的重要组成部分,是人—机交互功能的主要承担者。在早期的计算机系统中,通常把输入输出设备或功能作为次要的部分,而把CPU作为主要研究对象。 但现在随着输入输出设备的日益丰富、功能要求越来越复杂,输入输出部分在整个计算机系统中的地位也得到了进一步提高 8 输入输出程序设计 输入输出设备是计算机系统的重要的组成部分,没有输入输出设备,计算机就得不到要解决问题的初始信息,处理的结果信息也不可能被送出,这样的计算机不能完成任何工作。 计算机系统是通过硬件接口(或控制器 )以及输出输出程序对外部设备实现处理和控制的。而汇编语言能直接控制硬件,因此就成为编写输入输出程序的最有效的语言 8.1 I/O设备的数据传送方式8.1.1 CPU与外设 每种输入输出设备都是通过硬件接口或控制器与CPU相连接,这些接口都能支持输入输出指令IN,OUT与外部设备交换信息,这些信息包括控制、状态和数据三种不同性质的信息 8.1 I/O设备的数据传送方式8.1.1 CPU与外设 控制信息:是由CPU发送给外部设备的,命令其处于某种方式或执行某种操作。 状态信息:从接口输入的状态信息表示I/O设备当前的状态。 数据信息:则是I/O设备和CPU真正要交换的信息。数据信息可分为三种类型:数字量、模拟量和开关量。这些信息可以是并行的,也可以是串行的 CPU与外设之间的数据传送方式有:程序直接控制 I/O方式、中断方式 和 DMA方式。由于DMA方式是由DMA控制器实现其传送功能的,所以在这里只做简单介绍。主要讲解前两种方式 8.1 I/O设备的数据传送方式8.1.2 直接存储器存储方式(DMA) 当外设的速度相对很高,且一次传送的数据量很大时,中断方式的效率就很低。例如,对磁盘的读写操作,一般的文件都有几十K,几百K,甚至几兆,通过DMA方式利用专门的接口控制电路,在存储器与高速的外设之间进行大量的数据交换,而不需要CPU的参与 DMA控制器-DMAC,除了具有一般接口的特点外,CPU可以通过对DMAC相应端口的读/写操作来控制DMA的工作方式;DMAC在得到总线控制权后,能够像CPU一样提供相应的控制信号来控制系统总线,从而实现外设与内存之间高速大量的数据传输。一般接口电路不具备控制总线的能力 8.1 I/O设备的数据传送方式8.1.2 直接存储器存储方式(DMA) 8.2 程序直接控制I/0方式8.2.1 I/0接口的基本结构及编址方式 关于I/0“接口”与“端口” I/O接口与CPU之间传送的信息有数据、状态和控制信号等3大类。每个接口内部都包含有一定数量的寄存器(一般包括数据寄存器、状态寄存器和控制寄存器),用来存放三种不同信息。为了区分不同的寄存器(REG),需要给每个REG分配一个地址号,这就类似于给内存单元编址一样。 I/O接口内部可寻址的REG又称为端口。按接受和传送的信息有分为数据端口(双向,输入缓冲,输出锁存),状态端口(一般只读),控制端口(一般只写)。CPU对外设工作方式的控制和信息的交换最终都归结为CPU通过IN/OUT指令对各个可寻址端口的读写操作 8.2 程序直接控制I/0方式8.2.1 I/0接口的基本结构及编址方式 I/O接口编址方式 (1)统一编址:存储器(内存)与I/O端口的编址占用同一个地址空间。特点是所有对内存操作的指令对I/O端口同样有效,指令丰富,但会损失一部分的内存空间。 (2)独立编址:内存与I/O端口对应不同的地址空间。对I/O端口有专门的指令。缺点是对I/O端口操作的指令不及统一编址时丰富(例如,8086/8088中对I/O端口就只有最基本的输入输出指令),但能最大程度地满足存储空间的寻址范围。 8.2 程序直接控制I/0方式8.2.1 I/0接口的基本结构及编址方式 I/O端口地址 I/O端口是CPU与输入输出设备的交换数据的场所,通过I/O端口,处理机可以接受从输入设备输入的信息;也可向输出设备发送信息。在计算机系统中,为了区分各类不同的I/O端口,就用不同的数字给它们进行编号,这种对I/O端口的编号就称为I/O端口地址。按照每次可交换一个字节数据的端口称为字节端口,每次可交换一个字数据的端口称为字端口。 在Intel公司的CPU家族中,I/O端口的地址空间可达64K,即可有65536个字节端口,或32768个字端口。这些地址不是内存单元地址的一部分,不能普通的访问内存指令来读取其信息,而要用专门的I/O指令才能访问它们。虽然CPU提供了很大的I/O地址空间,但目前大多数微机所用的端口地址都在0~3FFH范围之内,其所用的I/O地址空间只占整个I/O地址空间的很小部分。表8.1列举了几个重要的I/O端口地址 8.2 程
文档评论(0)