输入输出程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言 程序设计
9.3.5 软中断及有关的中断指令
软中断属于内部中断,软中断(Soft Interruptions)指令的格 式为: INT n 其中n为中断类型号。 PC机的软中断分为BIOS中断、DOS中断和自由中断三部分。 1.BIOS 中断(10H-1FH) 固化在ROM中,称为ROM BIOS,常用中断有: INT 10H-屏幕显示 INT 13H-磁盘读写 INT 16H -键盘输入 2.DOS中断(20H-3FH) 其中22H、23H、24H号是 DOS专用中断,21H、20H、25H、26H、 27H、2FH 为用户可调用中断。 3. 自由中断(40H-FFH) 自由中断主要供系统和用户应用程序扩充使用。 返回
汇编语言 程序设计
9.4.1
键盘输入中断调用
键盘中断调用(1NT 16H)现有9个子功能,其中0、 1和2号功能较常用。键盘调用01H-03H子功能见下表。
功能号 01H 输入 AH=00H 输出 AH=键盘扫描代码AL= 字符的ASCII码 AH=键盘扫描码AL=字 符的ASCII码若有键 按下ZF=0, 否则ZF=1 AH=00H AL=键盘标志字 功能 读键盘键入的一个ASCII字符
中断矢量地址=中断类型号*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.2
9.2.1
输入/输出控制方式
程序控制方式
程序控制方式是在用户程序的控制下实现主机(CPU)与外设交 换信息,对哪个端口何时进行输入/输出操作,都在程序中反映出来。 具体实现时又有立即传送和程序查询两种方法。 1.立即传送方式 采用这种方法时,应该确定外设已经准备好,因此不再询问外设 是否准备情况,在程序中需要输入/输出时,就向指定端口进行输入 /输出操作。 2.程序查询方式 若CPU与外设交换信息时,根据外设的工作状态来决定是否进行 交换,这就是程序查询方法,这时CPU常常要查询外设的某些标记, 然后再作出决定,就是程序查询方式。
汇编语言 程序设计
3.中断优先级 在某时如只有一个中断源提出中断请求, 若它是非屏蔽中断源,那么CPU就会立即响应 它的请求;若它是可屏蔽中断源,只要IF=1, CPU也会立即响应它的请求。但是,如果在同 一时刻有几个中断源同时提出中断请求,CPU 只能先响应1个中断源,如果CPU响应了一个中 断源的中断请求后,在执行中断处理程序的时 候,又有一个中断源提出中断请求,CPU能否 响应这个新的中断请求,这就引出了中断优先 级问题。
汇编语言 程序设计
第9章 输入/输出程序设计
◆ ◆ ◆
◆
输入/输出指令 输入/输出控制方式 中断 BIOS中断调用
汇编语言 程序设计
9.1 输入/输出指令
9.1.1 I/O端口寻址
当设备通过接口与主机相连时,CPU可以通过接口地址 来访问 I/O 设备。通常将 I/O 设备码视为地址码,对 I/O 地址 码的编址可采用存储器编址和I/O端口编址两种方式。 1.存储器编址方法 存储器编址也叫统一编址,就是将I/O地址看作是存储 器地址的一部分。 2.I/O端口编址方法 I /O端口编址也称为不统一编址,就是指I/O地址和存 储器地址是分开的,所有对I/O的访问必须有专用的I/O指令。
汇编语言 程序设计
9.4
BIOS中断调用
BIOS 是 Basic Input/Output System 的缩写,是固化在 PC 机 ROM 中的基本输入输出系统,它提供系统加电自检、引导装入、 主要 I/O 设备的处理程序以及接口控制等功能模块,一般以中断 处理程序的形式存在。BIOS可以处理所有的系统中断,如键盘、 显示器、磁盘、打印、日期与时间等。BIOS是模块化的结构形式, 每个功能模块的入口地址都在中断矢量表中。在1k中断矢量表中, 共有 256 个中断调用的入口地址。对这些中断调用是通过软中断 指令INT来实现的,软中断指令的操作数就是中断类型码。 使用BIOS功能调用,给程序员编程带来很大的方便,程序员 不必了解硬件I/O接口的特性,可直接用指令设置参数,然后中 断调用BIOS中的程序,所以利用BIOS功能编写的程序可读性好, 易于移植。有时为了提高处理效率,应用程序也可以通过输入输 出指令直接操纵外设接口控制外设,但这种情况下程序员要熟悉 相关的硬件特性,而且应用程序的设计比较复杂,这是BIOS不方 便之处。
02H
AH=01H
读键盘状态并检查键盘是否有字符输入
02H
AH=02H
读键盘标志字
在AL中各状态位意义如下
D7 D6 D5 D4 D3 D2 D1 D0
Insert
CapsLock
NurnLock
ScrollLock
Alt键
Ctrl键
Left-Shift
Right-Shift
激活为1
激活为1
激活为1
汇编语言 程序设计
9.3.2
中断源、中断类型码和中断优先级
1.中断源 引起中断的原因或来源称为中断源(Interrupt source)。 (1) 外部中断 不是因为 CPU 内部原因产生的中断,称为外部中断。而外部中 断又分为非屏蔽中断NMI和可屏蔽中断INTR两种。 (2) 内部中断 由CPU内部产生的中断,称为内部中断。按引发情况可分为3 类。例如除法运算出错、执行软中断指令、单步中断等。 2.中断类型码 PC机为每一个中断源分配一个号码,称为中断类型码。这些 中断类型码在PC机中是唯一的,有的是系统统一规定的,有的是 由用户指定中断类型码。
汇编语言 程序设计
9.1.2பைடு நூலகம்
输入/输出指令
1.输入指令 格式: IN OPERAND1,OPERAND2 其中:操作数OPERAND1是AL或AX,操作数OPERAND2是输入端口地址。 输入指令IN是把端口的一个字节或字传送给AL或AX。 2.输出指令 格式: OUT OPERAND1,OPERAND2 其中: OPERAND1 是输出端口地址, OPERAND2 是 AL 或 AX,输出指令 OUT 把AL或AX中的内容输出到端口。 3. 端口地址的寻址方式 用上两条指令时,有直接和间接两种寻址方式来确定端口地址。 (1) 直接端口寻址 输入/输出指令的端口地址可以是直接给出,此时指令为双字节, 第二字节即为一个具体的8位二进制数,可对0-255个8位端口寻。 (2) 间接端口寻址 间接端口寻址是采用寄存器 DX 的内容来指定端口地址,此寻址方 式的指令是单字节指令。因为 DX 是 16 位寄存器,所以这种寻址方式可 对0-65535 个16位端口进行寻址。当端口号大于255 时,就应采用间接 端口寻址。
汇编语言 程序设计
9.3.3
中断矢量表
不同的中断来自不同的中断源,因此有着不同的处理任务, PC 机 有256个不同的中断,对每一个中断源都要设计一个中断处理程序,而 且每一个中断程序都有自己的入口地址,将256个中断程序的入口地址 放到一起,就形成了一个表,称之为中断矢量表。 PC 机的中断矢量表 是在在内存最小地址的1k字节(绝对地址为:00000H~003FFH)空间建 立的,由此表确定了中断类型码与该中断源所对应的中断处理程序之 间的一一对应联系。图9.12给出中断矢量表的安排,表内存放有256个 中断处理程序入口地址。每个入口地址由4个字节组成,两个低字节存 放入口地址的偏移量,两个高字节存放它的段基值。中断响应以后, 表中对应的4个字节的内容分别被送人IP和CS,完成程序转移。表中中 断类型0、类型1、类型2等表示这个入口地址对应的中断类型码。如果 已知现在响应中断的中断类型码,就可以从中断矢量表中找到该中断 源的处理程序入口地址。设中断类型码为N,则有:
激活为1
按下为1
按下为1
按下为1
按下为1
汇编语言 程序设计
9.4.2
显示器输出控制中断调用
显示器输出控制中断调用的中断类型号为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.3
9.3.1
中断
中断概念
1.中断概念
计算机在执行程序的过程中,在出现异常情况或特殊请求时,计 算机停止现行运行程序,转向对这些异常情况或特殊请求的处理, 处理结束后再返回到现行程序的间断处,称之为计算机上的“中 断”。 2.中断的应用场合 (1) 及时处理计算机中的紧急事件 突发故障在用户程序中是无法反映的,但它的出现可导致运行结果 出错,甚至出现意想不到的后果,为了及时处理这些故障,应该采 用中断方式。 (2) 协调主机与外设工作速度 大部分外设的工作速度均低于CPU,采用程序查询方式,会占用 了CPU的宝贵时间。采用中断控制方式,可以很好的解决这一问题。 (3) 实时控制
汇编语言 程序设计
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方式传送数据还是结束传送; 测试传送过程中是否发生错误。
汇编语言 程序设计
9.2.2 中断控制方式
程序控制方式的立即传送方法,不能根据设备实时状 况操作,而程序查询方式使这种问题得以解决,但工作时 CPU 与外设相当串联工作,占用 CPU 大量时间,因此工作效 率不可恭维。如果在外设已准备好的情况下,通知CPU,这 时CPU才停下原来的工作与外设实施数据交换,此次信息交 换完成后CPU在继续自己的原有工作,按此想法就产生了中 断工作方式。 CPU 启动外设后仍继续执行原程序,在第 K 条指令执行结 束后,CPU响应了外设的请求,中断了现行程序,转至中断 服务程序,等处理完后又返回到原程序断点处,继续从第 K+1条指令往下执行。这种方式中断了原程序的运行,所以 称为程序中断方式。