admin 管理员组

文章数量: 1184232


2024年3月19日发(作者:微信自己怎么做小程序)

汇编指令iret,ret,int

执行过程

ret指令用栈中的数据,修改IP的值,从而实现近转移。

CPU执行ret指令时,进行下面两步操作:

(IP)=((SS)*16+(SP))

(SP)=(SP)+2;

另一种用法 ret n (n为整数)则等效于

(IP)=((SS)*16+(SP))

(SP)=(SP)+2;

(SP)=(SP)+n;

例如ret 4

pop ip

add sp,4

返回调用处

push eax

call @msg ;

call标号是把eip压入堆栈,然后再跳到标号@msg处。

;[标记1]

;继续代码....

@msg:

push 0

push 0

push eax

push 0

call dword ptr [MessageBoxA]

ret ;这是取出EIP,返回到调用处,继续执行[标记1]

iret interrupt return 中断返回指令

1.恢复IP(instruction pointer):(IP)←((SP)+1:(SP)),(SP)←(SP)+2

2.恢复CS(code segment):(CS)←((SP)+1:(SP)),(SP)←(SP)+2

3.恢复中断前的PSW(program status word),即恢复中断前的标志寄存器的状态。

(FR)←((SP)+1:(SP)),(SP)←(SP)+2

4.恢复ESP(返回权限发生变化)

5.恢复SS(返回权限发生变化)

int 指令

1) 中断类型号

2) 标志寄存器入栈,IF==1

3) Cs ,IP入栈

4) IP=(n*4),CS=(n*4+2)


本文标签: 指令 返回 中断 恢复 压入