- 1
- 0
- 约 62页
- 2016-12-30 发布于广东
- 举报
第12章输入、输出和中断程序设计 主程序与硬件完成了以上操作后,CS和IP寄存器已取得了中断处理子程序的段基址和偏移地址(即中断向量),CPU就转去执行中断服务子程序。请读者注意: (1)外部设备发送到CPU的中断请求信号在时间上是随机的(而子程序调用在时间、空间上是可知的),只要未被屏蔽的设备本身的状态是准备就绪的,它就会向CPU发出中断请求信号,若此时CPU正在执行一条指令,那么就要等这条指令执行完毕,才响应中断(在流水方式计算机中一般为精确断点); (2)对加了重复前缀的串指令(如REP MOVSB),要做为一条指令处理,但不是把串操作指令全部重复执行完,而是执行一次重复和串指令即可响应中断; (3)对MOV指令和POP指令,如果处理的对象为段寄存器时,那么本条指令执行完后,接着再执行一条指令才响应中断; (4)对于开中断STI和中断返回指令IRET,要在STI或IRET指令执行完后,再执行一条指令才响应中断。以上是几种特殊情况,对一般指令,只要一条指令的执行周期结束即可响应中断。 中断处理程序的编写方法和标准子程序很类似,以下是编写中断服务子程序的步骤,请注意与子程序编写的一些不同之处。 (1) 保存寄存器内容(保护现场) (2) 如允许中断嵌套,则开中断(STI) (3) 处理中断(中断服务的主体) (4) 关中断 (5) 送中断结束命令(EOI)给中断命令寄存器(8259A内) (6) 恢复寄存器内容(恢复现场) (7) 返回到被中断的程序(IRET) 中断结束命令EOI(如有采用8259A中断控制器时)在程序的什么地方发出,这要看程序员是否要求在其处理过程中允许同级或低级中断。一般设备希望一次中断的处理过程最好是完整的,所以只在中断处理结束之前发出EOI命令。设8259A的控制寄存器地址为20H,EOI在OCW2的D5位上,所以发此命令指令为: MOV AL,20H ;20H是EOI命令位置1 OUT 20H,AL ;本指令中的20H是8259A控制口地址 处理中断部分是中断处理子程序的主体部分,它要完成的任务是各式各样的,这与实际的应用有关。如果它是处理某些错误,那一般是为了显示输出一系列出错信息。如果它是对某一个外设进行服务的,就按其端口地址接收或发送一个字节或字的数据。要注意的是,此时CPU产生一次中断,I/O设备仅完成一个字节或字的输入/输出,所以中断处理子程序所用到的指针变量或数据变量一般应设置存储器单元来保存。 12.3.6 中断程序设计 这里举一个例子来说明中断处理程序的编写方法。 【例12-4】编制除数为0时内中断(中断类型号为0)的处理程序。 在程序的初始化部分(Init)设置新的零型中断向量,显示一条信息,假定除数为零的情况,然后完成终止和驻留后退出DOS。这种结束并驻留的退出形式,它虽然退出用户程序,但本程序仍驻留在内存中(字节数不超过64K),从而使这些内存单元不被以后的应用程序所破坏。 系统调用时,按以下要求设定功能号和调用参数: AH=31H(功能号),结束并驻留该程序在内存中,不被其它应用程序破坏 AL=返回码 DX=欲驻留在内存中的字节数 中断处理部分:中断处理程序(ZDIV)在发生一个被零除发生中断时接收控制。中断处理程序先保存有关寄存器,然后打印出信息询问用户是退出程序(Quit)还是继续(Continue)。在这个中断处理子程序中,可使用DOS显示和键盘I/O功能,这是由于在进入ZDIV中断处理时,已用STI指令开中断了。若键入“C”要求继续执行程序,则中断处理子程序恢复所有寄存器内容并执行IRET指令返回主程序,在屏幕上显示一个标记符#,提示已经从中断处理子程序返回主程序,当然,此时的除法操作结果应是无效的; 若键入“Q”则要求退出,应从中断处理子程序直接返回DOS(此时屏幕无标记符#出现)。使用INT 21H的功能号4CH返回DOS,该功能允许传送返回代码,同时它也是唯一不依赖于任何段寄存器内容的终止功能。系统可在AL中返回一个程序是否正常结束的输出代码,其含义为:00H为正常结束;01H是用Ctrl_C结束;02H设备严重出错引起结束;03H是用31H功能调用结束;0FFH是CPU出错引起结束。 以下是处理除数为0而出错的中断处理子程序清单: TITLE Interrupt Handler DATA SEGMENT P
您可能关注的文档
- Flash项目案例教程牟向宇12课件教学.ppt
- Flash项目案例教程牟向宇13课件教学.ppt
- Flash项目案例教程牟向宇21课件教学.ppt
- Flash项目案例教程牟向宇22课件教学.ppt
- Flash项目案例教程牟向宇23课件教学.ppt
- Flash项目案例教程牟向宇31课件教学.ppt
- Flash项目案例教程牟向宇32课件教学.ppt
- Flash项目案例教程牟向宇33课件教学.ppt
- Flash项目案例教程牟向宇34课件教学.ppt
- Flash项目案例教程牟向宇41课件教学.ppt
- IBM-PC汇编语言程序设计余朝琨第13章高级宏汇编语言技术课件教学.ppt
- IC卡技术及其应用杨振野IC卡技术及其应用chap01课件教学.ppt
- IC卡技术及其应用杨振野IC卡技术及其应用chap02课件教学.ppt
- IC卡技术及其应用杨振野IC卡技术及其应用chap03课件教学.ppt
- IC卡技术及其应用杨振野IC卡技术及其应用chap04课件教学.ppt
- IC卡技术及其应用杨振野IC卡技术及其应用chap05课件教学.ppt
- IC卡技术及其应用杨振野IC卡技术及其应用chap06课件教学.ppt
- Illustrator_CS4美术设计案例教程宋维平IllustratorCS4美术设计案例教程1课件教学.ppt
- Illustrator_CS4美术设计案例教程宋维平IllustratorCS4美术设计案例教程2课件教学.ppt
- Illustrator_CS4美术设计案例教程宋维平IllustratorCS4美术设计案例教程3课件教学.ppt
原创力文档

文档评论(0)