int指令(软件中断指令)
INT(软件中断指令)是CALL指令的一种特殊形式。call指令调用调用的子程序是用户程序的一部分,而INT指令调用的操作系统提供的子程序或者其他特殊的子程序。
中断服务子程序和标准过程的最大区别是 汇编程序可以有任意个过程,中断服务子程序最多有256个过程、
INT指令共有四中不同的格式:
《1》 int n
n是中断号,这就允许用户程序调用256个中断服务子程序。
该指令2字节长度,第一字节是int机器码,第二字节是8位立即数,表示中断号。
CPU在执行到INT指令时,通过中断描述符表找到中断号对应的中断服务子程序的地址,(本质上就是一个异常处理程序的软件调用)
《2》 int 3
INT 3 是中断指令的一种特殊形式,仅有一个字节长。
调试器将该指令当作软件中断指令来用。调试的时候,当程序中的某一位置加断点的时候,调试器会把断点处指令编码的第一个字节替换为INT 3指令的编码。
当程序执行到INT 3,回向调试器申请系统调用,调试器因此获得CPU控制权。之后,再用原先的编码替换INT 3 编码。
《3》INTO 中断号4
如果溢出标志位为1,则INTO指令会产生一个软件中断,利用这个指令可以快速测试算术运算指令之后是否有溢出产生。
《4》BOUND 中断号5
BOUND reg,mem
其执行算法为:if(reg<[mem])or(reg>[mem+sizeof(reg)]) then INT 5
判断数组下表是否在合理范围内,不合理触发INT 5 中断,返回地址仍是BOUND
不管是哪种,都会发生
(1)标志寄存器入栈
(2)CS:EIP 寄存器入栈,
(3)通过中断号在中断描述符表中找到对应的描述符,并将对应的数据放入CS:EIP中、
CS入栈和出栈都是一个32位值,只有低16位有效。扩充的高16位无定义,目的是使堆栈保持与4字节边界对齐。这对80386的性能来说很重要。。。么。。。。。
int指令(软件中断指令)的更多相关文章
- JVM 字节码之 int 入栈指令
本文转载自JVM 字节码之 int 入栈指令(iconst.bipush.sipush.ldc) 前言 本文介绍 int 入栈指令 iconst.bipush.sipubh.Idc. 当 int 取值 ...
- 汇编 sub减法指令 比较指令CMP JZ条件跳转指令
二.SUB指令 减法指令SUB (SUBtract) 格式: SUB A,B //A=A-B; 功能: 两个操作数的相减,即从A中减去B,其结果放在A中. 二.CMP 和JZ 指令 比较指令CMP 格 ...
- jsp的常用指令有哪些(编译指令/动作指令整理)
jsp的常用指令有哪些(编译指令/动作指令整理) JSP动作指令 JSP - JSP中的脚本.指令.动作和注释
- javaWEB总结(15):jsp指令_page指令
jsp指令 jsp指令是为jsp引擎设计的.他们并不直接产生任何可见输出,而只是告诉引擎如何处理jsp页面的其余部分. 目前定义了page,include和taglib这三种指令. page指令 (1 ...
- JSP指令--include指令(静态包含)
转自:https://blog.csdn.net/chentiefeng521/article/details/51802319 include指令 include指令是文件加载指令, ...
- (尚016)Vue指令(11个自带指令+自定义指令)
1.Vue常用指令 1)v:text:更新元素的 textContent 2)v-html:更新元素的 innerHTML 3)v-if:如果为true,当前标签才会输出到页面 4)v-else:如果 ...
- 浅谈AngularJS中的指令和指令间的相互通信
说到AngularJS,我们首先想到的大概也就是双向数据绑定和指令系统了,这两者也是AngularJS中最为吸引人的地方.双向数据绑定呢,感觉没什么好说的,那么今天我们就来简单的讨论下AngularJ ...
- AngularJS自定义指令及指令配置项
两种写法 //第一种 angular.module('MyApp',[]) .directive('zl1',zl1) .controller('con1',['$scope',func1]); fu ...
- linux指令 apt-grt指令使用
apt-get 是linux的一条指令,主流的linux版本Debian和ubuntu都使用apt-get来安装软件.那么,需安装的软件都放在哪里呢??? apt-get 利用软件安装源来安装软件,其 ...
随机推荐
- pl_sql 报ora-12154 无法解析指定的连接标识符的问题
情况一:连接本地的没有问题,连接远程服务器的时候报以上错误.那么在本地客户端下的TNSNames.ora设置中配置你的远程服务器连接,本人的如下: //mestest是远程服务器名 //172.18. ...
- sublimetext3官网安装
1. 下载 可以从官网 http://www.sublimetext.com/3 下载. 2. Windows下安装与使用2.1 安装 1. Win7 64位系统,可以下载 Windows 64 bi ...
- Eclipse代码风格设置
在编写代码的过程中,代码的呈现形式是通过eclipse的Formatter配置文件所控制的.我们可以按照自己的习惯生成属于自己的代码风格配置文件,方便规范以后的代码编写形式.具体的操作步骤如下所示:( ...
- 2015.4.16-SQL-内连接与外连接
1.内连接 如图: 关键字 inner join 2.外连接 分为左外连接 和右外连接,即如果是左外连接,即使左面没有值,也会显示为null, 右外连接也如此 关键字 left join ; righ ...
- 导出kettle数据转换设置
在本地测试好的数据清洗配置,要转移到服务器上,就要用到导出数据转换设置. 一直是这使用是在导入设置的 时候总是提示不是kettle的文档格式.后来才发现这是资源库的配置,而不是数据转 换的配置. 导出 ...
- Android Studio rename module Can't rename root module
Android Studio修改工程根目录的时候会报错, rename module Can't rename root module. 主要是该工程已经打开,再命名必须要关闭改工程,就跟正在写一个t ...
- 安装Ubuntu时的硬盘分区方案 转载
安装Ubuntu时的硬盘分区方案 http://www.cnblogs.com/shenliang123/p/3196743.html 如果你准备在硬盘里只安装Ubuntu一个操作系统的话,建议你采用 ...
- 创建以 API 为中心的 Web 应用
http://www.oschina.net/translate/creating-an-api-centric-web-application?from=20130818 正计划着要开始搞一个新的网 ...
- CC++初学者编程教程(16) 搭建Xcode cocos2dx开发环境
1.下载cocos2dx,也可以从共享目录复制 2.解压缩 3.进入目录 cd Desktop/cocos2d-x-2.2.0/tools/project-creator/ 4.创建项目 ./crea ...
- 如何获取版本的 Internet 信息服务器 (IIS)
不同的操作系统对应不同IIS http://support.microsoft.com/kb/224609/zh-cn