《汇编语言》王爽(第二版)第13章 int指令

《汇编语言》王爽(第二版)第13章 int指令

ID:39345881

大小:354.00 KB

页数:54页

时间:2019-07-01

《汇编语言》王爽(第二版)第13章 int指令_第1页
《汇编语言》王爽(第二版)第13章 int指令_第2页
《汇编语言》王爽(第二版)第13章 int指令_第3页
《汇编语言》王爽(第二版)第13章 int指令_第4页
《汇编语言》王爽(第二版)第13章 int指令_第5页
资源描述:

《《汇编语言》王爽(第二版)第13章 int指令》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《汇编语言》课件王爽著-清华大学出版社制作工具:MicrosoftPowerPoint2003本课件由汇编网(www.asmedu.net)制作提供第13章int指令13.1int指令13.2编写供应用程序调用的中断例程13.3对int、iret和栈的深入理解13.4BIOS和DOS所提供的中断例程13.5BIOS和DOS中断例程的安装过程13.6BIOS中断例程应用13.7DOS中断例程应用引言中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。引言在第12章中,我们讲解了中断过程和两

2、种内中断的处理。这一章中,我们讲解另一种重要的内中断,由int指令引发的中断。13.1int指令int格式:intn,n为中断类型码。它的功能是引发中断过程。CPU执行intn指令,相当于引发一个n号中断的中断过程,执行过程如下:(1)取中断类型码n;(2)标志寄存器入栈,IF=0,TF=0;(3)CS、IP入栈;(4)(IP)=(n*4),(CS)=(n*4+2)。从此处转去执行n号中断的中断处理程序。13.1int指令可以在程序中使用int指令调用任何一个中断的中断处理程序。比如,下面的程序:assumecs:codecodesegmentstart:

3、movax,0b800hmoves,axmovbyteptres:[12*160+40*2],’!’int0codeendsendstart13.1int指令这个程序在Windows2000中的DOS方式下执行时,将在屏幕中间显示一个“!”,然后显示“Divideoverflow”后返回到系统中。“!”是我们编程显示的,而,“Divideoverflow”是哪里来的呢?我们的程序中又没有做除法,不可能产生除法溢出。13.1int指令程序是没有做除法,但是在结尾使用了int0指令。CPU执行int0指令时,将引发中断过程,执行0号中断处理程序,而系统设置的0

4、号中断处理程序的功能是显示“Divideoverflow”,然后返回到系统。13.1int指令可见,int指令的最终功能和call指令相似,都是调用一段程序。一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。13.1int指令我们在编程的时候,可以用int指令调用这些子程序。当然,也可以自己编写一些中断处理程序供别人使用。以后,我们可以将中断处理程序简称为中断例程。13.2编写供应用程序调用的中断例程前面,我们已经编写过中断0的中断例程了,现在我们讨论可以供应用程序调用的中断例程的编写方法。我们通过两个问题来讨论:1、示例

5、一2、示例二13.2编写供应用程序调用的中断例程示例一编写、安装中断7ch的中断例程:功能:求一word型数据的平方。参数:(ax)=要计算的数据。返回值:dx、ax中存放结果的高16位和低16位。应用举例:求2*3456^2程序及分析13.2编写供应用程序调用的中断例程assumecs:codecodesegmentstart:movax,3456;(ax)=3456int7ch;调用中断7ch的中断例程,计算ax中的数据的平方addax,ax;dx:ax存放结果,讲结果乘以2movax,4c00hint21hcodeendsendstart分析一下13

6、.2编写供应用程序调用的中断例程我们要做三部分工作:(1)编程实现求平方功能的程序;(2)安装程序,我们将其安装在0:200处;(3)设置中断向量表,将程序的入口地址保存在7ch表项中,使其成为中断7ch的中断例程。安装程序代码13.2编写供应用程序调用的中断例程注意,在中断例程sqr的最后,要使用iret指令。用汇编语法描述,iret指令的功能为:popIPpopCSpopf13.2编写供应用程序调用的中断例程CPU执行int7ch指令进入中断例程之前,标志寄存器、当前的CS和IP被压入栈中,在执行完中断例程后,应该用iret指令恢复int7ch执行前的

7、标志寄存器和CS、IP的值,从而接着执行应用程序。int指令和iret指令的配合使用与call指令和ret指令的配合使用具有相似的思路。13.2编写供应用程序调用的中断例程示例二编写、安装中断7ch的中断例程:功能:将一个全是字母,以0结尾的字符串,转化为大写。参数:ds:si指向字符串的首地址。应用举例:将data段中的字符转化为大写。13.2编写供应用程序调用的中断例程应用举例:将data段中的字符转化为大写。assumecs:codedatasegmentdb'conversation',0dataendscodesegmentstart:movax

8、,datamovds,axmovsi,0int7chmovax,4

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。