《汇编语言程序设计》第9章市公开课金奖市赛课一等奖课件_第1页
《汇编语言程序设计》第9章市公开课金奖市赛课一等奖课件_第2页
《汇编语言程序设计》第9章市公开课金奖市赛课一等奖课件_第3页
《汇编语言程序设计》第9章市公开课金奖市赛课一等奖课件_第4页
《汇编语言程序设计》第9章市公开课金奖市赛课一等奖课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章

输入/输出程序设计

输入/输出指令

◆ 输入/输出控制方式

中止

◆ BIOS中止调用

第1页

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指令。第2页9.1.2输入/输出指令

1.输入指令格式:INOPERAND1,OPERAND2其中:操作数OPERAND1是AL或AX,操作数OPERAND2是输入端口地址。输入指令IN是把端口一个字节或字传送给AL或AX。2.输出指令格式:OUTOPERAND1,OPERAND2其中:OPERAND1是输出端口地址,OPERAND2是AL或AX,输出指令OUT把AL或AX中内容输出到端口。

3.端口地址寻址方式用上两条指令时,有直接和间接两种寻址方式来确定端口地址。(1)直接端口寻址输入/输出指令端口地址能够是直接给出,此时指令为双字节,第二字节即为一个详细8位二进制数,可对0-255个8位端口寻。(2)间接端口寻址间接端口寻址是采取存放器DX内容来指定端口地址,此寻址方式指令是单字节指令。因为DX是16位存放器,所以这种寻址方式可对0-65535个16位端口进行寻址。当端口号大于255时,就应采取间接端口寻址。返回第3页9.2输入/输出控制方式

9.2.1程序控制方式程序控制方式是在用户程序控制下实现主机(CPU)与外设交换信息,对哪个端口何时进行输入/输出操作,都在程序中反应出来。详细实现时又有马上传送和程序查询两种方法。1.马上传送方式

采取这种方法时,应该确定外设已经准备好,所以不再问询外设是否准备情况,在程序中需要输入/输出时,就向指定端口进行输入/输出操作。

2.程序查询方式若CPU与外设交换信息时,依据外设工作状态来决定是否进行交换,这就是程序查询方法,这时CPU经常要查询外设一些标识,然后再作出决定,就是程序查询方式。

第4页9.2.2中止控制方式

程序控制方式马上传送方法,不能依据设备实时情况操作,而程序查询方式使这种问题得以处理,但工作时CPU与外设相当串联工作,占用CPU大量时间,所以工作效率不可恭维。假如在外设已准备好情况下,通知CPU,这时CPU才停下原来工作与外设实施数据交换,此次信息交换完成后CPU在继续自己原有工作,按此想法就产生了中止工作方式。CPU开启外设后仍继续执行原程序,在第K条指令执行结束后,CPU响应了外设请求,中止了现行程序,转至中止服务程序,等处理完后又返回到原程序断点处,继续从第K+1条指令往下执行。这种方式中止了原程序运行,所以称为程序中止方式。第5页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方式传送数据还是结束传送;测试传送过程中是否发生错误。

返回第6页9.3中止

9.3.1中止概念

1.中止概念

计算机在执行程序过程中,在出现异常情况或特殊请求时,计算机停顿现行运行程序,转向对这些异常情况或特殊请求处理,处理结束后再返回到现行程序间断处,称之为计算机上“中止”。

2.中止应用场所(1)及时处理计算机中紧急事件突发故障在用户程序中是无法反应,但它出现可造成运行结果犯错,甚至出现意想不到后果,为了及时处理这些故障,应该采取中止方式。

(2)协调主机与外设工作速度

大部分外设工作速度均低于CPU,采取程序查询方式,会占用了CPU宝贵时间。采取中止控制方式,能够很好处理这一问题。

(3)实时控制第7页9.3.2中止源、中止类型码和中止优先级

1.中止源

引发中止原因或起源称为中止源(Interruptsource)。(1)

外部中止不是因为CPU内部原因产生中止,称为外部中止。而外部中止又分为非屏蔽中止NMI和可屏蔽中止INTR两种。(2)

内部中止由CPU内部产生中止,称为内部中止。按引发情况可分为3类。比如除法运算犯错、执行软中止指令、单步中止等。2.中止类型码PC机为每一个中止源分配一个号码,称为中止类型码。这些中止类型码在PC机中是唯一,有是系统统一要求,有是由用户指定中止类型码。第8页

3.中止优先级

在某时如只有一个中止源提出中止请求,若它是非屏蔽中止源,那么CPU就会马上响应它请求;若它是可屏蔽中止源,只要IF=1,CPU也会马上响应它请求。不过,假如在同一时刻有几个中止源同时提出中止请求,CPU只能先响应1个中止源,假如CPU响应了一个中止源中止请求后,在执行中止处理程序时候,又有一个中止源提出中止请求,CPU能否响应这个新中止请求,这就引出了中止优先级问题。

