int指令01 - 零基础入门学习汇编语言64

第十三章:int指令01

 

让编程改变世界

Change the world by program


 

引言

  在第12章中,我们讲解了中断过程和两种内中断的处理。 这一章中,我们讲解另一种重要的内中断,由int指令引发的中断。   万众瞩目,是什么呢?那就是DOS时代大名鼎鼎的int中断。 int格式: int n,n为中断类型码。它的功能是引发中断过程。  

int指令

 

CPU 执行int n指令,相当于引发一个 n号中断的中断过程,执行过程如下:

(1)取中断类型码n (2)标志寄存器入栈,IF = 0,TF = 0 (3)CS、IP入栈 (4)(IP) = (n*4),(CS) = (n*4+2)   从此处转去执行n号中断的中断处理程序。 可以在程序中使用int指令调用任何一个中断的中断处理程序。   比如我们看下这个程序段:相关代码下载   程序是没有做除法,但是在结尾使用了int 0指令。 CPU执行int 0指令时,将引发中断过程,执行0号中断处理程序,而系统设置的 0号中断处理程序的功能是显示“Divide overflow”,然后返回到系统。   可见,int 指令的最终功能和call指令相似,都是调用一段程序。 因此,一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。 我们在编程的时候,可以用int指令调用这些子程序。当然,也可以自己编写一些中断处理程序供别人使用。 以后,我们可以将中断处理程序简称为中断例程。  

编写供应用程序调用的中断例程

前面,我们已经编写过中断0 的中断例程了,现在我们讨论可以供应用程序调用的中断例程的编写方法。   我们通过两个实例来讨论: 实例一 编写、安装中断7ch的中断例程,实现求一word型数据的平方。 实例二 编写、安装中断7ch的中断例程,实现将一个全是字母,以 0结尾的字符串,转化为大写。  

实例一: 编写、安装中断7ch的中断例程

  功能:求一word型数据的平方。 参数: (ax)=要计算的数据。 返回值:dx、ax中存放结果的高16位和低16位。 应用举例:求2*3456^2 [codesyntax lang="asm"]
assume cs:codecode segment
start: mov ax,3456;(ax)=3456int 7ch    ; 调用中断7ch的中断例程,计算ax中的数据的平方add ax,ax	adc dx,dx  ; 存放结果,讲结果乘以2mov ax,4c00hint 21h
code endsend start
[/codesyntax]    

我们要做三部分工作:

(1)编程实现求平方功能的程序; (2)安装程序,我们将其安装在0:200处; (3)设置中断向量表,将程序的入口地址保存在7ch表项中,使其成为中断7ch的中断例程。   我们来实现安装程序:相关代码下载   注意,在中断例程 sqr的最后,要使用iret指令。 用汇编语法描述,iret指令的功能为:

pop IP

pop CS

popf

  CPU执行int 7ch指令进入中断例程之前,标志寄存器、当前的CS和IP被压入栈中,在执行完中断例程后,应该用iret指令恢复int 7ch 执行前的标志寄存器和CS、IP的值,从而接着执行应用程序。 int指令和iret指令的配合使用与call指令和ret指令的配合使用具有相似的思路。  

实例二: 编写、安装中断7ch的中断例程

  功能:将一个全是字母,以 0结尾的字符串,转化为大写。 参数:ds:si指向字符串的首地址。 应用举例:将data段中的字符转化为大写。 [codesyntax lang="asm"]
