§6.输入输出程序设计一.IO接口

上传人:L**** 文档编号:54850076 上传时间:2018-09-20 格式:PPT 页数:70 大小:650KB
返回 下载 相关 举报
§6.输入输出程序设计一.IO接口_第1页
第1页 / 共70页
§6.输入输出程序设计一.IO接口_第2页
第2页 / 共70页
§6.输入输出程序设计一.IO接口_第3页
第3页 / 共70页
§6.输入输出程序设计一.IO接口_第4页
第4页 / 共70页
§6.输入输出程序设计一.IO接口_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《§6.输入输出程序设计一.IO接口》由会员分享,可在线阅读,更多相关《§6.输入输出程序设计一.IO接口(70页珍藏版)》请在金锄头文库上搜索。

1、1,6.输入/输出程序设计 一.I/O接口,站在处理器或主机立场上而言的输入/输出 处理器访问(存取)接口上的特定的一组寄存器,输入/输出,处理器,并行口 控制器/接口,串行口 控制器/接口,打印机,MODEM,2,数据寄存器:存放外设与主机之间传送的信息,在缓冲区可存放一批数据。 状态寄存器:存放外设或接口的状态。 控制(命令)寄存器:存放控制外设的信号或命令。 注:同样的二进制代码,在不同的寄存器中将有不同的作用。,I/O端口地址,为了存取接口上的寄存器,系统给这些寄存器分配专门的存取地址,这样的地址称为I/O端口地址。,3,两类端口地址,I/O端口地址和存储单元地址统一编址 I/O端口地

2、址和存储单元地址各自独立编址,8086/8088支持独立的I/O端口地址空间,地址空间达64K 实际的系统中,只用很小的一部分,4,I/O指令概念,专门用于存取端口的指令 归入数据传送指令组,输入指令,一般格式:IN 累加器,端口地址 说明输入指令从一个输入端口读取一个字节或一个字,传送至AL(若是一个字节)或AX(若是一个字)。端口地址可采用直接方式表示,也可采用间接方式表示。,二.I/O指令,5,当采用直接方式表示端口地址时,端口地址仅为8位,即0至255;当采用间接方式表示端口地址时,端口地址存放在DX寄存器中,端口地址可为16位。,IN AL,PORT ;AL (PORT)IN AX,

3、PORT ;AX (PORT+1PORT)IN AL,DX ;AL (DX)IN AX,DX ;AX (DX+1DX),IN AL,21H ;MOV DX,2FCHIN AX,DX,6,输出指令,一般格式:OUT 端口地址,累加器 说明输出指令将AL中的一个字节,或在AX中的一个字,输出到指定端口。端口地址可采用直接方式表示,也可采用间接方式表示。,7,当采用直接方式表示端口地址时,端口地址仅为8位,即0至255;当采用间接方式表示端口地址时,端口地址存放在DX寄存器中,端口地址可为16位。,OUT PORT,AL ;(PORT) ALOUT PORT,AX ;(PORT+1PORT) AXO

4、UT DX,AL ;(DX) ALOUT DX,AX ;(DX+1DX) AX,MOV AX,4523HMOV DX,2FCHOUT DX,AX,8,8/16/32 位输入,输出,IN AL, P8 OUT P8, ALIN AX, P8 OUT P8, AX IN EAX, P8 OUT P8, EAX IN AL, DX OUT DX, AL IN AX, DX OUT DX, AX IN EAX, DX OUT DX, EAX,9,三.数据传送方式 1.DMA传送 成批数据传送,适用于高速I/O设备。不需要I/O指令,直接与存储器交换数据。由DMA控制器控制,CPU退出控制。 步骤: D

5、MA控制器向CPU发出HOLD信号,请求使用总线。 CPU回答信号HLDA给DMA控制器,让出总线控制权。 传输数据的存储器地址出现在地址总线。 数据字节出现在数据总线 地址加1,字节计数减1 计数不等于0 计数等于0,撤消HOLD信号,CPU控制总线。,10,2.无条件传送方式 立即传送。最简单的程序控制方式,适用于变化缓慢的I/O,如传感器、扬声器等。当传送数据数据时,不必考虑其是否准备就绪。 方法:在程序适当的位置直接写I/O指令。 例:最基本的直接控制扬声器发出声音的程序,与门,放大器,端口地址61H,11,方法:通过I/O指令改变设备控制寄存器(端口地址为61H)的第0、1位(交替为

6、0或1),其中第1位连接到放大器,使扬声器发出嘀-嘀-嘀之声音。,STAR:IN AL, 61H ;read speaker port 61hOR AL, 3 ;set rightmost 2 bitsOUT 61H, AL ;speaker onMOV CX, 1000HL1: LOOP L1 ;delayIN AL, 61HAND AL, 0FCH ; reset rightmost 2 bitsOUT 61H, AL ;speaker offJMP STAR,12,存取RT/CMOS RAM,关于RT/CMOS RAM,RT/CMOS RAM作为一个I/O接口芯片,PC系统分配的I/O端

7、口地址区为70H至7FH,通过IN和OUT指令可对其进行存取。,存取RT/CMOS RAM,在存取RT/CMOS RAM芯片内部的64个字节内容时,往往要分两步进行。即先把要存取单元的地址送端口70H,然后再存取端口71H。,13,存取RT/CMOS RAM,读操作代码片段,MOV AL , n ;n是要访问单元地址OUT 70H , AL ;把要访问单元的地址送地址端口JMP $+2 ;延时IN AL,71H ;从数据端口取访问单元的内容,读操作代码片段,MOV AL,n ;n是要访问单元地址OUT 70H,AL ;把要访问单元的地址送地址端口JMP $+2 ;延时MOV AL,m ;m是要