第9页

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,然后到此地址执行该中止服务子程序。第10页9.3.4中止过程

一个完整中止过程,要先后经历中止请求、中止响应、中止处理及中止返回等4步骤。1.中止请求这是引发中止第1步。中止源产生中止请求条件,对不一样中止源是不一样。2.中止响应CPU在每执行一条指令后期,都要查询是否有中止请求。若有,就按照优先次序给予响应或不响应。查询中止请求按优先级从高到低次序进行。假如CPU响应,就识别并读出得到响应中止源类型码。3.中止处理因为每个中止处理任务不一样,所以详细中止处理不可能一样,不过也存在一些共性。,简单说中止处理普通可由四个部分组成,即:现场保护、详细中止处理、现场恢复以及中止返回指令。4.中止返回每一个中止处理子程序最终要使用中止返回指令IRET以退出中止,返回原断点处。该指令是无操作数指令,其功效是:首先从堆栈中弹出中止断点地址,分别送人IP和CS,然后恢复标志存放器内容。第11页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)自由中止主要供系统和用户应用程序扩充使用。

返回第12页9.4BIOS中止调用

BIOS是BasicInput/OutputSystem缩写,是固化在PC机ROM中基本输入输出系统,它提供系统加电自检、引导装入、主要I/O设备处理程序以及接口控制等功效模块,普通以中止处理程序形式存在。BIOS能够处理全部系统中止,如键盘、显示器、磁盘、打印、日期与时间等。BIOS是模块化结构形式,每个功效模块入口地址都在中止矢量表中。在1k中止矢量表中,共有256个中止调用入口地址。对这些中止调用是经过软中止指令INT来实现,软中止指令操作数就是中止类型码。使用BIOS功效调用,给程序员编程带来很大方便,程序员无须了解硬件I/O接口特征,可直接用指令设置参数,然后中止调用BIOS中程序,所以利用BIOS功效编写程序可读性好,易于移植。有时为了提升处理效率,应用程序也能够经过输入输出指令直接操纵外设接口控制外设,但这种情况下程序员要熟悉相关硬件特征,而且应用程序设计比较复杂,这是BIOS不方便之处。第13页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中各状态位意义以下

第14页显示器输出控制中止调用中止类型号为10H,总共有00H-1CH子调用,经过这些子功效子程序调用,能够在屏幕指定位置上以字符方式或图形方式显示。在子程序调用中00H、02H、03H、05H、06H、07H、08H、09H、0AH、0CH、0DH和0CH是基本调用。1.视频模式00H号子调用是指定视频模式,PC机显卡有文本和图形两种显示模式。文本显示方式,是指以字符为单位显示方式,字符通常是指字母、数字、普通符号和一些特殊符号(如矩形块等)。在这种显示方式下,显示缓冲存放区中存放是字符ASCII码和对应显示属性,每个字符占用两个字节空间。文本模式能够显示256种不一样字符,如在3号文本显示模式下,显示器屏幕被划分成80列25行,所以一屏最多能够显示80x25()个字符。图形显示方式中,显示缓冲存放区中存放是“像素”点信息,每个像素对应屏幕上一点位置,它值为“0”或者“1”,为“0”就不在屏幕上打点,为“1”则在屏幕上打点。9.4.2显示器输出控制中止调用第15页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中。第16页

9.4.3时间中止调用

INT1AH称为系统定时器和实时时钟(RTC)服务,包含11个子功能调用,其中常用是00和01号子功能,下面主要介绍这两个功能调用。

1.读取时间计数器当前值(00H)调用前:AH=00H子功能调用返回时:CX=时间计数器高位字DX时间计数器低位字AL=0:未计满二十四小时AL=1:已计满二十四小时时间计数器约54.926ins计数一次,所以可按以下公式计算出当前时间:时:时间计数器值(CX:DX)/65543;时余数=时间计数器值MOD65543分:时余数/1092;分余数=时余数MOD1092秒:分余数/18.212.设置时间计数器当前值(01H)子功能调用前:AH=01HCX=时间计数器当前值高位字DX=时间计数器当前值低位字按以下公式计算出当前时间值:CX:DX=(时*65543)十(分*1092)十(秒*18.21)返回第17页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 ENDBEGIN第18页9.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 ASSUMECS:CODE,DS:DATA,SS:STACK START: MOVAX,DATA MOVDS,AX MOVAH,0 MOVAL,03H ;置字符显示方式

INT10H ;置640x200图形方式

LOP1: LEABX,CHAR PUSHBX MOVDL,COL MOVCX,58

第19页 LOP2: MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论