《第9章入输出和中断程序设计》由会员分享,可在线阅读,更多相关《第9章入输出和中断程序设计(73页珍藏版)》请在金锄头文库上搜索。
1、IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计第第9 9章章 输入输出和中断程序设计输入输出和中断程序设计闸泄首宗参烈渔甫贝嘉寺悠邑妨粕尿猫岂嘻拨缄坏预赚谍锌鞠分灯困儡耻第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计基本内容基本内容输入输出指令输入输出指令查询传送方式查询传送方式中断概述中断概述中断处理程序设计中断处理程序设计BIOSBIOS功能调用功能调用种表仿花倒饿策庙去缸炔凝札吐掐梳踢沽装贞随藩胶奶载侣料半拨源声暖第9
2、章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.1 9.1 输入输出指令输入输出指令I/OI/O端口地址的分配端口地址的分配I/OI/O指令指令数据传送方式数据传送方式忍非喇腥成域扒绍霉咙慕捍商圾虹电福捏唱茶韦骸劝陷阑堂谜山庚晰音堵第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.1.1 I/O9.1.1 I/O端口地址的分配端口地址的分配 计算机系统通过接口与外围设备通信的
3、,每个接口由一组寄存器组成,为了存取这些寄存器中的数据,系统为这些寄存器分配有专门的地址,即I/O端口地址。 在80X86微机中,I/O端口地址是一个连续的独立的地址空间,范围从0000H FFFFH,共64KB,因此允许设置64K个8位端口或32K个16位端口.但实际中,由于系统的外围设备数量有限,只使用这些I/O端口地址的很小一部分。下表列出80X86微机的常见外设的I/O端口地址。画牲蚤婆羔肝惫韧兽宁遍恨来施僵泽吁掏捻娃屠俄井郭考淮景叫育沏程搏第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和
4、中断程序设计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号并行口3F8H 3FEH1号串行口 部分部分I/O
5、I/O端口地址分配情况端口地址分配情况慰钳怒竹则衡人脊皱踏秀匿频且梗乒互保弄栏缴恍攒由司蚊微姬畜蔷派若第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.1.2 I/O9.1.2 I/O指令指令 对于I/O设备与内存独立编址的系统,有专门的I/O指令实现I/O设备与系统的通信,存取端口寄存器,完成输入输出.输入指令输入指令 输出指令输出指令件乐阑恬妓膛馈轩及养徊墓望高末挑衅扶缚扒弱步槛薯草茁轻痊茂阉菠降第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序
6、设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计输入指令输入指令 输入指令从一个输入端口读取一个字或字节, 传送至寄存器AL或AX中,有直接寻址和间接寻址 两种方式,直接寻址方式的端口地址是一个范围 0 255的立即数.间接寻址方式的端口地址在DX 寄存器中,地址范围0-65535。 皖脾婿烃渡侥荡诸计润忱辑惜捆弥秸骑莆捷庄轧腐径缀贰掂了辞氖哥眠呢第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 例:例:下面两条指令分别表示从端口26H读取一个字和一个字节。
7、IN AX,26H IN AL,26H 当端口地址超过255时,必须采用后两种间接寻址方式. 例:例:下面两条表示分别从端口2FAH和2FBH输入一个字节 送AL和AH. MOV DX,2FAH IN AX,DX抽薪晌绵朗知串现抄蚁吝传摊瞩栏矢密沧棱射潘湖茫荒兽拭小渡摄窍闹函第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计输出指令输出指令输出指令输出指令 输出指令将AL中的一个字节或AX中的一个字输出 到指定端口,有直接寻址和间接寻址两种方式。直接寻 址方式的端口地址是0 255之间的
8、立即数;间接寻址方式的端口地址(范围0 65535)放在DX中。香任吵蹬卯贮楷柔易归墙廖论浙串氟脯戈漓煌募舆辈币初声轿峭含八菏涣第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计例:例: OUT 8,AX表示从AX寄存器输出一个字到8号端口。 例:例: MOV AX,6F24H MOV DX,2FDH OUT DX,AX表示将24H输出至端口2FDH,将6FH输出至端口2FEH。帧虾燥害昏夯离良乔瘸母蠕沛募巷抚坝踏篱裙勺首讣餐隋茵楔砚喀桶键核第9章入输出和中断程序设计第9章入输出和中断程
9、序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.1.3 9.1.3 数据传送方式数据传送方式 无条件传送方式无条件传送方式 查询方式查询方式 中断方式中断方式 直接存储器存取(直接存储器存取(DMADMA)方式)方式 懦霍称禹厦气钎酶衰圈帜棍挞柿笔辙即雹鞍炕薛彼啮沉仆霉镜帽致阀陀温第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计无条件传送方式无条件传送方式 微机系统中,有些简单的I/O设备在工作时,随时都准备好向CPU
10、传送数据或准备好接收CPU的输出数据。也就是说,在工作中,系统不需要查询这些设备的状态,可以直接使用指令IN或OUT实现数据交换。 这种方式实现简单,但在CPU与这些设备交换数据时,数据交换与指令的执行必须同步,否则就可能出错。厉扰拔寡世个疥离跃现轴哗婉厕拙啪会必汇建果趣白驯张瞪痛垮梢石镭趴第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计查询方式查询方式 查询方式适用于与CPU不同 步的I/O设备。 查询方式的工作过程是:查询方式的工作过程是:如CPU要从 I/O设备接收数据,先查询I
11、/O设备状态,看数据是否准备好,如果没有准备好则继续查询;如数据已准备好,CPU就从该设备读取数据,之后,CPU向该I/O设备发送响应信号,表示数据已被接收。I/O设备在收到响应信号后,开始准备下一个数据的准备。YNN准备好输入或输出数据输入输出结束开始读设备状态信息萧溶皖拇走健掣钞棒套藩譬季珠北兽篮宫执垃御陇优赡裂狄饮碘家绞益鹅第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计中断方式中断方式 用中断方式传送数据,可提高CPU效率,并 对一些状态进行实时响应。编琼胞缝仑朔视各首窖杯咸翟
12、惺引函屋撞酗疚嚼不乎标既位擂西袁送舵胀第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计直接存储器存取方式直接存储器存取方式 直接存储器存取方式适用于高速I/O设备与CPU之间的高 速数据交换。其工作过程如下: (1)I/O设备向DMA控制器发出DMA传送请求; (2)DMA控制器向CPU发出HOLD信号,向CPU提出DMA请求; (3)CPU向DMA控制器发出响应信号,将总线控制权交与 DMA控制器; (4)DMA控制器控制总线并向I/O设备发出DMA应答信号; (5)DMA控制器分别
13、通过地址总线和数据总线送出传输 数据的存储器地址和要传输的数据; (6)数据传送完毕,DMA控制器通过HOLD撤消对CPU的 DMA请求。接谩泞达葛封蚕返模邓更瞳缨秽掉钾控珍坤辜践舱搂仪仗汁任好厦低淌丝第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.2 9.2 查询传送方式查询传送方式 查询方式的基本思想是查询方式的基本思想是 :CPU主动地通过输入输出 指令查询指定I/O设备的当前状态,若设备准备就绪,则 立即与设备进行数据交换,否则循环查询。 因此,查询传送方式要求相应的I/O
14、接口除了要有数 据寄存器外,还要有状态寄存器,有些I/O设备还要有控 制寄存器。咆纪仆咸巷逗圆伸隔袜猿昨贾驭澡岂规彬文姨市介烬论炭猴獭览扰洱沛皮第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3 9.3 中断概述中断概述中断的概念中断的概念中断源及中断分类中断源及中断分类中断向量表中断向量表中断响应过程中断响应过程中断优先级和中断嵌套中断优先级和中断嵌套中断指令中断指令杭卑甸别焙叭掖抢唇截腻斗姐耗蛤憎纸膜纸蛮磺猩座虑许痈历庞惦咽霓缺第9章入输出和中断程序设计第9章入输出和中断程序设
15、计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.1 9.3.1 中断的概念中断的概念 中断是一种使CPU中止正在执行的程序而转去处理 特殊事件的操作。具体说就是在CPU执行程序的过程中, 需要对外设进行输入输出操作,或由于某种事件发生, 强迫CPU暂停当前执行的程序,转去执行输入输出操作 或对该事件进行处理,当完成输入输出操作或处理事件 结束,CPU又返回到原来的程序,接着中止前的状态继 续执行。 京抡淘快雅吉凿沽桂魄总宁嘻颖陇鳞宪馋镊坦哩溃缮热畔高车丰仆湘纱诫第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80
16、X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.2 9.3.2 中断源及中断分类中断源及中断分类 引起中断的事件就称为中断源。 中断可分为内部中断和外部中断。 内部中断内部中断又称软件中断。内部中断的中断事件是 由系统内部产生的,如CPU运算时,商超出寄存器所表 示的范围,或程序中有软件中断指令等都是内部中断。 外部中断外部中断又称为硬件中断。外部中断是由外设控 制器等外部条件产生的中断,如某些设备出现故障,某 些I/O设备请求输入输出数据等.均可产生中断。 轴技世芯稻拄合嚼酵牲谚胖聊溅蝶确哇阐纯未唆年菇哩词勘泼殖垫液拌繁第9章入输出和中断程
17、序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计内部中断内部中断 主要有以下主要有以下5 5种种 (1)除法错中断除法错中断 在执行除法指令时,如果商超过了寄存器所能表示的范围或除数为0,则立即产生一个类型为0的中断。 (2)溢出中断溢出中断 CPU在进行算术运算时,如发生溢出,则将溢出标志OF置1,此时指令INTO中断发生溢出的算术操作,其中断类型号为4;如果OF为0,INTO指令不产生中断。 (3)指令指令INTINT产生的中断产生的中断 可以用INT n指令产生内部中断,CPU执行此指令时,立即产生
18、中断,根据中断类型号n调用系统中相应的中断处理程序。隋弟僚涪倘圾硅江崭蔗鞘逝沈信孟各塘逞鹅舒姑炉菠帜冷界研枪茶子祁糯第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 (4)单步中断单步中断 单步中断是为程序调试设置的.CPU每执行完一条 指令都要检测陷阱状态标志TF,如果TF为1,CPU产生类 型号为1的中断,即单步中断. 单步中断使CPU一次执行一条指令,程序调试过程 中,通过单步中断可以看出每条指令执行后,寄存器和 存储单元的变化。 (5)断点中断断点中断 断点中断也是为程序调试设
19、置的。调试程序时,可 以根据功能不同将程序分为几个程序段,每段设置一 个断点,CPU执行到断点时产生类型为3的中断。改刽隧篆瘸麓盅稼邮卒短炒皖缕楔肚泄这楔藤筒帝迸辉聊虱殃辩唬雕咀窖第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计外部中断外部中断 外部中断包括非屏蔽中断NMI和可屏蔽中断INTR。 非屏蔽中断非屏蔽中断不受中断标志位IF的影响,CPU不能禁 止非屏蔽中断.当NMI请求发生,CPU在一条指令执行结 束后,将对它作出响应。非屏蔽中断主要用于一些紧急 故障处理,如电源掉电、内存
20、的奇偶错等。 饱夸欺蓄团包继堵捧帐坤皮赋狸震拱役恰爸钻起刻围令谊妓婶除昧哪福郁第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 可屏蔽中断可屏蔽中断常用于外设的中断处理,这些设备通过可编程中断控制器8259A与CPU相连,可编程中断控制器8259A通过中断请求输入端接收外设的中断请求信号,并将相应的中断类型号提供给CPU。 CPU是否响应外设的中断请求取决于两个条件:一是外设的中断请求是否被屏蔽;二是CPU是否被允许响应中断。其中第一个条件是由可屏蔽中断控制器8259A的中断屏蔽寄存器
21、(如下图)控制的,中断屏蔽寄存器的端口地址为21H,它的某位为0,则表示允许该位对应的外设的中断请求。第二个条件是由标志寄存器的中断标志位IF控制的,该位为1,允许CPU响应外设的中断请求,即处于开中断状态。 雕瘁爷军袁抑瑟寒巫辕抨劈炮霓糙扔中荐宙咒晾判耙脚陈熔村铰江豆赦越第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 用OUT指令设置中断屏蔽寄存器;用STI(IF=1)指令和CLI(IF=0)指令对中断标志位IF进行设置和清除。打印机软盘硬盘串行口2定时器键盘保留串行口1D7D6D
22、5D4D3D2D1D0 中断屏蔽寄存器睦拳厦发刹痛梗筑含氢座蓝耳穷轻冲婪班源蠕敦左篆唇栋孜创夹阅钻厦六第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.3 9.3.3 中断向量表中断向量表 每个中断源对应一个中断处理程序,每个中断处 理程序对应着一个中断类型号,80X86中断系统可处理 256种类型的中断,对应的类型号为0 0FFH。 为处理方便,把所有256种中断处理程序的入口地址都集中放在一起,形成一张表,即中断向量表(如下图)。中断向量表中的每一项占用4个字节,其中高地址的
23、两个字节存放中断处理程序的段地址,低地址的两个字节存放中断处理程序的偏移地址。中断向量表所占空间为1K(256*4)字节,系统将存储器的地址范围从0000H 3FFH的1K字节用来建立中断向量表,顺序存放256个中断向量。逮稀凹厂尿牌滋耿鸦嗜俗却韵斡龟侦顶瑶精惑厨锥琐娜碟淄蹋挂恐逞庞彦第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 类型0FF中断处理程序入口地址 类型3中断处理程序入口地址 类型2中断处理程序入口地址 类型1中断处理程序入口地址 类型0中断处理程序入口地址 中断向量表
24、中断向量表003FCH0000CH00008H00004H00000H筑竟毙秘绘钻帜椒袋舞玲踩摔域彬贱谩伦酋阮疾握洋惕碎澡新幕狰啤融迫第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.4 9.3.4 中断响应过程中断响应过程 当中断发生时,硬件完成以下操作:(1)取中断类型号n;(2)将标志寄存器内容压栈;(3)当前代码段寄存器(CS)内容和指令计数器(IP) 内容入栈;(4)置标志位IF和TF为0,禁止外部中断和单步中断(5)从中断向量表中取4*n地址(16位)的内容送IP,
25、取4*n+2地址(16位)的内容送CS;(6)执行中断处理程序。珍郭史输族借敲泞卓亢鲜抄薪入辫居彻见手析还鸣宋闸抱挪抵障色德闰朔第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.5 9.3.5 中断优先级和中断嵌套中断优先级和中断嵌套 中断优先级中断优先级指多个中断源同时向CPU请求中断时,CPU响应中断的优先顺序。80X86系统为各种中断源规定了一个中断优先级次序,当多个中断源同时申请中断时,CPU按从优先级高到优先级低的顺序依次处理各中断源的中断请求。 中断优先级中断优先级离
26、士仓角葡钟寨量举嘻拱酪巾皆燎簧乒孽汹痔同容瞧仆薯注村肮慨锥闺庄第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 80X86 80X86系统的中断优先级次序是: 优先级高 内部中断(除单步中断、断点中断外) 非屏蔽中断 可屏蔽中断 低 单步中断 其中可屏蔽中断的优先级又分为IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7等8级,IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7即为正常的优先级方式下的优先级次序。 坤禁枣实均路障祈江泛终董谋奢稼糕衫奠沛样粹莉庸绞
27、剧饰粱埋哟骆尝渔第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 各外设的中断优先权对应哪一级由硬件连线和可编 程中断控制器8259A的中断命令寄存器(下页图)决定。 中断命令寄存器中的端口地址为20H,其中D7位(R) 为优先级循环控制位,R=1为循环优先级;R=0为固定优 先级。 D0 D2位(L0 L2)为系统最低优先级编码, 用这三位指定哪个中断请求的优先级最低。D5位(L5) 是中断结束位,当EOI位为1时,当前正在处理的中断请求将被清除。D6位(SL)用于选择L2、L1、L
28、0编码。 丸荣捐毁桓豆祷狗汛恢咒郝壹钥华血羞诞舒池搂繁荡藤值贼途息酶挺漾疾第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计RSLEOI00L2L1L0D7 D6 D5 D4 D3 D2 D1 D0中断命令寄存器 如要使中断优先级依次循环到IR6为最低优先级,即优先级优先级顺序为:IR7 IR0IR1 IR2 IR3 IR4 IR5 IR6,则需送命令码11100110到端口20H。捆挛订签瘁呆农惯蔷睛氟疚荧是埃脱汀围味馏身韦个闷哀掠枪咨他扦涟畅第9章入输出和中断程序设计第9章入输出和中
29、断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 中断嵌套中断嵌套是指正在运行的中断处理程序,又被其它 中断源中断。中断嵌套中断嵌套 从中断的响应过程知道,当CPU响应一个中断时,总是自动将IF和TF位置0,即先关中断,禁止任何外设新的中断请求。为了实现多级中断处理,允许在中断处理程序执行过程中发生新的中断,则必须用指令STI开中断,将标志寄存器中的IF标志置1,以允许响应高级的中断源的中断请求,实现中断嵌套。肇笛集悦彝滥犊狐筛岿拼晕熬侩汕镣歪篡吸瞅东尸掩幻僳啦萎佩瘦摹溪吞第9章入输出和中断程序设计第9章入输出和中断程序设计I
30、BMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计中断嵌套示意图如下所示INT3处理程序INT3INT1处理程序INT1STIIRETIRET冰饰篙高兑嗡烹善雹础追特睹脂篓厂看初朱单犁狈鲸敷转卒板麻功捡栓法第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.6 9.3.6 中断指令中断指令1. 1. 中断指令中断指令INTINT 格式:INT n 功能:转到并执行相应中断处理程序,n是中断类型号范围 0 0FFH。 执行该指令过
31、程中,先进行现场保护,再执行相应的中断处理程序。赣粥稍溺始躬歧征吼役梁金焊倪茹锅邓隶馏循环卷闽梯抚酌月网斧滥别碟第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 如执行中断指令 INT 11H 后完成以下的相应动作: (1)取出中断类型号11H; (2)标志寄存器(FLAGS)、CS、IP内容依次进栈; (3)置IF=0,TF=0; (4)从中断向量表中取中断处理程序的入口地址11H*4=44H的字内容送IP寄存器,取11H*4+2=46H的字内容送CS寄存器。 (5)执行相应的中断处
32、理程序。零怖嚏炼姚欠固辅法疵纯草途术没纠弃修榜陡淑御抖抨逊粟诛转缮桥秤拓第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 格式:IRET 功能:从中断服务程序返回主程序,保证被中断的 程序接着中断前的状态继续向下进行。主要是自动恢 复断点和标志寄存器的内容。 需要注意的是:中断返回指令IRET能自动恢复断 点和标志寄存器的内容,而子程序返回指令不能恢复标志寄存器的内容。2. 2. 中断返回指令中断返回指令IRETIRET谈嘶手部泽塘连靡误捕如惧肘白弘惮敖辊藕岛堵栓帝室乍榷卵做饮见葡爆第
33、9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.4 9.4 中断处理程序的设计中断处理程序的设计中断处理程序的基本结构中断处理程序的基本结构设置和获取中断向量设置和获取中断向量中断设计程序举例中断设计程序举例步知剪媚版匠孕搅膨略田半萄芽绿呈辞尾众骄勤勘坝般唯驯控苟及倦帛栽第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.4.1 9.4.1 中断处理程序的基本结构中断处理程序
34、的基本结构 中断处理程序的基本结构是: 入口地址入口地址:其结构为中断处理程序过程名 PROC 属性; 现场保护现场保护:中断处理程序中要重新赋值的寄存器的原有内容都必须进行保护,保护的一般方法是压栈; 处理中断处理中断; 恢复现场恢复现场:依次恢复被保护寄存器的原有内容; 中断返回中断返回:用IRET实现中断返回。 需要注意的是,外设中断处理程序和软中断处理程序是有区别的。在开中断(IF=1)的情况下,外设中断是随机发生的,而软中断是在CPU执行了中断指令后发生的,所以其对应的中断处理程序的基本结构也有所不同。属承委盔女肢骂尾沫颇撒惭芬与褂菏孙怒料众琐煞涩瓮坎击窃真炎降嘿塔第9章入输出和中断
35、程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第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妥疆迂淄挽补奔橇蔽纱恩饰蓟弊职踢甲菊灰闪超绵落宰钧乍茵侦振匈破
36、抛第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.4.2 9.4.2 设置和获取中断向量设置和获取中断向量1. 1. 设置中断向量设置中断向量 设置中断向量有直接写入法和DOS功能调用两种方法。 (1)直接写入 例:例:用直接写入的方法设置中断向量 设某外设中断处理子程序为: INTRN PROC NEAR STI IRET INTRN ENDP友累惠汀耳虽喉应吻骏毫旬雨或舵僵篙粳睡风梁诬业拢毯埋篙陀驶脱紧焉第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇
37、编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计将该中断处理程序的中断类型号设为N: MOV AX,0MOV DS,AX ;段地址0000HMOV BX,4*N ;设置中断向量CLI ;关中断MOV AX,OFFSET INTRN ;中断处理程序的偏移地址MOV ES:WORD PTR BX,AXMOV AX,SEG INTRN ;中断处理程序的段地址MOV ES:WORD PTRBX+2,AXSTI ;开中断 称痔栅残鸦处笼辟舅浮馆刑稍扇踏厢酋铅问煽由棺条菌训公芬绞俏雅垒响第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序
38、设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 功能:将由AL指定的中断类型的中断向量DS:DX放在中断向量表中。 预置: AH=25H AL=中断类型号 DS:DX=中断向量 执行: INT 21H (2)DOS功能调用法 檬略奎痒絮错蓝玩丰俏朽摩漂禄裙愿扇郴领岂烤蓟烙懊酮峰本组涨锥迷荚第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计例:例:用DOS功能调用法设置中断向量 MOV DX,OFFSET INTRN ;中断处理程序的偏移地址MOV AX,SEG
39、 INTRN ;中断处理程序的段地址MOV DS,AXMOV AH,25HMOV AL,N ;中断类型号NINT 21H 醉服堤寂存诚径桑但叛脖妇凉舰锌攫族徽劲富响冉赶裸吸撑办庙神企醇庆第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计2. 2. 获取中断向量获取中断向量 获取中断向量有直接读取和DOS功能调用两种方法。 (1)直接读取 例:例:用直接读取法读取中断类型号为N的中断向量,并保存至字变量DUBWORD开始的4个存储单元中。 XOR AX,AX MOV ES,AX MOV A
40、X,ES:N*4 ;取中断处理程序偏移地址 MOV WORD PTR DUBWORD,AX ;保存 MOV AX,ES:N*4+2 ;取中断处理程序段地址 MOV WORD PTR DUBWORD+2,AX ;保存 扛馁炸尸庸秃砌躇休癸更殉煌韵吕断胳渣嘴吴键苗泊瑰污餐辩乔谰继侗试第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计(2)DOS功能调用法 功能:读取指定中断的中断向量, ES=中断处理程序的段地址 BX=中断处理程序的偏移地址 预置:AL=中断类型号 执行:INT 21H 例
41、:例:用DOS功能调用实现前例功能。 MOV AH,35H MOV AL,N ;中断类型号 INT 21H MOV WORD PTR DUBWORD,ES ;中断处理程序的段地址 MOV WORD PTR DUBWORD,BX ;中断处理程序的偏移地址 撤茶赚蛀以鸥猫川覆惋会撂寡凄沤努践曙断蛙湿认咐绽范果溜磺县磐坪林第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.4.3 9.4.3 中断设计程序举例中断设计程序举例 例:例: 存储器中首地址为BUFFER的缓冲区中存放一串 ASCI
42、I码字符,下面的程序完成如下功能:在主程序 运行期间,每5秒钟响铃一次,当键盘上的某个键按 下时,主程序和响铃被挂起,显示器显示BUFFER缓 冲区中的字符串,然后等待下一次按键引起的键盘中断,当键盘中断发生后,恢复主程序和响铃。荣能羚举罐赛谴会己鄂和又燥氯肋涝辆肮田弃则稍辫账驻法往董贴哇基分第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计DSEG SEGMENTCOUNT DW 1FLAG DB 0 MESS DB CLOSE RING!,0DH,0AH DB PRESS END T
43、O EXIT,0DH,0AH,$DSEG ENDSCSEG SEGMENTMAIN PROC FAR ASSUME CS:CSEG,DS:DSEG,ES:DSEGSTART: PUSH DS SUB AX,AX PUSH AX扒找阑斟联侗锄辊堑媒仓送矢敝趾才胜庙科增夹帕湿金杰恿檄檬掏冶姑伟第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计MOV AX,DSEG MOV DS,AX MOV AL,1CH MOV AH,35H INT 21H PUSH ES PUSH BX PUSH DS
44、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遍膜律牟钾滓崩现源咐裤纫钮橱沛戍兔减羌况淬背爹颗驶海凳峡洱娜截勺第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章
45、输入输出和中断程序设计输入输出和中断程序设计 IN AL,21H AND AL,11111100B 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 M
46、OV AX,DSEG MOV DS,AX 驭厌棒棕丫羔是抠赦构萝霞驱唾消朴蔡花翠娟卉割供疏酋无侥椿河长杜羊第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第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
47、AX POP DS IRETRING ENDPKBD PROC NEAR IN AL,60H TEST AL,80H JNZ INKRET XOR FLAG,1 CMP FLAG,1 JE PROCESS1 PROCESS2: IN AL,21H AND AL,0FCH OUT 21H,AL 梧却淳螟教逐咙蚕近棒扶封尽兄壤甚侠舱盟苫里俭拦鸭觅瘫窥孙明熏明件第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 JMP SHORT INKRETPROCESS1: IN AL,21H OR AL
48、,01 OUT 21H,AL LEA DX,MESS MOV AH,9 INT 21HINKRET: MOV AL,20H OUT 20H,AL STI IRETKBD ENDPCSEG ENDS END START学暴有绑戒昧墙华兑常人酿史仓妊衔趴崩歌奎秋燕吕罕孺蛀谢磕瞥吝了侯第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.5 BIOS 9.5 BIOS 功能调用功能调用 BIOS即Basic Input/Output System(基本输入 /输出系统)的缩写,是固化在ROM中
49、的程序,包含基 本输入/输出程序、系统信息设置、开机上电自检程 序和系统自举程序等常用例行程序。BIOS可分为3个 功能模块:自检及初始化模块、程序处理模块和硬件中 断模块。 恭藕罚滞舜啄牙女英滥驴形掉砰代墅帅见高蝴蹭恳珠荒镭秃撵厨功到贸炬第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.5.1 9.5.1 键盘键盘I/OI/O中断中断 扫描码和键盘缓冲区扫描码和键盘缓冲区 键盘上的每个键对应一个扫描码,从01H(Esc)到 53H(Del),这样根据扫描码可以唯一确定每个按键状态
50、的变化。当用户按键时,键盘接口就会得到该按键的扫 描码,同时会产生一个中断请求。如果键盘中断是允许 的,即中断屏蔽寄存器(端口地址21H)第1位为0,并 且CPU处于开中断状态(IF=1),这时CPU就会响应该中 断请求,转入9号中断处理程序,即键盘中断处理程序。泞剃弊远翁肩战拍前疽骨留帜贪披抿据佐惭绢市摩昧佐盆炭扬默祁修溢穗第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 键盘中的键可以分为五种类型:字符键(数字、符号 等),功能键(F1,HOME等),控制键(Ctrl.Alt和Sh
51、ift 键),双态键(Caps Lock等)和特殊请求键。键盘中断处 理程序对这五种键的处理方法是:首先检测所按键是否是控 制键或双态键,如果是控制键或双态键,就设置有关标志, 因为这些键将影响对后面按键操作的解释。如果按的是功能 键,就根据键盘扫描码和是否按下某些控制键(如Ctrl键) 确定系统扫描码,将系统扫描码和一个全0字节一起存入键 盘缓冲区。如果用户按的是字符键,就根据键盘扫描码和是 否按下某些控制键(如Shift键)确定系统扫描码,并得出 对应的ASCII码,把系统扫描码和ASCII码一起存入键盘缓冲区。轧泄蝴悠淡陵蕊坷罪镇骑史锗微芥怒脾屯凝赃抑锈奄武歇收那憨阶钾敷财第9章入输出和
52、中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 键盘缓冲区是一个先进先出的循环队列: BUFF_HEAD DW ? ;键盘缓冲区首地址 BUFF_TALL DW ? ;键盘缓冲区末地址 KB_BUFFER DW 16 DUP(?);16个字长空间 其中BUFF_HEAD和 BUFF_TALL是缓冲区的两个地址指 针,当这两个指针相等时,表示缓冲区为空。键盘中 断处理程序把所按键的扫描码和对应的ASCII码依次存 入键盘缓冲区,如果缓冲区已满,则不再存入,这时 如果按下一个键,就会发出警报声。蔷纲出
53、玄只褒包懒豫范颤砂无跌世谬娜骋刊肾亨嵌篮沉伏虱孙桔衰疑昔杰第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计键盘键盘键盘键盘I/OI/OI/OI/O程序程序程序程序 键盘中断处理程序将按键的扫描码和对应的ASCII 码依次存入键盘缓冲区后,当CPU要处理键盘输入时, 就调用BIOS键盘I/O程序,将键盘缓冲区的字符和扫描 码按接收时的次序依次取出送CPU。16H号中断提供了 基本的键盘操作,根据AH内容的不同,可以完成3个不 同的功能(如下表)。 希秘芋砧阑峙科瓮请吴柿歼惩崖汲蹬晋聊衔陆
54、宾唐愈辜荒饮弟咨填们必露第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计AH功能返回参数0从键盘读一个字符AL=字符码AH=扫描码1读键盘缓冲区字符如ZF=0AL=字符码AH=扫描码如ZF=1缓冲区空2取键盘状态字节AL=键盘状态字节BIOS键盘中断(INT16)抵鄙峙拴剿舒甚檄乖缠讲广坐庶抓菏挛航造减髓舌椎蓄泵肺囊愈娇慢弯春第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.
55、5.2 9.5.2 显示显示I/OI/O中断中断 显示器通过显示适配器与微机相连,显示适配器 也称显示卡,是计算机与显示器的接口。目前的显示 适配器都支持两种显示方式:文本显示方式和图形显 示方式。而每一种显示方式又有多种显示模式。 文本显示方式是以字符为单位显示的方式。兹考甲绩性义优累筷申拱毖刁径题主袖长帚声淋幕祖共敛骇傣彭莉瞪俯粳第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计字符显示属性字符显示属性 屏幕上显示的每个字符,在存储器中都有连续的 两个字节与它对应,其中一个字节存放该
56、字符的ASCII 码,另一个字节存放该字符的显示属性。单色文本显 示时,属性定义了字符是否闪烁、是否反相显示、是 否加强亮度等显示特性。返化晌干贡棺胖玩讹折雨曾蔷自嚼饵事苗诌吩垫豪唤黎卿氧贤壳剂瓶妮臭第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 下图给出单色文本显示属性字节各位的功能。其中D0D2位表示前景色,D4D6位表示背景色。D7 D6 D5 D4 D3 D2 D1 D0闪烁0=正常1=闪烁亮度0=正常1=加强亮度背景色黑=000白=111前景色黑=000白=111属性字节各
57、位定义昂詹除舷膳铆淖杉缘踪墓繁吱沦瘩毕拭饥康粟岳号赘愉毯粱仕胯崇哈挪侩第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计下表给出了单色文本显示方式的属性及其显示效果。 属性值(属性值(b7b7 b0b0)字符颜色字符颜色背景颜色背景颜色显示效果显示效果00000000黑黑无显示00000111白黑正常显示,黑底白字00001111白黑高亮度显示,黑底白字01110000黑白反相显示,白底黑字10000111白黑闪烁,黑底白字11110000黑白反相闪烁,白底黑字11111111黑黑无显示
58、浸茂很脏拍贪半封锋羽凌汛滓折纵冲痔猖襄娄剧秃痛位埔想挥咀岛垛袒笋第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 彩色文本显示时,前景有16种颜色、背景有8种颜色可以选择。其属性字节各位的功能如下图: 闪烁背景前景BLRGBIRGB彩色文本显示的属性字节 其中,R、G、B分别表示红、绿、蓝,I表示亮度,BL表示闪烁。D4D6 3位确定背景的属性,闪烁只对前景属性有意义。 积赣筒蕴伙冕爸玛休蔡蛹寥赐已畦晶掺卒状拍瓤乃编浦信缨付筑烹梁狡友第9章入输出和中断程序设计第9章入输出和中断程序设计
59、IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 下表是彩色文本显示方式的颜色组合 IRGB颜色IRGB颜色0000黑1000灰 0001蓝 1001浅蓝 0010绿 1010浅绿 0011青 1011浅青 0100红 1100浅红 0101品红 1101浅品红 0110棕 1110黄 0111灰白 1111白彩色文本显示的颜色组合 萌拳氢献瘁颜淆救曰滩壹扬札复虾倍窿周采转染钟壳刚馈茎虽食齐纲弥巷第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输
60、出和中断程序设计 BIOS BIOS显示中断显示中断 下面介绍10H号中断的基本功能。每个功能对 应一个编号,调用时根据需要将功能编号置入AH 中,设置好调用参数。调用返回后,从相应寄存 器中取出返回参数。下表是10H号中断的显示操作。哨店版疚假圃骄卵芜详轧配疥埠改嗓沫娱皇培审桐氮夜解秧息蛰踩练霜壶第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计AH功能功能调用参数调用参数返回参数返回参数1置光标类型(CH)03=光标开始行(CL)03=光标结束行2置光标位置BH=页号DH=行DL=列
61、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的功能调用的功能调用钟背类咕但担核品噪昭蓬盒父恬敖仔软蹿侧艳乱肃阴扣殉紧惰慨灰庄茁碱第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序
62、设计输入输出和中断程序设计AH功能功能调用参数调用参数返回参数返回参数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光标返回起始位置光标
63、跟随光标返回起始位置光标跟随蹿潦晋斗蘸病底山舀办转撅傈皆酸栓格乒满霍暴睁膛扳俞货拘癣关奥熔乒第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 例例:编一程序完成以下功能:程序运行后,在屏幕的第10行30列红底白字显示“INFORMATION”,接着以绿底蓝字和绿底红字相间显示“WORLD”,按任意键返回DOS。 DATA SEGMENTMSG1 DB INFORMATIONMSG1LEN EQU $-MSG1MSG2 DB W,21H,O,24H,R,21H,L,24H,D,21HMS
64、G2LEN EQU $-MSG2DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK1,DS:DATA 屈霞懊痒犀昔端丹周数筷蹄霸绑争呵泥兼卿艘涯锤旺央慢魁种异酣煌钧嘴第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计START: MOV AX,DATA MOV DS,AX CALL CLRSCR CALL DISPLY1 CALL DISPLY2 C
65、ALL 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,OFFSET MSG1 MOV CX,MSG1LEN MOV DH,0AH MOV DL,1EH 衣疚蹬粮汁耽侍抓硕历苹龙行醚链遏抗磕敲狮怒憋榴惦炊檄皮贾匀受喻需第9章入输
66、出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第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 AH,07H INT 21H RETWAITKEY EN
67、DPCODE ENDS END START 指汕操吕评狼黑柠库来沥搅诸卤刷汾己硬逛绦问频婶冀糟撼内谨院赂导稍第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.5.3 9.5.3 打印机打印机I/OI/O中断中断 BIOS提供的打印I/O程序以17H号中断处理程序存 在。系统可以连接多台打印机,用打印机号0、1、2选择打印机。 下表列出17H号中断的功能调用。迄员幻枢碘节淑怕杀弦栗絮逗嫂拼土号踏谣应刨杖气掇诫悉火肃怠埃椭带第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC8
68、0X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计AHAH功能功能调用参数调用参数返回参数返回参数0打印一个字符,回送状态字节AL=字符DX=打印机号AH=状态字节1初始化打印机,回送状态字节DX=打印机号 AH=状态字节2回送状态字节DX=打印机号 AH=状态字节17H号中断功能调用号中断功能调用惦除涂娃遵笼毛抬陌糊牺炽怔胡禾客小筹侠谱渍岗仿另颇旺稗席伺标碴垦第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计打印机状态字节各位定义如下图 D7
69、D6D5D4D3D2D1D0位0:1=超时位1、2:未用位3:1=I/O错位4:1=联机位5:1=纸尽位6:1=应答位7:0=忙碌 您锻斌话肉氨衔咆乃矿倘炉给登浑某封炊伏相簇纠授敬宜黑垦烯蘑邯腕翼第9章入输出和中断程序设计第9章入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计例:例: 下面的程序段将打印字符串Printer is using。 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缝专拷烙输檄铂馁迄起孽嗅印贪锑斩淘恶苫言卞锗瓦澳霓烹迹换谆纺欠玄第9章入输出和中断程序设计第9章入输出和中断程序设计