汇编语言CALL指令都将什么压入堆栈?INT指令呢?

如题所述

CALL指令段内调用将指令指针IP入栈,段间调用先入栈段基址Cs,再入栈IP。CALL调用RET返回再讲地址弹出,相关变量值改变。而INT指令要先将FLAGS(状态标志位)入栈,再将CS入栈,再将Ip入栈,然后还要将相关寄存器值入栈,IRET返回后,相关寄存器的值不发生变化。不知我有没有将CALL和INT指令内容给你讲明白,不明白再问哈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-29
首先指令寄存器在16/32/64位下分别是IP,EIP,RIP,标志寄存器是FLAGS,EFLAGS,RFLAGS
下面都以32位为例

CALL将下一条指令的CS:EIP压入堆栈

INT要看是什么模式,还有是否更改CPL,行为比较复杂,反正最后压入堆栈的三个是EFLAGS,CS和下一条指令的EIP

具体可以参考Intel或AMD的文档追问

Sorry.我没说清楚,我是想问8086系统的。

追答

把E去掉

相似回答