第8章 输入输出方法 汇编语言程序设计 教学ppt课件.ppt
《第8章 输入输出方法 汇编语言程序设计 教学ppt课件.ppt》由会员分享,可在线阅读,更多相关《第8章 输入输出方法 汇编语言程序设计 教学ppt课件.ppt(87页珍藏版)》请在三一办公上搜索。
1、第8章 输入输出方法 8.1 输入输出的基本概念 8.2 无条件方式输入输出 8.3 查询方式输入输出 8.4 中断方式输入输出 本章要点 习题八,返回章目录,8.1 输入输出的基本概念 从第2章的图2.1可以看到,计算机的硬件系统由CPU、内存、外设三大部分构成,它们相互之间通过一组信息传递的公共通道总线联系在一起的。CPU和内存构成了计算机的主机部分,是计算机中的高速设备。而大多数外部设备都是慢速设备,用来把从主机以外采集到的数据送入主机内部,或者把主机内的数据传递到外部,外设中的外部存储器还可以存储大量的数据。那么,CPU作为计算机的核心,它又是如何控制外设的呢?,8.1.1 外设接口
2、外部设备的种类繁多,功能各不相同,控制的方法也各式各样。很多外设由于速度与信号的关系,无法直接连接在总线上与主机进行数据交换,需要在系统总线与外设之间设置一个“适配器”,又称为“接口”,用于把CPU来的控制命令转换成外设的控制信号,把外设的工作情况转换成CPU可以读取并处理的状态信号。接口部件担负着总线信号与外设信号的转接工作。它一头与外设相连,能够从外设接收数据或向外设发出信号,另一头连接在系统总线上,能够直接接收来自总线的数据和控制信号,或者在适当的时候往总线发送数据。,CPU能够与内存进行数据交换,也可以与外设接口进行数据传递,两者工作的方式是非常相似的。从第2章的描述中我们已经知道,C
3、PU如果要从内存读或向内存写一个数据,总是先在地址总线上发出地址信号,以选定操作对象,然后在控制总线上发出控制信号,通知操作对象完成什么样的操作,数据总线则提供被交换的数据进行传递的通道。CPU总是通过总线,以发送地址信号的方式选择操作对象,对内存对外设接口都是如此。所以,计算机系统中对内存进行了编号,就是内存的物理地址,对外设接口也进行了编号,这个号码称作“外设端口号”。每一个端口号对应外设接口中的一个存放字节型数据的元件,称为一个“外设端口”。一个外设接口中往往需要多个外设端口,占据多个外设端口号。CPU控制外设就是通过从这些外设端口中读取数据以及向它们发送数据实现的。,在计算机内外数据交
4、换过程中,外设总是处于从属状态,它受来自总线信号的控制,按控制命令的要求完成相应的操作,并且可以从主机接收或向主机提供数据。所以大多数外设接口从功能上可以分为控制部件、状态部件和数据部件三大组成部分。控制部件又称为命令部件,专用于接收来自主机的操作命令,并转换成对外设的控制信号;状态部件负责向主机转达外设的当前工作情况;数据部件是内外数据交换的缓冲器,临时存放需要传递的数据。,通常,三大部件中的每个部件至少占据1个外设端口地址,每个端口都以字节为基本构成单位,因而1个外设接口一般最少占用3个端口地址。但是,有些外设能够接受的控制命令很少,只需要1字节中的1位或2位就够了,这时可以用1个控制端口
5、的8个位分别控制不同的外设,把不同外设的接口集中在一起,共同占据一个外设端口号。另一方面,接口中的命令部件只用于接收控制命令,CPU对命令部件只写不读。状态部件刚好相反,只用于向CPU提供状态信息,CPU对它只读不写。因而有些接口把命令部件与状态部件设计为共同占用1个外设端口号,由总线上的“读”或“写”信号区分究竟哪个部件是当前的数据传递对象。,8.1.2 8088的独立编址方式 无论是内存还是外设端口,都是以字节为基本的数据单位。当总线上出现有效的地址信号时,每个字节型内存储器或外设端口都能够根据地址信号,判断自己是否被选中为数据传递的对象(完成这种判断的是地址译码器),没有被选中的自动不参
6、与本次总线上的数据传递。从这个角度说,只要为内存和外设端口分别安排不同的地址,就可以从地址信号本身区分数据传递的对象是内存还是外设端口,从而把各个内存字节与外设端口编排一套地址号码,这种编排地址的方式称为“统一编址”或“混合编址”。,8088采用的是另一种编址方式。由于8088CPU在数据交换时除了能够发出地址信号外,还有一根特别的信号线(IO/M)可以发出两种不同的信号。当这根信号线上发出高电位信号时,表示当前总线上是外设操作;反之,这根信号线上是低电位时,表示当前总线上是内存操作。设计计算机系统时就可以利用这根信号线上的信号,区分操作对象是内存还是外设。这时,各个内存字节与外设端口可以分开
7、编排两套号码,分别称为内存地址与外设地址。当CPU需要读写数据时,同时发出地址信号和 IO/M信号,这些信号一起送到地址译码器,地址信号选择了具体的地址号码,而 IO/M信号则选择内存还是外设。这种把内存和外设端口分开各自编址的方式称为“独立编址”。,8.1.3 控制外设的指令 由于8088采取了独立编址方式,就需要有特殊的指令控制对外设端口的操作。8088系统设计有两条专用指令:IN和OUT。【指令格式】IN d1,d2【功能】从d2指明的外设端口中读取1字节或2字节数据,送到操作数d1指出的地方。【说明】(1)8088系统限制d1只能是AL或AX。当外设端口号不超过255时,d2操作数可直
8、接写端口号码,是外设的直接寻址方式;端口号超过255时,必须先把端口号放在DX中,以DX作为d2操作数,这是外设的间接寻址方式。,(2)当d1是AL时,该指令从指定的端口中读1字节数据;当d1是AX时,CPU将从d2对应的端口读1字节数据到AL,从下一个端口号读1字节数据到AH,即总共读取16位数据送到AX 中。【指令格式】OUT d1,d2【功能】把操作数d2指明的1字节或2字节数据送到d1对应的外设端口中。【说明】(1)d2只能是AL或AX。当外设端口号不超过255时,d1操作数可直接写端口号码;端口号超过255时,必须先把端口号放在DX中,以DX作为d1操作数。,(2)当d2是AL时,该
9、指令把AL中的8位数据送往d1指定的外设端口;当d2是AX时,该指令把AL中的8位数据送到d1对应的端口,把AH中的8位数据送往下一端口,即把16位数据送到d1对应的端口及下一端口中。IN和OUT指令专门用于外设操作,必须与内存操作严格区分开。下面的例8.1用来说明IN、OUT指令与内存操作的MOV指令之间的差别,并请读者体会在数据传递期间IO/M信号的作用。,【例8.1】说明下面各指令或程序段的功能。(1)MOV DX,61H IN AL,DX(2)MOV BX,61H MOV AL,BX(3)OUT 21H,AL(4)MOV SI,21H MOV SI,AL,【解】(1)先把立即数61H放
10、到DX中,然后以DX中的61H作为外设端口号,从相应的外设端口读取1字节数据送到AL中。(2)先把立即数61H放到BX中,然后以BX中的61H作为偏移地址,以缺省段寄存器DS 中的值为段地址,从相应的内存中取出1字节数据送到AL中。(3)把AL中的1字节数据送往21H号外设端口。(4)先把立即数21H放到SI中,然后以SI中的21H作为偏移地址,以缺省段寄存器DS 中的值为段地址,把AL中的1字节数据送到相应的内存中。,8.1.4 输入输出方式 外部设备是多种多样的,不同的设备需要不同的控制方法。CPU与外设之间进行数据传递时需要考虑外设的性能。对于多数慢速外设而言,如果CPU传送来的数据速度
11、太快,外设来不及处理,就可能造成数据丢失;如果外设还没有准备好数据,CPU就已经发出了读操作命令,将读不到正确的数据。因此,计算机系统进行内外数据交换时,必须根据外设的特点采用适当的形式。总的来说,主机与外设之间数据交换的方法有4种:无条件方式、查询方式、中断方式、DMA方式。,1无条件方式 又称为直接方式,是指CPU可在任何时刻直接以外设操作指令与外部设备进行数据传递。显然,这种方式对外设有很高的要求,它必须能像内存一样时刻准备着与 CPU进行数据传递,并且能够跟上CPU的速度,保证传送的信息的正确性。2查询方式 使用查询方式工作的外设必须至少有两个部件,其中之一是状态部件。CPU每一次与外
12、设进行数据交换之前,先从状态部件读取信息,判断外设是否处于“就绪”(Ready)状态。如果来自外设的状态信息反映出外设“没有准备好”或正“忙”(Busy),说明还不能进行数据传递;反之,当CPU检测到外设已准备好(Ready)后,可以与外设进行一次数据交换。,3中断方式 这是指每当外设准备好、能够进行数据传递时,就向CPU发出一个特殊的请求信号,称为中断请求信号。CPU收到中断请求后,暂停当前的工作,转而执行一段预先设计好的中断服务程序,完成对外设的数据交换。执行完中断服务程序后,CPU仍回到被暂停的程序继续执行。4直接存储器存取DMA(Direct Memory Access)方式 这是一种
13、不通过CPU,在内存与外设之间直接进行高速数据交换的方法。通常,系统总线是在CPU的控制之下,CPU总是作为数据传递的一方,内存与外设其中之一作为另一方。当大量的数据需要传递时,在主机内部,数据不,可能完全放在CPU中,只能放在内存中。在CPU控制下进行大量数据的传递,就必须把内存中的数据读到CPU中,然后再写往外设,或者反方向,先把数据从外设读入CPU再写往内存。可见,数据必须以CPU作为过渡,才能到达它的目的地。DMA方式正是避免了这种过渡,让数据不经过CPU,直接从内存送到外设,或者反之。进行DMA方式的数据传递必须有一个前提条件,就是CPU能够让出总线的控制权,交由DMA方式数据传递的
14、专用控制器控制,当数据传递结束后,CPU再收回总线控制权。8088CPU支持这样的总线操作方式,因而8088系统可以进行DMA方式的数据传递。,DMA控制器专门用于控制内存与外设之间的直接数据传递,但是它没有数据处理能力。在一些计算机系统中还设计有带有处理能力的专用数据传送芯片,其工作方式与 DMA方式很相似,也需要CPU在适当的时候让出总线供其使用,这种数据传递方式称为“专用处理机方式”。8088微型计算机不使用处理机方式进行数据传递,DMA方式需要涉及计算机硬件的内容过多,所以本书都不做详细介绍。,图8.1 扬声器与系统总线的连接,8.2 无条件方式输入输出 计算机系统中的扬声器是一种简单
15、的输出设备,可以随时从CPU接收控制命令。图8.1是扬声器的连接原理图。,扬声器发声的基本原理是振动。扬声器口上的一层薄膜在电信号控制下往复振动产生声音,每秒钟振动的次数就是所发出的声音的频率,振动的幅度决定声音的强度。由于控制扬声器的信号是二进制的开关信号,不能对流过扬声器的电流的大小进行控制,因而不能控制扬声器薄膜的振幅,所以小扬声器只能发出固定强度的声音。但开关信号变化的频率是可控的,CPU正是通过控制开关信号的频率,让扬声器发出不同频率的声音。,由图8.1可以看到,控制扬声器的信号有两个来源,它们通过与门之后送往放大电路并控制扬声器发声。系统中的61H号端口是一个可读写的外设端口,能够
16、存放一字节数据,其中的最低两位就用来控制送往小扬声器的两个信号源。最低位P0为0可以保证送往与门A输入端的信号为高电位,这时只需要交替变化次低位P1的值,控制与门的另一个输入端B端的信号即可。除此之外,还要控制P1 变化的频率,比如要让扬声器发出500Hz的声音,就是要使P1位上的信号每秒钟变化500次,即每0.002秒是一个变化周期,因而要让P1位维持高电位(即置P1位为1)0.001秒,然后变成低电位,再维持0.001秒,如此交替变化。而发声时间则通过控制P1位交替变化的次数来掌握,比如让扬声器在1秒钟内保持发出500Hz的声音,就要让P1位交替变化500次。,控制时间并不是件容易的事。如
17、果要准确控制时间,可以参照微机原理中有关定时器的内容,采用后面说明的中断方式。在此只是为了说明直接数据传送的原理,故简化时间控制的方法,采用循环延迟的方式实现。需要说明的是,例8.2的程序虽然可以在各种档次的PC机上运行,但发出的声音频率有可能不一样。这是因为不同档次的机器执行循环延迟所花费的时间不同,而程序本身就是利用这个延迟来控制音频的。,【例8.2】利用无条件数据传送方式,让计算机的扬声器在1秒钟内保持发出500 Hz 的声音。【解】完整的程序如下:delnum=14000 sta SEGMENT STACK DW 1024 DUP(0)sta ENDS code SEGMENT ASS
18、UME CS:code,SS:sta,delay PROC NEAR;时间延迟子程序,以CX中的值作为 PUSH AX;循环次数,做若干次的乘法产生时 PUSH DX;间延迟的效果 del:IMUL AX;用乘法指令延迟,执行时间较长 LOOP del POP DX POP AX RET delay ENDP main:MOV CX,500 sou:PUSH CX,IN AL,61H;读出原61H端口的数据 AND AL,11111100B;清最低两位 OUT 61H,AL;送低电位到P1 MOV CX,delnum;取控制延迟时间的循环次数值 CALL delay IN AL,61H OR
19、AL,00000010B;置P1位为1 OUT 61H,AL MOV CX,delnum,CALL delay POP CX LOOP sou MOV AX,4C00H INT 21H code ENDS END main 从这个例子可以看出,对扬声器的控制是不需要任何条件的,程序中在向61H号端口送数据时根本不考虑扬声器是否准备好、是否可接收数据等问题。由端口61H到放大电路构成了扬声器的接口电路,该接口以系统总线上送来的信号驱动薄膜的振动,按无条件方式进行数据传送。,8.3 查询方式输入输出 大多数外设不可能像扬声器那样工作,这些外设处理数据的速度和提供数据的速度往往比主机内部速度慢得多,
20、因而CPU与这类设备进行数据传递前必须先判断它们是否“就绪”。CPU以查询方式从外设读取一批数据,以及向外设送出一批数据的流程如图8.2所示。,Y,(b)查询方式输出操作流程,(a)查询方式输入操作流程,打印机是一种可以按查询方式工作的输出外设,它与主机连接的接口部件是打印机适配器,也就是平常所说的“标准并行接口”或“并口”。打印机接口中的三大部件齐备,它们各自占据一个外设端口号码,分别是:数据部件 378H;状态部件 379H;控制部件 37AH。状态端口各位的含义如下:,D7 D6 D5 D4 D3 D2 D1 D0,(1)D7位:是打印机的“忙”信号。这一位为0表示打印机当前正处于“忙”
21、状态,为1表示打印机不忙。(2)D6位:是打印机送回的认可信号。当打印机从接口中正确接收1字节数据后,就送回一个低电位的认可信号,这个信号只维持很短的时间,然后又恢复高电位。(3)D5位:缺纸信号。这一位为1表示打印机无纸,因而无法打印,为0时表示正常工作。(4)D4位:联机信号。这一位为1表示正处于联机工作状态,为0表示没有联机,这时不能工作。(5)D3位:出错信号。为0表示打印机内部出现错误,不能工作,为1则正常。,控制端口各位的含义如下:,D7 D6D5D4 D3 D2 D1 D0,(1)D4位:允许中断信号。将该位置1,允许打印机以中断方式工作,为0则不允许。(2)D3位:联机命令。置
22、1将设置打印机的联机工作方式,控制打印机时总是把这一位置1,否则打印机不能正常工作。打印机正常打印时这一位需要保持1。,(3)D2位:初始化信号。正常工作时总是把这一位置1,需要把打印机重新初始化时,则在这一位先清0再置1,并且要维持清0的时间0.05秒以上。初始化又称作打印机复位,复位时可观察到的现象是打印头回到最左边。(4)D1位:自动走纸。置1要求打印机在打印完一行后(回车时)自动走纸,清0时则需要向打印机输出换行符(0AH)控制走纸。这一位通常被置为0。(5)D0位:选通信号。CPU通过在这一位上先置1再清0,通知打印机从数据部件中取走一字节数据并打印。把图8.2中查询输出的流程稍做修
23、改,可以作为控制打印机以查询方式工作的程序流程,如图8.3所示。,计数器清0,读状态端口,Ready?,送数据到数据端口,送先高后低的STB信号,打印完?,计数器加1,取下一数据,N,Y,Y,N,结束,图8.3 查询方式控制打印机,【例8.3】控制打印机以查询方式工作,打印26个英文字母,共打印30行。【解】sta SEGMENT STACK DB 1024 DUP(0)sta ENDS data SEGMENT print DB abcdefghijklmnopqrstuvwxyz,0DH,0AH data ENDS code SEGMENT ASSUME CS:code,SS:sta,DS
24、:data,init PROC NEAR;打印机初始化程序 MOV DX,37AH MOV AL,08H OUT DX,AL MOV CX,1000 init1:LOOP init1;延迟,维持初始化信号一段时间 MOV AL,0CH OUT DX,AL;结束初始化,保持联机 RET init ENDP,start:MOV AX,data MOV DS,AX MOV CX,30;30行 again:LEA BX,print;待打印字符串首地址存放于BX中 next:MOV DX,379H wait:IN AL,DX TEST AL,80H JZ wait;打印机忙,转去再读状态端口 DEC D
25、X;数据端口号 MOV AL,BX OUT DX,AL;送数据到数据端口暂存 MOV DX,37AH MOV AL,0DH,OUT DX,AL;置STB信号为1 DEC AL OUT DX,AL;置STB信号为0 CMP BYTE PTR BX,0AH JZ newline INC BX JMP nextnewline:LOOP again MOV AX,4C00H INT 21Hcode ENDS END start,8.4 中断方式输入输出 把例8.3的程序拿到计算机上去执行,可以发现从键盘上发出程序执行命令后,光标会停在命令的下一行闪烁,并且打印机开始工作,直到打印机打印完所有内容后才会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 输入输出方法 汇编语言程序设计 教学ppt课件 输入输出 方法 汇编语言 程序设计 教学 ppt 课件
链接地址:https://www.31ppt.com/p-4042137.html