第六章 输入输出(2)

2019-03-15 13:00

口。其中,数据端口存放要传送的数据,状态端口用来存放表示设备“就绪”或“忙”的当前状态,控制端口则存放CPU发送过来的控制命令(命令字),以控制设备的工作方式。

(3)中断方式

程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到相应的服务程序去处理,这个过程称为程序中断。

80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。中断传送方式是计算机中最重要的一种数据交换手段。在速度较慢的外围设备准备自己的数据时,CPU照常执行自己的程序 。从这个意义上说,CPU和外围设备的一些操作是并行地进行的,因而计算机系统的效率是大大提高了。

(4)DMA传送方式

所谓DMA方式就是直接存储器存取(Direct Memory Access)方式。在DMA方式下,外设通过DMA的一种专门接口电路――DMA控制器(DMAC),向CPU提出接管总线控制权的总线请求,CPU在当前的总线周期结束后,响应DMA请求,把对总线的控制权交给DMA控制器。于是在DMA控制器的管理下,外设和存储器直接进行数据交换,而不需CPU干预,这样可以大大提高数据传送速度。由于DMA传送方式涉及计算机硬件内容过多,本书不做详细介绍。

小结:无条件传送方式虽然具有很多优点,但对于传送数据量很大的高速外设,如磁盘控制器或高速数据采集器,它又满足不了速度方面的要求。中断方式和查询方式一样,仍然是通过CPU执行程序来实现数据传送的,每进行一次传送,CPU都必须执行一遍中断处理程序。而每进入一次中断处理程序,CPU都要保护断点和标志,这要花费大量的处理时间。此外,在服务程序中,通常还需要保护寄存器和恢复寄存器的指令,这些指令的执行又需花费CPU的时间。还有,对8086系列的CPU来说,内部结构中包含了总线接口部件BIU和执行部件EU,它们是并行工作的,即EU在执行指令时,BIU要把后面将执行的指令取到指令队列中缓存起来。但是,一旦转去执行中断处理程序,指令队列要被废除,EU须等待BIU将中断处理程序中的指令取到指令队列中才能开始执行程序。同样,返回断点时,指令队列也要被废除,EU又要等待BIU重新装入从断点开始的指令后才开始执行,这些过程也要花费时间。因此,可以看出中断方式下这些附加的时间将影响传输速度的提高。另外,在查询方式和中断方式下,每进行一次传输只能完成一个字节或一个字的传送,这对于传送数据量大的高速外设是不适用的,必须要将字节或字的传输方式改为数据块的传输方式,这就需要DMA传送方式。

6.1.4 存取RT/CMOS RAM

1. RT/CMOS RAM基本概念

在IBM PC/AT及其兼容机上均安装有一个RT/CMOS RAM芯片(互补金属氧化物半导体随机存取存储器),该芯片不仅可长期保存系统配置状况,而且记录包括世纪、年、月、日和时分秒的实时钟(Real_Time Clock)信息。

RT/COMS RAM作为一个I/O接口芯片,系统分配的I/O端口地址区为70H至7FH,通过IN和OUT指令可对其进行存取。该芯片内部集成了64个字节的RAM单元,分配使用情况见表6-2。其中,前14个字节单元用于实时时钟,剩下的50个字节单元用于存储系统的配置信息。

表6-2 RT/CMOS RAM内部信息布局

位移 0 1 2 3 4 5 6 7 8 9 A-D E F 用途 秒 报警秒 分 报警分 时 报警时 星期 日 月 年 状态寄存器A-D 诊断状态 停止状态 位移 10 11 12 13 14 15 16 17 18 19-1A 1B-2D 2E-2F 30-3F 用途 软盘驱动器类型 保留 硬盘驱动器类型 保留 设备标志 常规RAM容量低字节 常规RAM容量高字节 扩展RAM容量低字节 RAM容量高字节 硬驱类型扩展字节 保留 配置信息字节累加和 其他(含世纪信息) 2. 存取RT/COMS RAM 在存取RT/COMS RAM芯片内部的64个字节单元内容时,往往要分两步进行。先把要存取单元的地址送端口70H,然后再存取端口71H。还需要注意,14个记录实时时钟信息的单元的地址(位移0至0DH)就是表中位移,其他单元的地址是表6-1中的位移还要加80H。

(1)读操作代码片段如下:

MOV AL,n ;n是要访问单元地址

OUT 70H,AL ;把要访问单元的地址送70H NOP

NOP ;延时

IN AL,71H ;从数据端口取访问单元的内容 (2)写操作代码片段如下:

MOV AL,n ;n是要访问单元地址

OUT 70H,AL ;把要访问单元的地址送70H NOP

NOP ;延时

MOV AL,m ;m是要输出数据

OUT AL,71H ;从数据端口取访问单元的内容

在对同一个I/O设备或端口连续发送I/O指令时,为确保I/O设备或端口有足够的电路恢复时间,一般在I/O指令之间使用NOP指令进行延时,以满足I/O端口的需要。

例6-3 读取当前计算机的年,送入AL寄存器。 CSEG SEGMENT ASSUME CS:CSEG START:

MOV AL,9 ;“年”的地址为9。 OUT 70H,AL ;“年”的单元地址送70H单元 NOP

NOP ;延时

IN AL,71H ;将端口71H的内容送AL MOV AH,4CH

INT 21H CSEG ENDS END START

