![第9章-输入输出程序设计_第1页](http://file4.renrendoc.com/view/8005445f337e704c46e11474a77ca4cb/8005445f337e704c46e11474a77ca4cb1.gif)
![第9章-输入输出程序设计_第2页](http://file4.renrendoc.com/view/8005445f337e704c46e11474a77ca4cb/8005445f337e704c46e11474a77ca4cb2.gif)
![第9章-输入输出程序设计_第3页](http://file4.renrendoc.com/view/8005445f337e704c46e11474a77ca4cb/8005445f337e704c46e11474a77ca4cb3.gif)
![第9章-输入输出程序设计_第4页](http://file4.renrendoc.com/view/8005445f337e704c46e11474a77ca4cb/8005445f337e704c46e11474a77ca4cb4.gif)
![第9章-输入输出程序设计_第5页](http://file4.renrendoc.com/view/8005445f337e704c46e11474a77ca4cb/8005445f337e704c46e11474a77ca4cb5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章
输入/输出程序设计
◆
输入/输出指令
◆ 输入/输出控制方式
◆
I/O程序举例
◆ BIOS中断调用
9.1输入/输出指令
9.1.1I/O端口寻址
当设备通过接口与主机相连时,CPU可以通过接口地址来访问I/O设备。通常将I/O设备码视为地址码,对I/O地址码的编址可采用存储器编址和I/O端口编址两种方式。1.存储器编址方法存储器编址也叫统一编址,就是将I/O地址看作是存储器地址的一部分。2.I/O端口编址方法I/O端口编址也称为不统一编址,就是指I/O地址和存储器地址是分开的,所有对I/O的访问必须有专用的I/O指令。00FFH0000H0100HFFFFH地址...M空间I/O空间...(64KB)整个地址空间(256个)(65280个)原则: M与I/O共用整个地址空间;I/O端口与存储单元等同——M与I/O地址不
重叠;无专门的I/O指令优点: I/O可有较大编址空间,易扩展;I/O操作指令类型多、功能齐全;缺点: M的地址空间受限;I/O指令较长,执行速度较慢;采用机型:Motorola系列、Apple系列、部分小型机存储器编址方法-独立编址(I/O映象方式、专用I/O指令方式)FFH00H地址I/O空间...(256个)原则: M与I/O分开编址、互不干扰——M与I/O地址不重叠优点: M空间不受I/O空间影响;有专用I/O指令(程序清晰);I/O指令短,执行速度快缺点:
I/O指令种类有限,I/O空间不易扩展采用机型:PC系列、Z-80系列(64KB)M空间地址0000HFFFFH...9.1.2输入/输出指令
1.输入指令格式:INAL/AX,PORT功能:将PORT端口内容(字节或字)传送给AL或AX中。2.输出指令格式:OUTPORT,AL/AX功能:将AL或AX中的内容输出到端口PORT。
3.端口地址的寻址方式用上两条指令时,有直接和间接两种寻址方式来确定端口地址。(1)直接端口寻址输入/输出指令的端口地址可以是直接给出,此时指令为双字节,第二字节即为一个具体的8位二进制数,可对0-255个8位端口寻。(2)间接端口寻址间接端口寻址是采用寄存器DX的内容来指定端口地址,此寻址方式的指令是单字节指令。因为DX是16位寄存器,所以这种寻址方式可对0-65535个16位端口进行寻址。当端口号大于255时,就应采用间接端口寻址。返回4、独立编址方式的端口访问1、I/O指令输入INAL,PORTINAL,DXINAX,PORTINAX,DX输出OUTPORT,ALOUTDX,ALOUTPORT,AXOUTDX,AX注意事项:PORT范围(长格式):00H~FFH数据寄存器:AL/AX端口间址寄存器(短格式):DX9.2输入/输出控制方式
9.2.1程序控制方式程序控制方式是在用户程序的控制下实现主机(CPU)与外设交换信息,对哪个端口何时进行输入/输出操作,都在程序中反映出来。具体实现时又有立即传送和程序查询两种方法。1.立即传送方式采用这种方法时,应该确定外设已经准备好,因此不再询问外设是否准备情况,在程序中需要输入/输出时,就向指定端口进行输入/输出操作。
2.程序查询方式若CPU与外设交换信息时,根据外设的工作状态来决定是否进行交换,这就是程序查询方法,这时CPU常常要查询外设的某些标记,然后再作出决定,就是程序查询方式。
查询方式-CPU反复地、主动地查询外设的状态-特点:无额外的硬件开销,但CPU工作效率低-应用:CPU不太忙、传送速度不高无条件方式是查询方式的特例读状态输入/输出准备好?NY查询方式传送一个数据查询方式动态演示9.2.2中断控制方式
程序控制方式的立即传送方法,不能根据设备实时状况操作,而程序查询方式使这种问题得以解决,但工作时CPU与外设相当串联工作,占用CPU大量时间,因此工作效率不可恭维。如果在外设已准备好的情况下,通知CPU,这时CPU才停下原来的工作与外设实施数据交换,此次信息交换完成后CPU在继续自己的原有工作,按此想法就产生了中断工作方式。CPU启动外设后仍继续执行原程序,在第K条指令执行结束后,CPU响应了外设的请求,中断了现行程序,转至中断服务程序,等处理完后又返回到原程序断点处,继续从第K+1条指令往下执行。这种方式中断了原程序的运行,所以称为程序中断方式。中断方式-外设主动向CPU提出中断申请;-CPU与外设并行工作-特点:增加了硬件开销(设置中断控制器),提高了CPU工作效率-应用:CPU较忙、尤其是实时控制及紧急事件处理中断方式动态演示9.2.3直接存储器存取方式如果外设能直接与主存交换信息而不占用CPU,CPU的资源利用率显然又可进一步提高,这就出现了直接存储器存取的DMA(DirectMemoryAccess)方式。
DMA的数据块传送操作可以分为3个主要步骤:(1)预处理阶段:由CPU执行几条输入输出指令,测试设备状态;向DMA控制器的设备地址寄存器中送入设备号,并启动设备;向内存地址计数器送入起始地址;向字计数器中送入交换的数据字的个数。(2)正式传送阶段:外设准备好发送数据(输入)或接收数据(输出)时,发出DMA请求,由DMA控制器向CPU发出总线使用权的请求;CPU在本机器周期执行完毕后响应该请求并使CPU的总线驱动器处于高阻状态,然后与系统总线相脱离,DMA控制器接管数据总线和地址总线的控制,并向内存提供地址;在内存与外围设备之间进行数据交换,每交换一个字则地址计数器和字计数器减1,当计数值到0时,DMA操作结束并向CPU提出中断申请。(3)DMA后处理工作:一旦DMA的中断请求得到响应,CPU将停止主程序的执行,转去执行中断服务程序进行DMA操作的后处理。包括校验送入内存的数据是否正确;决定使用DMA方式传送数据还是结束传送;测试传送过程中是否发生错误。
直接存储器存取方式(DMA方式)-M与I/O、I/O与I/O间直接快速传送-快速性原因:硬件取代软件;提供直接通路-特点:电路结构复杂,硬件开销大-应用:高速外设进行大量数据传送DMA方式动态演示返回9.3I/O程序举例例9.1编制查询方式打印字符的子程序。设打印机数据寄存器口地址378H,状态寄存器口地址379H,控制寄存器口地址37AH.编制子程序说明文件如下:子程序名:PRINT;子程序功能:打印一个字符;入口条件:打印字符在AL中;出口条件:无受影响的寄存器:F。图9.4打印机控制寄存器位模式图9.5打印机状态寄存器位模式;查询方式打印字符的子程序PRINT.ASMPRINTPROCNEARPUSHDXPUSHAXMOVDX,379HBUSY:INAL,DX;读打印机状态寄存器
TESTAL,80H;测试打印机忙否?
JEBUSY;忙则等待
POPAXPUSHAXMOVDX,378H;数据寄存器口地址→DXOUTDX,AL;输出数据
MOVDX,37AHMOVAL,1DHOUTDX,AL;发选通信号
ANDAL,1EHOUTDX,ALPOPAXPOPDXRETPRINTENDP例9.2编制直接控制扬声器发出声音的程序。程序通过I/O指令使设备控制寄存器(I/O端口地址为61H)的第1位交替为0和1,并使该位和扬声器的脉冲门相连,当第1位由0变为1,延迟一会又由0变为1时,脉冲门就先打开后关闭,产生了一个脉冲电流。这个脉冲电流被放大后送到扬声器使之发出了声音。61H端口的第0位和一个扬声器(2号定时器)相连,现在不用振荡器产生声音,所以把第0位置零。图9.5是控制扬声器发声的原理示意图。图9.5例9.2发声示意图例9.2控制扬声器发声程序sound.asmPROGRAMSEGMENTMAINPROCFARASSUMECS:PROGNAM,DS:PROGNAMORG 100HSTART:MOVDX,100 ;开关100次
IN AL,61H;获得端口61HANDAL,11111100B ;把发声控制位变为0SOUND:XORAL,2 ;把发声控制位取反
OUT61H,AL;输出到端口61H MOVCX,140H ;循环等待延时WAITL:LOOPWAITL DECDX;发100个脉冲
JNESOUND RETMAINENDPPROGRAMENDSENDSTART9.3中断
9.3.1中断概念
1.中断概念
计算机在执行程序的过程中,在出现异常情况或特殊请求时,计算机停止现行运行程序,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,称之为计算机上的“中断”。
2.中断的应用场合(1)及时处理计算机中的紧急事件突发故障在用户程序中是无法反映的,但它的出现可导致运行结果出错,甚至出现意想不到的后果,为了及时处理这些故障,应该采用中断方式。
(2)协调主机与外设工作速度
大部分外设的工作速度均低于CPU,采用程序查询方式,会占用了CPU的宝贵时间。采用中断控制方式,可以很好的解决这一问题。
(3)实时控制9.3.2中断源、中断类型码和中断优先级
1.中断源
引起中断的原因或来源称为中断源(Interruptsource)。(1)
外部中断不是因为CPU内部原因产生的中断,称为外部中断。而外部中断又分为非屏蔽中断NMI和可屏蔽中断INTR两种。(2)
内部中断由CPU内部产生的中断,称为内部中断。按引发情况可分为3类。例如除法运算出错、执行软中断指令、单步中断等。2.中断类型码PC机为每一个中断源分配一个号码,称为中断类型码。这些中断类型码在PC机中是唯一的,有的是系统统一规定的,有的是由用户指定中断类型码。
3.中断优先级
在某时如只有一个中断源提出中断请求,若它是非屏蔽中断源,那么CPU就会立即响应它的请求;若它是可屏蔽中断源,只要IF=1,CPU也会立即响应它的请求。但是,如果在同一时刻有几个中断源同时提出中断请求,CPU只能先响应1个中断源,如果CPU响应了一个中断源的中断请求后,在执行中断处理程序的时候,又有一个中断源提出中断请求,CPU能否响应这个新的中断请求,这就引出了中断优先级问题。
9.3.3中断矢量表不同的中断来自不同的中断源,因此有着不同的处理任务,PC机有256个不同的中断,对每一个中断源都要设计一个中断处理程序,而且每一个中断程序都有自己的入口地址,将256个中断程序的入口地址放到一起,就形成了一个表,称之为中断矢量表。PC机的中断矢量表是在在内存最小地址的1k字节(绝对地址为:00000H~003FFH)空间建立的,由此表确定了中断类型码与该中断源所对应的中断处理程序之间的一一对应联系。图9.12给出中断矢量表的安排,表内存放有256个中断处理程序入口地址。每个入口地址由4个字节组成,两个低字节存放入口地址的偏移量,两个高字节存放它的段基值。中断响应以后,表中对应的4个字节的内容分别被送人IP和CS,完成程序转移。表中中断类型0、类型1、类型2等表示这个入口地址对应的中断类型码。如果已知现在响应中断的中断类型码,就可以从中断矢量表中找到该中断源的处理程序入口地址。设中断类型码为N,则有:中断矢量地址=中断类型号*N也就是(4*N,4*N十1)→IP;(4*N+2,4*N十3)→CS这样就把中断处理程序的入口地址的偏移量和段基值分别送人IP和CS,然后到此地址执行该中断的服务子程序。9.3.4中断过程一个完整的中断过程,要先后经历中断请求、中断响应、中断处理及中断返回等4步骤。1.中断请求这是引起中断的第1步。中断源产生中断请求的条件,对不同的中断源是不一样的。2.中断响应CPU在每执行一条指令的后期,都要查询是否有中断请求。若有,就按照优先顺序给予响应或不响应。查询中断请求按优先级从高到低的顺序进行。如果CPU响应,就识别并读出得到响应的中断源的类型码。3.中断处理由于每个中断处理的任务不同,因此具体中断处理不可能一样,但是也存在一些共性。,简单的说中断处理一般可由四个部分组成,即:现场保护、具体中断处理、现场恢复以及中断返回指令。4.中断返回每一个中断处理子程序的最后要使用中断返回指令IRET以退出中断,返回原断点处。该指令是无操作数指令,其功能是:首先从堆栈中弹出中断断点地址,分别送人IP和CS,然后恢复标志寄存器内容。9.3.5软中断及有关的中断指令软中断属于内部中断,软中断(SoftInterruptions)指令的格式为:INTn
其中n为中断类型号。PC机的软中断分为BIOS中断、DOS中断和自由中断三部分。1.BIOS中断(10H-1FH)固化在ROM中,称为ROMBIOS,常用中断有:INT10H-屏幕显示INT13H-磁盘读写INT16H-键盘输入2.DOS中断(20H-3FH)其中22H、23H、24H号是DOS专用中断,21H、20H、25H、26H、27H、2FH为用户可调用中断。3.自由中断(40H-FFH)自由中断主要供系统和用户应用程序扩充使用。
返回9.4BIOS中断调用
BIOS是BasicInput/OutputSystem的缩写,是固化在PC机ROM中的基本输入输出系统,它提供系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块,一般以中断处理程序的形式存在。BIOS可以处理所有的系统中断,如键盘、显示器、磁盘、打印、日期与时间等。BIOS是模块化的结构形式,每个功能模块的入口地址都在中断矢量表中。在1k中断矢量表中,共有256个中断调用的入口地址。对这些中断调用是通过软中断指令INT来实现的,软中断指令的操作数就是中断类型码。使用BIOS功能调用,给程序员编程带来很大的方便,程序员不必了解硬件I/O接口的特性,可直接用指令设置参数,然后中断调用BIOS中的程序,所以利用BIOS功能编写的程序可读性好,易于移植。有时为了提高处理效率,应用程序也可以通过输入输出指令直接操纵外设接口控制外设,但这种情况下程序员要熟悉相关的硬件特性,而且应用程序的设计比较复杂,这是BIOS不方便之处。9.4.1键盘输入中断调用
键盘中断调用(1NT16H)现有9个子功能,其中0、1和2号功能较常用。键盘调用01H-03H子功能见下表。功能号输入输出功能01HAH=00HAH=键盘扫描代码AL=字符的ASCII码读键盘键入的一个ASCII字符02HAH=01HAH=键盘扫描码AL=字符的ASCII码若有键按下ZF=0,
否则ZF=1读键盘状态并检查键盘是否有字符输入02HAH=02HAH=00HAL=键盘标志字读键盘标志字D7D6D5D4D3D2D1D0InsertCapsLockNurnLockScrollLockAlt键Ctrl键Left-ShiftRight-Shift激活为1激活为1激活为1激活为1按下为1按下为1按下为1按下为1在AL中各状态位意义如下
显示器输出控制中断调用的中断类型号为10H,总共有00H-1CH的子调用,通过这些子功能子程序的调用,可以在屏幕指定位置上以字符方式或图形方式显示。在子程序的调用中00H、02H、03H、05H、06H、07H、08H、09H、0AH、0CH、0DH和0CH是基本的调用。1.视频模式00H号子调用是指定视频模式,PC机显卡有文本和图形两种显示模式。文本显示方式,是指以字符为单位显示的方式,字符通常是指字母、数字、普通符号和一些特殊符号(如矩形块等)。在这种显示方式下,显示缓冲存储区中存放的是字符的ASCII码和对应的显示属性,每个字符占用两个字节的空间。文本模式可以显示256种不同字符,如在3号文本显示模式下,显示器的屏幕被划分成80列25行,因此一屏最多可以显示80x25(2000)个字符。图形显示方式中,显示缓冲存储区中存放的是“像素”点的信息,每个像素对应屏幕上的一点位置,它的值为“0”或者“1”,为“0”就不在屏幕上打点,为“1”则在屏幕上打点。9.4.2显示器输出控制中断调用2.字符的属性
字符的显示属性是字符显示时的特性,用一个描述颜色的字节信息来规定。文本方式的显示属性字节,字符单色文本显示和彩色文本显示的属性字节略有区别,对于单色显示,位6、5、4或位2、1、0三位全为0是表示黑色,全是1时表示黑色白色,对于彩色显示是由RGB这3位颜色组合给出的颜色。其中BL为0表示前景字符不闪烁,为1表示前景字符闪烁;I为0表示前景字符为一般强度,为1表示前景字符为高强度。单色文本方式的显示属性字节取值和采色(16色)文本方式的颜色组合请看书中表。
3.调用格式各子功能调用格式为:MOVAH,功能号┇ ;其他调用参数INT10H ;功能调用其他调用参数的一般规则是:要显示的字符或像素值通常在AL中;X坐标(列号):图形方式在CX中,字符方式在DL中;Y坐标(行号):图形方式在DX中,字符方式在DH中;显示的页号在BH中。9.4.3时间中断调用
INT1AH称为系统定时器和实时时钟(RTC)服务,包括11个子功能调用,其中常用的是00和01号子功能,下面主要介绍这两个功能调用。
1.读取时间计数器当前值(00H)调用前:AH=00H子功能调用返回时:CX=时间计数器的高位字DX时间计数器的低位字AL=0:未计满24小时AL=1:已计满24小时时间计数器约54.926ins计数一次,所以可按下列公式计算出当前的时间:时:时间计数器的值(CX:DX)/65543;时的余数=时间计数器的值MOD65543分:时的余数/1092;分的余数=时的余数MOD1092秒:分的余数/18.212.设置时间计数器的当前值(01H)子功能调用前:AH=01HCX=时间计数器当前值高位字
DX=时间计数器当前值低位字按下列公式计算出当前时间值:
CX:DX=(时*65543)十(分*1092)十(秒*18.21)返回9.4.4中断调用程序举例
1.
键盘
【例9.5】将用户按的键盘显示出来,当按下FHIFT键后结束运行,请编写程序。
SHIFT_L=02H; SHIFT_R=01H STACK SEGMENTSTACK DB200DUP(0) STACK ENDS CODE SEGMENT ASSUMECS:CODE,SS:STACK BEGIN: MOVAH,02H ;取键盘状态字节
INT16H TESTAL,SHIFT_L+SHIFT_R ;判断是否按下SHIFT键
JNZEXIT ;按下,结束程序
MOVAH,01H ;判断是否有键可读
INT16H JZBEGIN ;没有,转去继续读键
MOVAH,00H ;读键
INT16H MOVDL,AL ;显示所读键
MOVAH,02H INT21H JMPBEGIN ;继续读键
EXIT: MOVAH,4CH INT21H CODE ENDS ENDBEGIN9.4.4中断调用程序举例
2.显示输出【例9.6】在字符显示方式下显示'CollegeofComputerScience&Technology,BeiHuaUniversity'。 STACK SEGMENTPARASTACK DB60DUP(0) STACKENDS DATA SEGMENT CHAR DB'CollegeofComputerScience&Technology,BeiHuaUniversity' COL DB0 ;开始的列号
ROW DB10 ;开始的行号
DATAENDS CODE SEGMENT ASSUME
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店线上服务平台建设合同
- 主持人兼职劳务合同范本
- 仓储运输合同范文
- 高考数学(理)一轮复习教案:第十三篇 推理证明、算法、复数第2讲 直接证明与间接证明
- 2025年济南道路运输从业人员资格考试内容有哪些
- 2025年西安考货运从业资格证题库答案
- 孔隙结构对大气等离子喷涂热障涂层冲蚀失效行为的影响
- 2025年沪教版选修4历史下册阶段测试试卷含答案
- 2025年人教B版高三历史下册月考试卷含答案
- 2025年中图版选修4地理上册阶段测试试卷含答案
- 正大天虹方矩管镀锌方矩管材质书
- 2024年山东鲁商集团有限公司招聘笔试参考题库含答案解析
- 山东省泰安市2022年初中学业水平考试生物试题
- 受贿案例心得体会
- 人教A版高中数学选择性必修第一册第二章直线和圆的方程-经典例题及配套练习题含答案解析
- 图书馆学基础简明教程
- 毕业设计(论文)-液体药品灌装机的设计与制造
- 二年级下册数学教案 -《数一数(二)》 北师大版
- 银行内部举报管理规定
- 平面几何强化训练题集:初中分册数学练习题
- 项目奖金分配奖励制度和方案完整版
评论
0/150
提交评论