最新《汇编语言》王爽(第二版)第13章-int指令幻灯片.ppt

最新《汇编语言》王爽(第二版)第13章-int指令幻灯片.ppt

ID:62261056

大小:862.00 KB

页数:65页

时间:2021-04-24

最新《汇编语言》王爽(第二版)第13章-int指令幻灯片.ppt_第1页
最新《汇编语言》王爽(第二版)第13章-int指令幻灯片.ppt_第2页
最新《汇编语言》王爽(第二版)第13章-int指令幻灯片.ppt_第3页
最新《汇编语言》王爽(第二版)第13章-int指令幻灯片.ppt_第4页
最新《汇编语言》王爽(第二版)第13章-int指令幻灯片.ppt_第5页
资源描述:

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

1、《汇编语言》王爽(第二版)第13章-int指令第13章int指令13.1int指令13.2编写供应用程序调用的中断例程13.3对int、iret和栈的深入理解13.4BIOS和DOS所提供的中断例程13.5BIOS和DOS中断例程的安装过程13.6BIOS中断例程应用13.7DOS中断例程应用引言中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。13.1int指令这个程序在Windows2000中的DOS方式下执行时,将在屏幕中间显

2、示一个“!”,然后显示“Divideoverflow”后返回到系统中。“!”是我们编程显示的,而,“Divideoverflow”是哪里来的呢?我们的程序中又没有做除法,不可能产生除法溢出。13.1int指令程序是没有做除法,但是在结尾使用了int0指令。CPU执行int0指令时,将引发中断过程,执行0号中断处理程序,而系统设置的0号中断处理程序的功能是显示“Divideoverflow”,然后返回到系统。13.1int指令可见,int指令的最终功能和call指令相似,都是调用一段程序。一般情况下,系统

3、将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。13.1int指令我们在编程的时候,可以用int指令调用这些子程序。当然,也可以自己编写一些中断处理程序供别人使用。以后,我们可以将中断处理程序简称为中断例程。13.2编写供应用程序调用的中断例程前面,我们已经编写过中断0的中断例程了,现在我们讨论可以供应用程序调用的中断例程的编写方法。我们通过两个问题来讨论:1、示例一2、示例二13.2编写供应用程序调用的中断例程示例一编写、安装中断7ch的中断例程:功能:求一word型数据的平方。参

4、数:(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.2编写供应用程序调用的中断例程我们要做三部分工作:(1)编程实现

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

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

7、odesegmentstart:movax,datamovds,axmovsi,0int7chmovax,4c00hint21hcodeendsendstart13.2编写供应用程序调用的中断例程安装程序源码在中断例程capital中用到了寄存器si和cx,编写中断例程和编写子程序的时候具有同样的问题,就是要避免寄存器的冲突。应该注意例程中用到的寄存器的值的保存和恢复。13.3对int、iret和栈的深入理解问题:用7ch中断例程完成loop指令的功能。loops的执行需要两个信息,循环次数和到s的位移

8、,所以,7ch中断例程要完成loop指令的功能,也需要这两个信息作为参数。我们用cx存放循环次数,用bx存放位移。13.3对int、iret和栈的深入理解应用举例:在屏幕中间显示80个‘!’。assumecs:codecodesegmentstart:movax,0b800hmoves,axmovdi,160*12movbx,offsets-offsetse;设置从标号se到标号s的转移位移movcx,80s:movbyteptres:[d

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

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

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