将以上程序输入完毕后保存为111.ASM文件后,通过MASM程序对其汇编,再通过LINK程序连接成111.exe。输入DEBUG 111.exe命令,使用U命令反汇编后,观测到结束地址为000AH,所以输入“G 000A”命令执行该程序。如图6-5所示。

图6-5 调试结果图

由图6-6可知,AL内容为08D,即读取年份内容为BCD码的形式表示。

如果将程序的MOV AL,9指令中的单元地址9改为0、2、4、6、7或8可以得到秒、分、时、星期、日、月。

3. CMOS RAM 累加和检查 在对系统配置时,要对CMOS RAM的位移10H~2DH的系统配置信息按字节求累加和,其值存放在位移2E~2FH的单元中。低字节存放在2EH单元中,高字节存放在2FH单元中。在系统加电自检时,将对CMOS RAM的位移10H~2DH单元的内容求和,并与保存的累加和比较。若两者不等,则设置诊断状态字的第6位为1,表明累加和错。这往往会导致要求用户重新进行系统设置。

例6-3 编写一个检测程序,当累加和错时,设置诊断状态字节的第6位为1。 解:从90H单元开始依次取出内容相加,一直累加至0ADH为止。然后将累加和与2EH和2FH单元组成的字单元内容进行比较,若累加和相同,则结束;否则将8EH单元的第6位设置为1。

程序编写如下: CSEG SEGMENT ASSUME CS:CSEG START:

MOV AX,0000H ;AX←0000H MOV BX, AX ;BX←0000H

MOV DL,90H ;位移为10H的单元地址送DL MOV DH,0AEH ;DH指向结束地址后一单元 ACC1:

MOV AL,DL ;访问单元地址送AL OUT 70H, AL ;送70H地址端口 NOP

NOP ;延时

IN AL,71H ;读单元内容 ADD BX,AX ;求累加和

INC DL ;DL指向下一单元 CMP DL,DH ;和结束地址比较 JNZ ACC1 ;不相等继续求累加和

MOV AL,0AFH ;取CMOS RAM的累加和高字节单元地址 OUT 70H,AL ;单元地址送70H端口 NOP

NOP ;延时

IN AL,71H ;读累加和高字节内容 MOV AH,AL ;送AH

MOV AL,0AEH ;取CMOS RAM的累加和低字节单元地址 OUT 70H,AL NOP

NOP ;延时

IN AL,71H ;读累加和低字节内容

CMP CX, BX ;原始累加和CX与当前累加和比较 JZ RIGHT ;相等则正确,转RIGHT标志 MOV AL,8EH ;否则将诊断状态地址送AL OUT 70H,AL NOP

NOP ;延时

IN AL,71H ;读诊断状态并送入AL MOV AH,AL ;将AL送AH进行处理 OR AH,40H ;AH的第6位设置为1 MOV AL,8EH ;诊断状态地址送AL OUT 70H,AL NOP

NOP ;延时

MOV AL,AH ;将AH送回AL

OUT 8EH,AL ;输出到诊断状态单元 RIGHT:

MOV AH,4CH

INT 21H ;返回DOS CSEG ENDS END START

6.2 无条件方式输入输出

计算机系统中的扬声器(面板喇叭)是一种简单的输出设备,可以随时从CPU接收控制命令。扬声器连接原理如图6-6所示。

图6-6 扬声器控制原理

扬声器发声的基本原理是振动。扬声器上的一层薄膜在电信号控制下往复振动产生声音,每秒钟振动的次数就是所发出声音的频率,振动的幅度决定声音的强度。由于控制扬声器的信号是二进制的开关信号,不能控制流过扬声器的电流大小,因而不能控制扬声器薄膜的振幅,所以扬声器只能发出固定强度的声音。但开关信号变化的频率是可以控制的,CPU正是通过控制开关信号的频率,使扬声器发出不同频率的声音。

控制扬声器的信号有两个来源,它们通过与门之后送放大电路使扬声器发声。系统中的61H端口是一个可读写的外设端口,能够存放1字节数据,其中最低的两位P0和P1就用来控制送往扬声器的两个信号源。最低位P0为0将使定时器送入与门A输入端的信号为高电位,这时只需要交替变化P1位的值送入与门的另外一个输入端B,这就使与门的输出端C上的信号在高低电位进行变化形成方波,该方波通过放大电路放大信号后,使扬声器产生振动。

人类可以识别的声音频率在20~20000HZ之间,其它频率的声音无法识别。例如要使扬声器发出500HZ的声音,就要使P1位上的信号在每秒钟变化500次,即每0.002秒为一个变化周期,因而要使P1位在0.001秒内保持高电位,再下一个0.001秒内保持低电位,如此交替变化。但是想精确控制0.001秒的时间需要掌握定时器的控制原理,此处只是为了说明无条件传送的原理,故简化时间控制的方法,采用软件延时方法实现。

扬声器发声时间则由P1位的变化次数来掌握,P1位变化次数越大,扬声器发声时间就越长。对于500HZ的声音,P1变化5000次可以使扬声器发声10秒。

例6-4 利用无条件传送方式,使计算机扬声器在10秒内保持发出500HZ的声音。 STACK1 SEGMENT STACK DW 1024 DUP(?) STACK1 ENDS CSEG SEGMENT

ASSUME CS:CSEG,SS:STACK1 START:

MOV AX,STACK1 MOV SS,AX

MOV CX,5000 ;P1位变化次数送CX AGAIN:


第六章 输入输出(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:三年级下学期语文10

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: