输入输出和中断程序设计

上传人:xt****7 文档编号:182882444 上传时间:2023-01-28 格式:PPT 页数:73 大小:223.50KB
收藏 版权申诉 举报 下载
输入输出和中断程序设计_第1页
第1页 / 共73页
输入输出和中断程序设计_第2页
第2页 / 共73页
输入输出和中断程序设计_第3页
第3页 / 共73页
资源描述:

《输入输出和中断程序设计》由会员分享,可在线阅读,更多相关《输入输出和中断程序设计(73页珍藏版)》请在装配图网上搜索。

1、 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计第第9 9章章 输入输出和中断程序设计输入输出和中断程序设计 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计输入输出指令输入输出指令查询传送方式查询传送方式中断概述中断概述中断处理程序设计中断处理程序设计BIOSBIOS功能调用功能调用 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计I/OI/O端口地址的分配端口地址的分配I/OI/O指令指令数据传送方

2、式数据传送方式 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 计算机系统通过接口与外围设备通信的,每个接口由一组寄存器组成,为了存取这些寄存器中的数据,系统为这些寄存器分配有专门的地址,即I/O端口地址。在80X86微机中,I/O端口地址是一个连续的独立的地址空间,范围从0000H FFFFH,共64KB,因此允许设置64K个8位端口或32K个16位端口.但实际中,由于系统的外围设备数量有限,只使用这些I/O端口地址的很小一部分。下表列出80X86微机的常见外设的I/O端口地址。IBM PC 80X86汇编语言程序设计 冶金工

3、业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计I/OI/O地址范围地址范围功能功能I/OI/O地址范围地址范围功能功能00H 0FH8237A(DMA控制器)2F8H 2FEH2号串行口20H-3FH8259A(可编程控 制器)320H 324H硬盘适配器93H 9FH DMA控制器372H-377H软盘适配器C0H 0EHDMA接口378H 37AH2号并行口F0H FFH协处理器3BCH 3BEH1号并行口170H-1F7H硬盘控制器 3C0H 3CFHEGA/VGA视频寄存器200H 20FH游戏控制接口3F0H 3F7H软盘控制寄存器278H 27AH3号并行口3F8

4、H 3FEH1号串行口 部分部分I/OI/O端口地址分配情况端口地址分配情况 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 对于I/O设备与内存独立编址的系统,有专门的I/O指令实现I/O设备与系统的通信,存取端口寄存器,完成输入输出.输入指令输入指令 输出指令输出指令 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 输入指令从一个输入端口读取一个字或字节,传送至寄存器AL或AX中,有直接寻址和间接寻址 两种方式,直接寻址方式的端口地址是一个范围 0 255的立

5、即数.间接寻址方式的端口地址在DX 寄存器中,地址范围0-65535。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 当端口地址超过255时,必须采用后两种间接寻址方式.例:例:下面两条表示分别从端口2FAH和2FBH输入一个字节 送AL和AH.MOV DX,2FAH IN AX,DX IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 输出指令将AL中的一个字节或AX中的一个字输出 到指定端口,有直接寻址和间接寻址两种方式。直接寻 址方式的端口地址是0 255之间的