8、输出数据OUT 71,AL ;把数据从数据端口输出,14,存取RT/CMOS RAM,CMOS RAM累加和检查,在对系统配置时,要对CMOS RAM的位移10H至2DH的系统配置信息按字节求累加和,其值存放在位移2E2FH的单元中。低字节存放在2EH单元中,高字节存放在2FH单元中。 在系统加电自检时,将对CMOS RAM的位移10H2DH单元的内容求和,并与保存的累加和比较。若两者不等,则置诊断状态字节的第6位,表明累加和错。 代码见教材,15,由CPU主动地通过输入输出指令查询指定的外部设备的当前状态(必须有状态寄存器)。若设备就绪,则立即与设备进行数据交换,否则循环查询。在输入之前,要

9、查询外设的数据是否已准备好,直到外设把数据准备好后才输入;在输出之前,要查询外设是否“忙”,直到外设不“忙”后才输出。查询方式的优点是:软硬件实现比较简单;当同时查询多个外设时,可以由程序安排查询的先后次序。缺点是浪费了CPU原本可执行大量指令的时间。,3.查询传送 适用于CPU与外设不同步的情况,一般CPU的存取数据速度快于I/O。,16,简单查询传送方式流程,17,查询传送方式的一般流程,18,5.2.2 读实时钟,说明,RT/CMOS RAM的状态寄存器A的位7是计时更新标志位,为1表示实时钟正在计时,为0表示实时钟信息可用于读出。所以,在读实时钟前,要判别该标志位是否为0。,有关源代码

10、,CMOS_PORT EQU 70H ;CMOS端口地址CMOS_REGA EQU 0AH ;状态寄存器A地址UPDATE_F EQU 80H ;更新标志位CMOS_SEC EQU 00H ;秒单元地址CMOS_MIN EQU 02H ;分单元地址CMOS_HOUR EQU 04H ;时单元地址,19,SECOND DB ? ;秒数保存单元MINUTE DB ? ;分数保存单元HOUR DB ? ;时数保存单元;MOV AX,SEG SECOND ;设置数据段寄存器值MOV DS,AX;UIP: MOV AL,CMOS_REGA ;判是否可读实时钟OUT CMOS_PORT,AL ;准备读状态

11、寄存器AJMP $+2IN AL,CMOS_PORT+1 ;读状态寄存器ATEST AL,UPDATE_F ;测更新标志JNZ UIP ;如不可读则继续测试;,20,MOV AL,CMOS_SECOUT CMOS_PORT,ALJMP $+2IN AL,CMOS_PORT+1 ;读秒值MOV SECOND,AL ;保存之MOV AL,CMOS_MINOUT CMOS_PORT,ALJMP $+2IN AL,CMOS_PORT+1 ;读分值MOV MINUTE,AL ;保存之MOV AL,CMOS_HOUROUT CMOS_PORT,ALJMP $+2IN AL,CMOS_PORT+1 ;读时值

12、MOV HOUR,AL ;保存之,21,打印接口,其功能是传递打印命令和数据到打印机,返回打印机状态 包含数据寄存器、状态寄存器和控制寄存器。 三个寄存器有各自的端口地址,并且三个端口地址是连续的。,设数据寄存器端口地址是378H,那么,状态寄存器端口地址是379H,控制寄存器端口地址是37AH。(使用LPT1:端口),例:打印输出程序,22,控制寄存器和状态寄存器的说明,23,查询方式打印一个字符的流程,24,;子程序名:PRINT;功 能:打印一个字符;入口参数:DX=数据寄存器端口地址; BL=超时参数; AL=打印字符的代码;出口参数:AH=打印机状态,各位意义如下:; 位0:1表示超

13、时,即超过规定的查询次数; 位1和位2:不用; 位3:1表示出错; 位4:1表示联机; 位5:1表示无纸; 位6:1表示应答; 位7:0表示忙碌,程序:,25,PRINT PROCPUSH USH AXOUT DX,AL ;输出打印数据,DX=378HINC DX ;DX=379H,指向状态寄存器 WAIT: XOR CX,CX ;1个超时参数单位表示查询65536次 WAIT1: IN AL,DX ;读取状态信息MOV AH,AL ;保存到AHTEST AL,80H ;测是否忙碌JNZ NEXT ;不忙碌,则转输出LOOP WAIT1 ;继续查询DEC BL ;超时参数减1,超时=(BL)*

14、65536*TJNZ WAIT ;未超时,继续查询AND AH,0F8H ;已超时,去掉状态信息中的无用位OR AH,1 ;置超时标志,超时出错处理JMP EXIT ;转结束,26,NEXT: INC DX ;不忙碌,DX=37A,指向控制寄存器MOV AL,0DH ;准备选通命令OUT DX,AL ;选通MOV AL,0CH ;准备复位选通命令JMP $+2 ;延迟OUT DX,AL ;复位选通位AND AH,0F8H ;去掉状态信息中的不用位 EXIT: XOR AH,48H ;使返回的状态消息中有关位符合要求POP DXMOV AL,DL ;恢复AL寄存器值POP DXRET PRINT ENDP,27,MOV AL,0DH ;准备选通命令OUT DX,AL ;选通MOV AL,0CH ;准备复位选通命令JMP $+2OUT DX,AL ;复位选通位,选通操作,AL=0DH AL=0CH,28,四.中断传送 1.中断的基本思想当外设的速度慢于CPU速度时,设想在外设工作的同时,CPU正常执行程序。外设工作完成后需要新的数据时(服务),向CPU发出信号(INTR),要求CPU暂时停止当前程序执行,为外设服务一段时间后,再转而执行中断的程序。,29,中断概念示意图,30,中断传送方式,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 数据通信与网络

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号