网站大量收购独家精品文档,联系QQ:2885784924

[工学][汇编语言第二版][王爽 著][课件]第13章 int指令.ppt

[工学][汇编语言第二版][王爽 著][课件]第13章 int指令.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学][汇编语言第二版][王爽 著][课件]第13章 int指令

《汇编语言》课件             王爽 著-清华大学出版社 制作工具:Microsoft PowerPoint2003 本课件由汇编网()制作提供 第13章 int指令 13.1 int指令 13.2 编写供应用程序调用的中断例程 13.3 对int、iret和栈的深入理解 13.4 BIOS和DOS所提供的中断例程 13.5 BIOS和DOS中断例程的安装过程 13.6 BIOS中断例程应用 13.7 DOS中断例程应用 引言 中断信息可以来自 CPU 的内部和外部,当CPU 的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。 引言 在第12章中,我们讲解了中断过程和两种内中断的处理。 这一章中,我们讲解另一种重要的内中断,由int指令引发的中断。 13.1 int指令 int格式: int n,n为中断类型码。它的功能是引发中断过程。 CPU 执行int n指令,相当于引发一个 n号中断的中断过程,执行过程如下: (1)取中断类型码n; (2)标志寄存器入栈,IF = 0,TF = 0; (3)CS、IP入栈; (4)(IP) = (n*4),(CS) = (n*4+2)。 从此处转去执行n号中断的中断处理程序。 13.1 int指令 可以在程序中使用int指令调用任何一个中断的中断处理程序。 比如,下面的程序: assume cs:code code segment start: mov ax,0b800h mov es,ax mov byte ptr es:[12*160+40*2],’!’ int 0 code ends end start 13.1 int指令 这个程序在 Windows 2000中的 DOS方式下执行时,将在屏幕中间显示一个“!”,然后显示“Divide overflow”后返回到系统中。 “!”是我们编程显示的,而,“Divide overflow”是哪里来的呢? 我们的程序中又没有做除法,不可能产生除法溢出。 13.1 int指令 程序是没有做除法,但是在结尾使用了int 0指令。 CPU执行int 0指令时,将引发中断过程,执行 0号中断处理程序,而系统设置的 0号中断处理程序的功能是显示“Divide overflow”,然后返回到系统。 13.1 int指令 可见,int 指令的最终功能和call指令相似,都是调用一段程序。 一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。 13.1 int指令 我们在编程的时候,可以用int指令调用这些子程序。 当然,也可以自己编写一些中断处理程序供别人使用。 以后,我们可以将中断处理程序简称为中断例程。 13.2 编写供应用程序调用的中断例程 前面,我们已经编写过中断0 的中断例程了,现在我们讨论可以供应用程序调用的中断例程的编写方法。 我们通过两个问题来讨论: 1、示例一 2、示例二 13.2 编写供应用程序调用的中断例程 示例一 编写、安装中断7ch的中断例程: 功能:求一word型数据的平方。 参数: (ax)=要计算的数据。 返回值:dx、ax中存放结果的高16位和低16位。 应用举例:求2*3456^2 程序及分析 13.2 编写供应用程序调用的中断例程 assume cs:code code segment start: mov ax,3456;(ax)=3456 int 7ch;调用中断7ch的中断例程,计算ax中的数据的平方 add ax,ax;dx:ax存放结果,讲结果乘以2 mov ax,4c00h int 21h code ends end start 分析一下 13.2 编写供应用程序调用的中断例程 我们要做三部分工作: (1)编程实现求平方功能的程序; (2)安装程序,我们将其安装在0:200处; (3)设置中断向量表,将程序的入口地址保存在7ch表项中,使其成为中断7ch的中断例程。 安装程序代码 13.2 编写供应用程序调用的中断例程 注意,在中断例程 sqr的最后,要使用iret指令。 用汇编语法描述,iret指令的功能为: pop IP pop CS popf 13.2 编写供应用程序调用的中断例程 CPU执行int 7ch指令进入中断例程之前,标志寄存器、当前的CS和IP被压入栈中,在执行完中断例程后,应该用iret指令恢复int 7ch 执行前的标志寄存器和CS、IP的值,从而接着执行应用程序。 int指令和 iret指令的配合使用与call指令和r

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档