- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第6章输入输出接口技术本章重点I/O接口的基本概念输入输出IN/OUT指令程序查询输入输出方式中断输入输出方式DMA输入输出方式I/O端口地址分配I/O端口地址译码6.1接口技术基本概念计算机系统的I/O接口为什么输入输出设备不能像存储器一样直接连在总线上?ALUCPUI/O设备CU主存MI/O接口地址总线AB控制总线CB数据总线DB外设接口(I/O接口)的必要性外设的种类繁多,而存储器的种类单一,必须经过接口电路连接到总线上。外设的速度较慢,而存储器的速度较快,必须经过接口电路进行数据的缓冲和锁存。外设的信号多种多样,必须经过接口电路转换成处理器可以识别的信号。I/O接口的作用相当与一个转换器,它可以保证外围设备用计算机所要求的形式发送或接受信息。I/O接口的功能进行译码选址——在具有多台外设的系统中,外设接口必须能够进行地址译码,确定本设备是否被选中转换信息格式——接口电路完成串/并转换、并/串转换协调定时差异——为了缓解主机与外设之间的速度差异,对传输的数据或地址加以缓冲或锁存提供联络信号——接口电路向主机提供外部设备“就绪”、“忙”,数据缓冲器“满”、“空”等状态信号中断管理功能——接口电路有产生并管理中断请求和DMA请求的能力,以满足实时系统以及大批量数据传送的能力可编程——对一些通用的接口电路,应该具有通过软件编程控制外设工作方式的能力错误检测功能——对通信过程中的传输错误或者溢出错误能够进行实时检测I/O接口的组成控制寄存器地址译码器状态寄存器数据缓冲寄存器控制逻辑电路I/O接口外部设备数据线数据线CPU控制命令线状态状态线地址线I/O接口与I/O端口端口:CPU能够直接访问的I/O接口内部的寄存器称为端口端口号:每一个端口的访问地址I/O接口CPU与I/O接口传递的信息数据信息:CPU输入输出设备CPU输入输出设备控制信息:CPU输入输出设备控制命令外设状态状态信息:输入输出设备CPU数据信息、状态信息和控制信息都是通过数据总线传送的。CPU写入控制端口的数据是CPU对外设的控制信息;CPU读状态端口的数据是外设的状态信息;CPU写数据端口的数据是CPU送给外设的数据CPU读数据端口的数据是外设送给CPU的数据I/O端口编址方式为了便于CPU访问端口,每一个端口都有一个地址,系统有两种方式为端口分配地址:I/O端口和存储器统一编址统一编址就是从存储器空间中划分出一部分给I/O设备,把I/O端口当作存储单元来访问。例如:设CPU有16根地址线,存储空间为64K,规定地址总线的最高位A15=1访问I/O端口,A15=0访问存储器,则0~32K为存储器地址空间,32K~64K为I/O端口地址空间。统一编址的优点是不需要专门的I/O指令,凡对存储器有效的访问指令都可以访问I/O端口,访问形式灵活。缺点是端口占用了一定的存储空间,存储器空间变小。6.3I/O端口编址方式及地址译码1620统一编址方式I/O端口和存储器独立编址独立编址就是I/O端口地址补占用存储器地址空间,两者的地址空间完全独立,都从0开始编址。独立编址需要专门的I/O端口访问指令。8086采用存储器与I/O端口独立编址方式,即内存单元和I/O端口从0单元开始编址。当引脚M/IO为高电平时访问存储器,当M/IO为低电平时访问I/O端口。8086有专门的访问I/O端口的指令(IN和OUT),当8086在执行访问I/O端口的输入(IN)指令和输出(OUT)指令时,就会使M/IO信号处于低电平,结合RD和WR信号产生出对相应的I/O端口的读/写操作。独立编址的优点是I/O端口不占用内存空间;缺点是I/O指令功能单一,类型少,使输入输出操作受到限制。独立编址方式IN和OUT指令8086系统中可以有64K个8位端口,相邻编号的两个端口可以组合成为一个16的端口。执行输入(IN)输出(OUT)指令时,CPU可以从一个8位端口读入(写出)一个字节到AL中,或者从一个16位端口读入(写出)一个字到AX中。1.IN指令(输入指令)格式:INA,PORT;A可以是AL或者是AX功能:AL←(PORT)或AX←(PORT+1)_(PORT)(1)直接输入指令
文档评论(0)