assume cs:codedata segmentdb 'conversation',0
data endscode segment
start:    mov ax,datamov ds,axmov si,0int 7chmov ax,4c00hint 21h
code endsend start
[/codesyntax]   安装程序:相关代码下载   最后,在中断例程capital中用到了寄存器 si和cx,编写中断例程和编写子程序的时候具有同样的问题,就是要避免寄存器的冲突。 应该注意例程中用到的寄存器的值的保存和恢复。 [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LZBJKQLZQVES']视频下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2011/04/28/3847063.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA中常用的逻辑运算符_Java中的常见运算符以及使用

Java中的运算符有算术运算符、关系运算符、逻辑运算符、赋值运算符、字符串连接运算符、三目运算符等。下面介绍一下这几种。1、算术运算符包括&#xff1a;加()、减(-)、乘(*)、除(/)、取余(%)、自加()、自减(--)。<1>使用乘法时&#xff0c;需注意乘积结果是否会出现溢…

【2016计概A期末】照亮房间

你需要放置一盏灯来照亮房间的每个角落&#xff0c;问这是否能办到&#xff1f; 输入包含多组数据。 每组数据第一行是正整数n(4<n<100)&#xff0c;表示房间轮廓所形成的多边形的顶点个数。 接下来n行&#xff0c;每行表示房间的一个顶点。 顶点按顺时针的顺序给出&…

Ext智能提示 - Spket(Eclipse插件)

Eclipse的Ext 2.0.2智能提示.它提供了非常准确的Ext API提示 最近在搞java的项目&#xff0c;哇哇&#xff0c;js如果没有插件的话&#xff0c;那写的真的叫痛苦&#xff0c;所以上网搜搜了&#xff0c;找到了一个插件&#xff0c;还不错&#xff0c;蛮好用的 首先下一个插…

JAVA fileupload怎么用_jquery.fileupload使用例子java

jsp页面信息如下&#xff0c;整个页面信息pageEncoding"utf-8" import"java.io.*"%>String path request.getContextPath();String basePath request.getScheme() "://" request.getServerName() ":" request.getServerPort()…

清高是有代价的

朋友C哥&#xff0c;才高八斗。虽然是记者出身&#xff0c;做过报社社长&#xff0c;但是老刘认为C哥之才&#xff0c;最重要的并非文章学问&#xff0c;而是做事之才、经营之才、管理之才。由报社社长至投资公司总裁&#xff0c;并完成某公司香港上市&#xff0c;被人誉为干了…

Java中常用的测试工具JUnit

使用步骤 1.新建一个test源文件夹&#xff08;SourceFolder&#xff09;&#xff0c;避免和业务代码的src混在一起 2.在test下新建JUnit Test Case 3.相关测试代码放到一个Test Case,每个小的测试代码搞一个测试的方法&#xff0c;方法上标记Test BeforeClass 标注BeforeClass的…

python pyqt eric_科学网—PyQt及Eric的安装 - 张鲁新的博文

PyQt及Eric的安装已有 10440 次阅读2010-4-16 13:19|个人分类:生活点滴|系统分类:科研笔记|Python, Eric, PyQtPython是功能很强大的脚本语言。Qt是跨平台的界面开发语言。二者的结合就是PyQt&#xff0c;而Eric则是由Python开发的一款支持PyQt的IDE。 Python目前有两个较大的版…

sharepoint对象模型性能比较

sharepoint的对象模型的属性和方法有多种&#xff0c;可能对于一些初学者不明白他们之间有什么区别&#xff0c;那种更优越&#xff0c;在何种情况下用那种属性或方法&#xff0c;通过这篇文章你会有所了解 1&#xff0c;splist 有些人喜欢通过列表的名字去获得列表&#xff0c…

package.json---入门说明

直接的说&#xff1a;就是管理你本地安装的npm包 一个package.json文件可以做如下事情&#xff1a; 展示项目所依赖的npm包 允许你指定一个包的版本[范围] 让你建立起稳定&#xff0c;意味着你可以更好的与其他开发者共享 创建package.json 在你要创建的目录下执行&#xff1a;…

java多线程实战指南_学习笔记《Java多线程编程实战指南》二

2.1线程属性属性属性类型及用途只读属性注意事项编号(id)long型,标识不同线程是不适合用作唯一标识名称(name)String型&#xff0c;区分不同线程否设置名称有助于代码调试和问题定位线程类别(daemon)boolean型&#xff0c;true为守护线程&#xff0c;false为用户线程否在start方…

putty, puttycm区别

2019独角兽企业重金招聘Python工程师标准>>> 在windows上实现telnet, ssh等工具有几个方案可以选择, 本文总结了putty putty cm的方案, 并且简短地和 cygwin console2方案做了一下比较. 由于putty的安装 配置比较简单, 本文主要讨论了Putty cm的配置和中文的支持.…

思科网络基础之访问控制列表

loading....转载于:https://www.cnblogs.com/changha0/p/8185866.html

java编写日期_Java常用日期操作

//日期转字符串,根据需要调整格式Testpublic voidDateToString(){Date currentTime newDate();SimpleDateFormat formatter new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateStringformatter.format(currentTime);System.out.println(dateString);}字符串转…

使用jQuery Treeview插件实现树状结构效果

首先到一个国外网站上下载Treeview插件&#xff1a;http://bassistance.de/jquery-plugins/jquery-plugin-treeview/当然你也可以通过我博客的源文件直接下载&#xff1a;http://files.cnblogs.com/jishume/jquery_api_for_dw4.rar 为了形象一点&#xff0c;先看一个效果图&…

冲刺二周04

第四天&#xff1a; 昨天干什么&#xff1a;完成搜索界面 今天干什么&#xff1a;编写模糊查询搜索的代码 遇见什么问题&#xff1a;不熟悉 团队成员会议照&#xff1a; 转载于:https://www.cnblogs.com/ghl0518/p/8301051.html

[转]The Top 10 Attributes of a Great Programmer

With all the latest attention again on what does and doesn’t make a good programmer, I couldn’t help but put together my own top 10 list. Being a great problem solver.Being driven and lazy at the same time.Ability to understand other people’s codeHaving…

zabbix查看mysql同步_Zabbix 检测Mysql数据库的主从同步

在高并发网站架构中&#xff0c;MySQL数据库主从同步是不可或缺的&#xff0c;不过经常会发生由于网络原因或者操作错误&#xff0c;MySQL主从经常会出现不同步的情况&#xff0c;那么如何监控MySQL主从同步&#xff0c;也变成检测网站正常运行的重要环节。MySQL同步功能由3个线…

LeetCode String Compression

原题链接在这里&#xff1a;https://leetcode.com/problems/string-compression/description/ 题目&#xff1a; Given an array of characters, compress it in-place. The length after compression must always be smaller than or equal to the original array. Every elem…

瀑布模型 原型模型 增量模型 螺旋模型的优缺点

瀑布模型的优点&#xff1a;有利于大型软件开发过程中人员的组织、管理&#xff0c;有利于软件开发方法和工具的研究&#xff0c;从而提高了大型软件项目开发的质量和效率。瀑布模型的缺点&#xff1a;&#xff08;1&#xff09;开发过程一般不能逆转&#xff0c;否则代价太大&…

二手手机交易平台使用MYSQL的方法_安卓Android校园淘(二手交易)APP设计与实现(MySQL)...

安卓Android校园淘(二手交易)APP设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文14000字,程序代码,MySQL数据库)本项目就是一个基于Android平台的校园淘APP设计&#xff0c;采用了Struts技术&#xff0c;JDBC技术和Android的基础技术完成开发。收录了…