在汇编语言中int 3是什么意思

如题所述

INT3断点是断点的一种,在诸如Ollydbg中的快捷键是F2,是一种很常用的断点类型。INT3指令的机器码为CC,所以通常也称之为CC指令。当被调试进程执行INT3指令导致一个异常时,调试器就会捕捉这个异常从而停在断点处,然后将断点处的指令恢复成原来的指令。当然,如果自己写调试器,也可以用其他一些指令代替INT3指令来触发异常。追问

我写完C++程序后  进入反汇编 单步运行看到很多int 3  这里的int 3 是什么意思啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-02
汇编中int是中断指令。这里是要引发中断3的中断。
CPU执行int n指令,相当于引发一个n号中断的中断过程。可以在程序中使用int指令调用任何一个中断的中断处理程序。
举例:
assume cs:code
code segment
start: mov ax,0b800h
move s,ax
mov byte ptr es:[12*160 +40*2],’!’
int 0
code ends
end start
例子中代码执行过程中将引发中断0的中断处理。
第2个回答  2012-08-12
程序中遇到int 3则暂停,可查看此时寄存器或内存的临时数据,按执行命令则继续执行。本回答被提问者和网友采纳
第3个回答  2015-07-01
int 3是一个软件断点中断,一般用于调试时设置断点,用于观察,查找一些软件的关键数据,你可以任意修改断点。
第4个回答  2012-08-12
INT 3
是设置一个断点,程序执行到这条指令将停止在当前位置,会发生中断。追问

我知道是中断 但具体中断什么我不知道

追答

1,示例一
编写、安装中断7ch的中断全程,功能:求一word型数据的平方。
参数:(ax)=要计算的数据。
返回值:dx、ax中存放结果的高16位和低16位。
应用举例:求2*3456^2
assume cs:code
code segment
start:mov ax,3456;(ax)=3456
int 7ch;调用中断7ch的中断例程,计算ax中的数据的平方
add ax,ax
adc dx,dx;dx:ax存放结果,将结果乘以2

mov ax,4c00h
int 21h
code ends
end start

分析,我们要做三部分工作:
1)编写实现求平方功能的程序;
2)安装程序,我们将其安装在0:200处;
3)设置中断向量表,将程序的入口地址保存在7ch表项中,使其成为中断7ch的中断例程。

安装程序如下:
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov si, offset sqr;设置ds:si指向源地址

mov ax,0
mov es,ax
mov di, 200h;设置es:di指向目的地址

mov cx, offset sqrend – offset sqr;设置cx为传输长度
cld;设置传输方向为正
rep movsb

mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h;设置中断向量表偏移地址
mov word ptr es:[7ch*4+2],0;设置中断向量表,段地址

mov ax,4c00h
int 21h

sqr:mul ax
iret
sqrend: nop
code ends
end start

注意,在中断例程sqr的最后,要使用iret指令。用汇编语法描述,iret指令的功能为:
pop IP
pop CS
popf

CPU执行int 7ch指令进入中断例程之前,标志寄存器、当前的CS和IP被压入栈中,在执行完中断例程后,应该用iret指令恢复int 7ch执行前的标志寄存器和CS、IP的值,从而接着执行应用程序。

int指令和iret指令的配合使用与call指令和ret指令的配合使用具有相似的思路。

追问

我写完C++程序后 进入反汇编 单步运行看到很多int 3 这里的int 3 是什么意思啊

相似回答