鱼C论坛

 找回密码
 立即注册
查看: 2373|回复: 6

[已解决]除法溢出引发中断过程的IP是那条指令的IP

[复制链接]
发表于 2019-11-8 17:25:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        
        mov ax,0ffffH
        mov bl,1
        div bl
        nop

执行 div bl时,引发中断过程,那么在push IP的时候,是那一条指令的IP入栈,div bl指令的IP,还是nop指令的IP
最佳答案
2019-11-9 20:24:11
我早就看到了这个问题,只是我的调试环境出现了一些问题
花了点时间,我修好了我的调试环境,现在给出调试过程
可以看到是 div bl 的地址入栈

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-9 20:24:11 | 显示全部楼层    本楼为最佳答案   
我早就看到了这个问题,只是我的调试环境出现了一些问题
花了点时间,我修好了我的调试环境,现在给出调试过程
可以看到是 div bl 的地址入栈

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-9 21:40:55 | 显示全部楼层
能够说明下是什么原因吗?除法溢出引发的中断与
int 0 引发的中断有什么区别吗?跪求!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-9 22:32:02 | 显示全部楼层
tancs 发表于 2019-11-9 21:40
能够说明下是什么原因吗?除法溢出引发的中断与
int 0 引发的中断有什么区别吗?跪求!!!!!!

除法溢出引发的中断与int 0 引发的中断有什么区别吗?
没有区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-10 09:20:44 | 显示全部楼层
那为什么压入栈中的ip的值不一样?
由int 0 引发中断时的压入栈中的ip的值是下一条指令的ip
而由除法溢出引发中断压入栈中ip的值是它本指令的ip呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-10 11:06:35 | 显示全部楼层
tancs 发表于 2019-11-10 09:20
那为什么压入栈中的ip的值不一样?
由int 0 引发中断时的压入栈中的ip的值是下一条指令的ip
而由除法溢出 ...


嗯,我试了一下,int 0压入栈中的的确是下一条指令的ip
其实没有什么为什么,硬件就是这样设计的,如果你想问为什么这样设计,这样设计有什么好处的话
你可以看一看这本书
  1. 《Intel® 64 and IA-32 Architectures》
复制代码

intel的官方文档,里面应该有这样设计的理由,大概吧
我英语能力不行,目前还不具备翻这本书的能力
如果你有兴趣,可以在这本书中找一找,看看有没有你想要的答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-11-10 14:28:10 | 显示全部楼层
谢谢你,帮我解决了困扰了我好几天的问题,3Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 21:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表