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 利用软件安装源来安装软件,其 ... 
随机推荐
- 解决安装Visual Studio 2012后SQL Server 2008 远程过程调用失败的问题
			安装了Visual Studio 2012后,打开SQL Server 2008配置管理器,发现了一个问题.如下图 解决办法: 
- ASP.NET中分布式事务的使用
			之前发表了一篇事务的存储过程,最近在做项目的时候遇到分布式事务,所有总结一下,跟大家分享和交流一下经验.首先说明为什么要分布式事务呢?先说说我在项目的哪里遇到分布式事务吧,我是在做网站后台开发的时候, ... 
- 11g导入大量包含子分区的数据时表空间不足
			问题描述: ORACLE11g使用impdp数据泵导入时遭遇: ORA-01691: Lob 段 ISCS.SYS_LOB0000100750C00045$$ 无法通过 128 (在表空间 RT_DA ... 
- 【转】GATT Profile 简介
			网上关于讲解 BLE 的内容比较少,看到这篇文章写的非常详细 Introduction to Bluetooth Low Energy,作为 BLE 的入门时介绍是非常合适的.本文主要翻译了一下这篇文 ... 
- Eclipse导入jre方法
			处理步骤:引入本机安装的jre1.8的步骤如下: 
- discuz二次开发笔记(三)------discuz的安装步骤
			下载好discuz的安装包后,解压在自己定义的文件夹里面,将upload里面的文件拷贝出来放到和upload同级的地方,然后删除upload文件夹. 打开浏览器,输入你文件夹的地址:如:http:// ... 
- RMAN之一:快速入门
			1.数据导出基础 (1)创建datapump导出文件的目录对象并为相应用户授予权限. 出于安全考虑,不允许oracle用户直接在OS上进行文件的操作,而应通过directory对象指定. SQL> ... 
- tar.xz 文件如何解压
			XZ压缩最新压缩率之王 xz这个压缩可能很多都很陌生,不过您可知道xz是绝大数linux默认就带的一个压缩工具. 之前xz使用一直很少,所以几乎没有什么提起. 我是在下载phpmyadmin的时候看到 ... 
- 自定义View  一 (继承VIew重写onDraw方法)
			项目:具有圆形效果的自定义View 一.继承View并重写onDraw方法 public class CircleView extends View{ private static final int ... 
- python之列表、字典的使用
			一.概述:以后你在Linux里面写Python脚本的时候会经常用到Python列表.字典,因为你在以后写脚本的时候,大多数情况下都是对文件进行操作处理,使用字典和列表可以很好的操作文件,得出你想要的结 ... 