6、立即数;间接寻址方式的端口地址(范围0 65535)放在DX中。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计例:例:MOV AX,6F24H MOV DX,2FDH OUT DX,AX表示将24H输出至端口2FDH,将6FH输出至端口2FEH。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 无条件传送方式无条件传送方式 查询方式查询方式 中断方式中断方式 直接存储器存取(直接存储器存取(DMADMA)方式方式 IBM PC 80X86汇编语言程序设计 冶金工业出

7、版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 微机系统中,有些简单的I/O设备在工作时,随时都准备好向CPU传送数据或准备好接收CPU的输出数据。也就是说,在工作中,系统不需要查询这些设备的状态,可以直接使用指令IN或OUT实现数据交换。这种方式实现简单,但在CPU与这些设备交换数据时,数据交换与指令的执行必须同步,否则就可能出错。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 查询方式适用于与CPU不同 步的I/O设备。查询方式的工作过程是:查询方式的工作过程是:如CPU要从 I/O设备接收数据,先查询I/O设

8、备状态,看数据是否准备好,如果没有准备好则继续查询;如数据已准备好,CPU就从该设备读取数据,之后,CPU向该I/O设备发送响应信号,表示数据已被接收。I/O设备在收到响应信号后,开始准备下一个数据的准备。YNN准备好输入或输出数据输入输出结束开 始读设备状态信息 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 用中断方式传送数据,可提高CPU效率,并 对一些状态进行实时响应。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 直接存储器存取方式适用于高速I/O设备与

9、CPU之间的高 速数据交换。其工作过程如下:(1)I/O设备向DMA控制器发出DMA传送请求;(2)DMA控制器向CPU发出HOLD信号,向CPU提出DMA请求;(3)CPU向DMA控制器发出响应信号,将总线控制权交与 DMA控制器;(4)DMA控制器控制总线并向I/O设备发出DMA应答信号;(5)DMA控制器分别通过地址总线和数据总线送出传输 数据的存储器地址和要传输的数据;(6)数据传送完毕,DMA控制器通过HOLD撤消对CPU的 DMA请求。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 查询方式的基本思想是查询方式的基本

10、思想是:CPU主动地通过输入输出 指令查询指定I/O设备的当前状态,若设备准备就绪,则 立即与设备进行数据交换,否则循环查询。因此,查询传送方式要求相应的I/O接口除了要有数 据寄存器外,还要有状态寄存器,有些I/O设备还要有控 制寄存器。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计中断的概念中断的概念中断源及中断分类中断源及中断分类中断向量表中断向量表中断响应过程中断响应过程中断优先级和中断嵌套中断优先级和中断嵌套中断指令中断指令 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入

11、输出和中断程序设计 中断是一种使CPU中止正在执行的程序而转去处理 特殊事件的操作。具体说就是在CPU执行程序的过程中,需要对外设进行输入输出操作,或由于某种事件发生,强迫CPU暂停当前执行的程序,转去执行输入输出操作 或对该事件进行处理,当完成输入输出操作或处理事件 结束,CPU又返回到原来的程序,接着中止前的状态继 续执行。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 引起中断的事件就称为中断源。中断可分为内部中断和外部中断。内部中断内部中断又称软件中断。内部中断的中断事件是 由系统内部产生的,如CPU运算时,商超出寄存器

12、所表 示的范围,或程序中有软件中断指令等都是内部中断。外部中断外部中断又称为硬件中断。外部中断是由外设控 制器等外部条件产生的中断,如某些设备出现故障,某 些I/O设备请求输入输出数据等.均可产生中断。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 主要有以下主要有以下5 5种种 (1)除法错中断除法错中断 在执行除法指令时,如果商超过了寄存器所能表示的范围或除数为0,则立即产生一个类型为0的中断。(2)溢出中断溢出中断 CPU在进行算术运算时,如发生溢出,则将溢出标志OF置1,此时指令INTO中断发生溢出的算术操作,其中断类型

13、号为4;如果OF为0,INTO指令不产生中断。(3)指令指令INTINT产生的中断产生的中断 可以用INT n指令产生内部中断,CPU执行此指令时,立即产生中断,根据中断类型号n调用系统中相应的中断处理程序。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 (4)单步中断单步中断 单步中断是为程序调试设置的.CPU每执行完一条 指令都要检测陷阱状态标志TF,如果TF为1,CPU产生类 型号为1的中断,即单步中断.单步中断使CPU一次执行一条指令,程序调试过程 中,通过单步中断可以看出每条指令执行后,寄存器和 存储单元的变化。(5)

14、断点中断断点中断 断点中断也是为程序调试设置的。调试程序时,可 以根据功能不同将程序分为几个程序段,每段设置一 个断点,CPU执行到断点时产生类型为3的中断。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 外部中断包括非屏蔽中断NMI和可屏蔽中断INTR。非屏蔽中断非屏蔽中断不受中断标志位IF的影响,CPU不能禁 止非屏蔽中断.当NMI请求发生,CPU在一条指令执行结 束后,将对它作出响应。非屏蔽中断主要用于一些紧急 故障处理,如电源掉电、内存的奇偶错等。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输

15、出和中断程序设计输入输出和中断程序设计 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 用OUT指令设置中断屏蔽寄存器;用STI(IF=1)指令和CLI(IF=0)指令对中断标志位IF进行设置和清除。打印机软盘硬盘串行口2定时器键盘保留串行口1 D7 D6 D5 D4 D3 D2 D1 D0 中断屏蔽寄存器 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 每个中断源对应一个中断处理程序,每个中断处 理程序对应着一个中断类型号,80X86中断系统可处理 256种类型

16、的中断,对应的类型号为0 0FFH。为处理方便,把所有256种中断处理程序的入口地址都集中放在一起,形成一张表,即中断向量表(如下图)。中断向量表中的每一项占用4个字节,其中高地址的两个字节存放中断处理程序的段地址,低地址的两个字节存放中断处理程序的偏移地址。中断向量表所占空间为1K(256*4)字节,系统将存储器的地址范围从0000H 3FFH的1K字节用来建立中断向量表,顺序存放256个中断向量。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 类型0FF中断处理程序入口地址 类型3中断处理程序入口地址 类型2中断处理程序入口

17、地址 类型1中断处理程序入口地址 类型0中断处理程序入口地址 中断向量表中断向量表003FCH0000CH00008H00004H00000H IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 当中断发生时,硬件完成以下操作:(1)取中断类型号n;(2)将标志寄存器内容压栈;(3)当前代码段寄存器(CS)内容和指令计数器(IP)内容入栈;(4)置标志位IF和TF为0,禁止外部中断和单步中断(5)从中断向量表中取4*n地址(16位)的内容送IP,取4*n+2地址(16位)的内容送CS;(6)执行中断处理程序。IBM PC 80X86

18、汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 中断优先级中断优先级指多个中断源同时向CPU请求中断时,CPU响应中断的优先顺序。80X86系统为各种中断源规定了一个中断优先级次序,当多个中断源同时申请中断时,CPU按从优先级高到优先级低的顺序依次处理各中断源的中断请求。中断优先级中断优先级 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 80 80X86X86系统的中断优先级次序是:优先级高 内部中断(除单步中断、断点中断外)非屏蔽中断 可屏蔽中断 低 单步中断 其中可屏蔽中断的优先级

19、又分为IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7等8级,IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7即为正常的优先级方式下的优先级次序。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 各外设的中断优先权对应哪一级由硬件连线和可编 程中断控制器8259A的中断命令寄存器(下页图)决定。中断命令寄存器中的端口地址为20H,其中D7位(R)为优先级循环控制位,R=1为循环优先级;R=0为固定优 先级。D0 D2位(L0 L2)为系统最低优先级编码,用这三位指定哪个中断请求的优先级最低。D5位(L5

20、)是中断结束位,当EOI位为1时,当前正在处理的中断请求将被清除。D6位(SL)用于选择L2、L1、L0编码。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计RSLEOI00L2L1L0D7 D6 D5 D4 D3 D2 D1 D0中断命令寄存器 如要使中断优先级依次循环到IR6为最低优先级,即优先级优先级顺序为:IR7 IR0IR1 IR2 IR3 IR4 IR5 IR6,则需送命令码11100110到端口20H。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 中

21、断嵌套中断嵌套是指正在运行的中断处理程序,又被其它 中断源中断。中断嵌套中断嵌套 从中断的响应过程知道,当CPU响应一个中断时,总是自动将IF和TF位置0,即先关中断,禁止任何外设新的中断请求。为了实现多级中断处理,允许在中断处理程序执行过程中发生新的中断,则必须用指令STI开中断,将标志寄存器中的IF标志置1,以允许响应高级的中断源的中断请求,实现中断嵌套。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计INT3处理程序INT3INT1处理程序INT1STIIRETIRET IBM PC 80X86汇编语言程序设计 冶金工业出版

22、社第第9章章 输入输出和中断程序设计输入输出和中断程序设计1.1.中断指令中断指令INTINT 格式:INT n 功能:转到并执行相应中断处理程序,n是中断类型号范围 0 0FFH。执行该指令过程中,先进行现场保护,再执行相应的中断处理程序。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 (1)取出中断类型号11H;(2)标志寄存器(FLAGS)、CS、IP内容依次进栈;(3)置IF=0,TF=0;(4)从中断向量表中取中断处理程序的入口地址11H*4=44H的字内容送IP寄存器,取11H*4+2=46H的字内容送CS寄存器。(

23、5)执行相应的中断处理程序。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 格式:IRET 功能:从中断服务程序返回主程序,保证被中断的 程序接着中断前的状态继续向下进行。主要是自动恢 复断点和标志寄存器的内容。需要注意的是:中断返回指令IRET能自动恢复断 点和标志寄存器的内容,而子程序返回指令不能恢复标志寄存器的内容。2.2.中断返回指令中断返回指令IRETIRET IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计中断处理程序的基本结构中断处理程序的基本结构设置

24、和获取中断向量设置和获取中断向量中断设计程序举例中断设计程序举例 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 中断处理程序的基本结构是:入口地址入口地址:其结构为中断处理程序过程名 PROC 属性;现场保护现场保护:中断处理程序中要重新赋值的寄存器的原有内容都必须进行保护,保护的一般方法是压栈;处理中断处理中断;恢复现场恢复现场:依次恢复被保护寄存器的原有内容;中断返回中断返回:用IRET实现中断返回。需要注意的是,外设中断处理程序和软中断处理程序是有区别的。在开中断(IF=1)的情况下,外设中断是随机发生的,而软中断是在C

25、PU执行了中断指令后发生的,所以其对应的中断处理程序的基本结构也有所不同。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计INTRS PROC FAR PUSH DS ;现场保护 PUSH AX PUSH DX PUSH DI STI ;开中断 CLI ;关中断 MOV AL,20H OUT 20H,AL ;送EOI至20H号端口(8259A 的中断命令寄存器)POP DI ;恢复现场 POP DXPOP AXPOP DSSTI ;开中断IRET ;中断返回INTRS ENDP IBM PC 80X86汇编语言程序设计 冶金工业出

26、版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计1.1.设置中断向量设置中断向量 设置中断向量有直接写入法和DOS功能调用两种方法。(1)直接写入 例:例:用直接写入的方法设置中断向量 设某外设中断处理子程序为:INTRN PROC NEAR STI IRET INTRN ENDP IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计将该中断处理程序的中断类型号设为N:MOV AX,0MOV DS,AX ;段地址0000HMOV BX,4*N ;设置中断向量CLI ;关中断MOV AX,OFFSET INTRN ;中断处理

27、程序的偏移地址MOV ES:WORD PTR BX,AXMOV AX,SEG INTRN ;中断处理程序的段地址MOV ES:WORD PTRBX+2,AXSTI ;开中断 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 功能:将由AL指定的中断类型的中断向量DS:DX放在中断向量表中。预置:AH=25H AL=中断类型号 DS:DX=中断向量 执行:INT 21H (2)DOS功能调用法 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 MOV DX,OFFSET

28、 INTRN ;中断处理程序的偏移地址MOV AX,SEG INTRN ;中断处理程序的段地址MOV DS,AXMOV AH,25HMOV AL,N ;中断类型号NINT 21H IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计2.2.获取中断向量获取中断向量 获取中断向量有直接读取和DOS功能调用两种方法。(1)直接读取 例:例:用直接读取法读取中断类型号为N的中断向量,并保存至字变量DUBWORD开始的4个存储单元中。XOR AX,AX MOV ES,AX MOV AX,ES:N*4 ;取中断处理程序偏移地址 MOV WORD

29、 PTR DUBWORD,AX ;保存 MOV AX,ES:N*4+2 ;取中断处理程序段地址 MOV WORD PTR DUBWORD+2,AX;保存 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 功能:读取指定中断的中断向量,ES=中断处理程序的段地址 BX=中断处理程序的偏移地址 预置:AL=中断类型号 执行:INT 21H 例:例:用DOS功能调用实现前例功能。MOV AH,35H MOV AL,N ;中断类型号 INT 21H MOV WORD PTR DUBWORD,ES ;中断处理程序的段地址 MOV WORD

30、PTR DUBWORD,BX ;中断处理程序的偏移地址 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 例:例:存储器中首地址为BUFFER的缓冲区中存放一串 ASCII码字符,下面的程序完成如下功能:在主程序 运行期间,每5秒钟响铃一次,当键盘上的某个键按 下时,主程序和响铃被挂起,显示器显示BUFFER缓 冲区中的字符串,然后等待下一次按键引起的键盘中断,当键盘中断发生后,恢复主程序和响铃。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计DSEG SEGMENT

31、COUNT DW 1FLAG DB 0 MESS DB CLOSE RING!,0DH,0AH DB PRESS END TO EXIT,0DH,0AH,$DSEG ENDSCSEG SEGMENTMAIN PROC FAR ASSUME CS:CSEG,DS:DSEG,ES:DSEGSTART:PUSH DS SUB AX,AX PUSH AX IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计MOV AX,DSEG MOV DS,AX MOV AL,1CH MOV AH,35H INT 21H PUSH ES PUSH BX P

32、USH DS MOV DX,OFFSET RING MOV AX,SEG RING MOV DS,AX MOV AL,1CH MOV AH,25H INT 21H POP DS MOV AL,9 MOV AH,35H INT 21H PUSH ES PUSH BX PUSH DS MOV DX,OFFSET KBD MOV AX,SEG KBD MOV DS,AX MOV AL,9 MOV AH,25H INT 21H POP DS IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 IN AL,21H AND AL,1111110

33、0B OUT 21H,AL STIDELAY1:MOV CX,0DELAY:LOOP DELAY IN AL,60H AND AL,7FH CMP AL,4FH JE EXIT JMP DELAY1EXIT:POP DX POP DS MOV AL,9 MOV AH,25H INT 21H POP DX POP DS MOV AL,1CH MOV AH,25H INT 21H RETMAIN ENDPRING PROC NEAR PUSH DS PUSH AX PUSH CX PUSH DX MOV AX,DSEG MOV DS,AX IBM PC 80X86汇编语言程序设计 冶金工业出版社第

34、第9章章 输入输出和中断程序设计输入输出和中断程序设计 STI DEC COUNT JNZ EXIT1 MOV DX,200 IN AL,61H AND AL,0FCHSOUND:XOR AL,02 OUT 61H,AL MOV CX,0H WAIT1:LOOP WAIT1 DEC DX JNE SOUND MOV COUNT,91 EXIT1:POP DX POP CX POP AX POP DS IRETRING ENDPKBD PROC NEAR IN AL,60H TEST AL,80H JNZ INKRET XOR FLAG,1 CMP FLAG,1 JE PROCESS1 PROC

35、ESS2:IN AL,21H AND AL,0FCH OUT 21H,AL IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 JMP SHORT INKRETPROCESS1:IN AL,21H OR AL,01 OUT 21H,AL LEA DX,MESS MOV AH,9 INT 21HINKRET:MOV AL,20H OUT 20H,AL STI IRETKBD ENDPCSEG ENDS END START IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计

36、BIOS即Basic Input/Output System(基本输入/输出系统)的缩写,是固化在ROM中的程序,包含基 本输入/输出程序、系统信息设置、开机上电自检程 序和系统自举程序等常用例行程序。BIOS可分为3个 功能模块:自检及初始化模块、程序处理模块和硬件中 断模块。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 扫描码和键盘缓冲区扫描码和键盘缓冲区 键盘上的每个键对应一个扫描码,从01H(Esc)到 53H(Del),这样根据扫描码可以唯一确定每个按键状态 的变化。当用户按键时,键盘接口就会得到该按键的扫 描码,同

37、时会产生一个中断请求。如果键盘中断是允许 的,即中断屏蔽寄存器(端口地址21H)第1位为0,并 且CPU处于开中断状态(IF=1),这时CPU就会响应该中 断请求,转入9号中断处理程序,即键盘中断处理程序。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 键盘中的键可以分为五种类型:字符键(数字、符号 等),功能键(F1,HOME等),控制键(Ctrl.Alt和Shift 键),双态键(Caps Lock等)和特殊请求键。键盘中断处 理程序对这五种键的处理方法是:首先检测所按键是否是控 制键或双态键,如果是控制键或双态键,就设置有

38、关标志,因为这些键将影响对后面按键操作的解释。如果按的是功能 键,就根据键盘扫描码和是否按下某些控制键(如Ctrl键)确定系统扫描码,将系统扫描码和一个全0字节一起存入键 盘缓冲区。如果用户按的是字符键,就根据键盘扫描码和是 否按下某些控制键(如Shift键)确定系统扫描码,并得出 对应的ASCII码,把系统扫描码和ASCII码一起存入键盘缓冲区。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 键盘缓冲区是一个先进先出的循环队列:BUFF_HEAD DW?;键盘缓冲区首地址 BUFF_TALL DW?;键盘缓冲区末地址 KB_B

39、UFFER DW 16 DUP(?);16个字长空间 其中BUFF_HEAD和 BUFF_TALL是缓冲区的两个地址指 针,当这两个指针相等时,表示缓冲区为空。键盘中 断处理程序把所按键的扫描码和对应的ASCII码依次存 入键盘缓冲区,如果缓冲区已满,则不再存入,这时 如果按下一个键,就会发出警报声。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 键盘中断处理程序将按键的扫描码和对应的ASCII 码依次存入键盘缓冲区后,当CPU要处理键盘输入时,就调用BIOS键盘I/O程序,将键盘缓冲区的字符和扫描 码按接收时的次序依次取出送C

40、PU。16H号中断提供了 基本的键盘操作,根据AH内容的不同,可以完成3个不 同的功能(如下表)。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计AH功能返回参数0从键盘读一个字符AL=字符码AH=扫描码1读键盘缓冲区字符 如ZF=0 AL=字符码 AH=扫描码 如ZF=1 缓冲区空2取键盘状态字节AL=键盘状态字节BIOS键盘中断(INT16)IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 显示器通过显示适配器与微机相连,显示适配器 也称显示卡,是计算机与显示器的

41、接口。目前的显示 适配器都支持两种显示方式:文本显示方式和图形显 示方式。而每一种显示方式又有多种显示模式。文本显示方式是以字符为单位显示的方式。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 屏幕上显示的每个字符,在存储器中都有连续的 两个字节与它对应,其中一个字节存放该字符的ASCII 码,另一个字节存放该字符的显示属性。单色文本显 示时,属性定义了字符是否闪烁、是否反相显示、是 否加强亮度等显示特性。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计D7 D6

42、D5 D4 D3 D2 D1 D0闪烁 0=正常 1=闪烁亮度 0=正常 1=加强亮度背景色黑=000白=111前景色黑=000白=111属性字节各位定义 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计属性值(属性值(b7 b0b7 b0)字符颜色字符颜色背景颜色背景颜色显示效果显示效果00000000黑黑无显示00000111白黑正常显示,黑底白字00001111白黑高亮度显示,黑底白字01110000黑白反相显示,白底黑字10000111白黑闪烁,黑底白字11110000黑白反相闪烁,白底黑字11111111黑黑无显示 IB

43、M PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 闪烁 背景前景BLRGBIRGB彩色文本显示的属性字节 其中,R、G、B分别表示红、绿、蓝,I表示亮度,BL表示闪烁。D4D6 3位确定背景的属性,闪烁只对前景属性有意义。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计IRGB颜色IRGB颜色0000黑1000灰 0001蓝 1001浅蓝 0010绿 1010浅绿 0011青 1011浅青 0100红 1100浅红 0101品红 1101浅品红 0110棕 1110黄 0

44、111灰白 1111白彩色文本显示的颜色组合 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 BIOS BIOS显示中断显示中断 下面介绍10H号中断的基本功能。每个功能对 应一个编号,调用时根据需要将功能编号置入AH 中,设置好调用参数。调用返回后,从相应寄存 器中取出返回参数。下表是10H号中断的显示操作。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计AH功能功能调用参数调用参数返回参数返回参数1置光标类型(CH)03=光标开始行 (CL)03=光标结束行2置

45、光标位置BH=页号 DH=行 DL=列3读光标位置BH=页号CH=光标开始行CL=光标结束行DH=行 DL=列4置显示页AL=显示页号5选择活动显示页6屏幕初始化或上卷AL=上卷行数 AL=0全屏为空白 BH=卷入行属性 CH=左上角行号 CL=左上角列号DH=右下角行号 DL=右下角列号7屏幕初始化或下卷AL=下卷行数 AL=0全屏为空白 BH=卷入行属性 CH=左上角行号 CL=左上角列号DH=右下角行号 DL=右下角列号类型类型10H的功能调用的功能调用 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计AH功能功能调用参数调

46、用参数返回参数返回参数8读光标位置的属性和字符BH=显示页AH=属性AL=字符9在光标位置显示字符及其属性BH=显示页 AL=字符BL=属性 CX=字符重复次数A在光标位置只显示字符BH=显示页 AL=字符CX=字符重复次数CH=光标开始行CL=光标结束行DH=行 DL=列E显示字符AL=字符 BL=前景色13显示字符串ES:BP=串地址 CX=串长度DH,DL=起始行列 BH=页号AL=0,BL=属性串:字符1,字符2AL=1,BL=属性串:字符1,字符2AL=2串:字符1,属性1,字符2,属性2AL=3串:字符1,属性1,字符2,属性2光标返回起始位置光标跟随光标返回起始位置光标跟随 IB

47、M PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计DATA SEGMENTMSG1 DB INFORMATIONMSG1LEN EQU$-MSG1MSG2 DB W,21H,O,24H,R,21H,L,24H,D,21HMSG2LEN EQU$-MSG2DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK1,DS:DATA IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和

48、中断程序设计输入输出和中断程序设计START:MOV AX,DATA MOV DS,AX CALL CLRSCR CALL DISPLY1 CALL DISPLY2 CALL WAITKEY MOV AH,4CH INT 21HCLRSCR PROC MOV AH,06H MOV AL,0 MOV CH,0 MOV CL,0 MOV DH,24H MOV DL,79H MOV BH,07H INT 10H RETCLRSCR ENDPDISPLY1 PROC MOV AH,13H MOV AL,01H MOV BL,4FH MOV BP,SEG MSG1 MOV ES,BP MOV BP,OF

49、FSET MSG1 MOV CX,MSG1LEN MOV DH,0AH MOV DL,1EH IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 MOV BH,0 INT 10H RETDISPLY1 ENDPDISPLY2 PROC MOV AH,13H MOV AL,03H MOV BP,SEG MSG2 MOV ES,BP MOV BP,OFFSET MSG2 MOV CX,MSG2LEN MOV DH,0AH MOV DL,1EH+MSG1LEN INT 10H RETDISPLY2 ENDPWAITKEY PROC MOV

50、 AH,07H INT 21H RETWAITKEY ENDPCODE ENDS END START IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 BIOS提供的打印I/O程序以17H号中断处理程序存 在。系统可以连接多台打印机,用打印机号0、1、2选择打印机。下表列出17H号中断的功能调用。IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计AHAH功能功能调用参数调用参数返回参数返回参数0打印一个字符,回送状态字节AL=字符DX=打印机号AH=状态字节1初始化打印

51、机,回送状态字节DX=打印机号 AH=状态字节2回送状态字节DX=打印机号 AH=状态字节17H号中断功能调用号中断功能调用 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计D7 D6 D5 D4 D3 D2 D1 D0位0:1=超时位1、2:未用位3:1=I/O错位4:1=联机位5:1=纸尽位6:1=应答位7:0=忙碌 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计LETTERS DB Printer is using LEN EQU$-LETTERS MOV SI OFFSET LETTERS MOV CX LENPRILE:MOV AH 0 MOV AL,SI MOV DX,0 INT 17H INC SI LOOP PRILE

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!