| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 517 人关注过本帖
标题:汇编中的中断为啥刹不住了?
只看楼主 加入收藏
乾坤洞主
Rank: 3Rank: 3
来 自:乾坤洞
等 级:论坛游侠
帖 子:93
专家分:103
注 册:2012-7-18
结帖率:77.78%
收藏
已结贴  问题点数:10 回复次数:5 
汇编中的中断为啥刹不住了?
为什么在debug下t命令管不住
mov ss,ax
mov sp,16
这两步一个t直接就过去了!
2013-01-24 17:56
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
debug在处理堆栈的时候经常有一些奇怪的问题 原因很简单 DOS是单进程的 所以debug和被调试的程序用的是同一个堆栈 因而会有很多稀奇古怪的事 习惯就好了
2013-01-24 18:00
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 2楼 zklhp

Stay hungry , Stay foolish!
2013-01-24 18:22
x64asm
Rank: 2
来 自:X64ASM
等 级:论坛游民
威 望:1
帖 子:45
专家分:36
注 册:2010-5-20
收藏
得分:5 
因为MOV SS,段寄存器的操作是原子操作.

堆栈指针是由SS段寄存器和SP组成的,所以修改堆栈的操作需要两条指令,即:

MOV SS,堆栈段指针
MOV SP,堆栈指针

在早期的8086处理器,这两条指令不是原子操作,因此,如果修改SS后发生中断
那么,中断处理程序将得到错误的堆栈,造成系统崩溃,后来INTEL修正了指令系统
在执行 MOV SS,堆栈段指针 以后,自动隐含关闭中断,直到下条指令执行完毕以后,
才会开放中断,实现了修改堆栈的原子操作.

所以,跟在MOV SS,堆栈段指针后的指令,将无法打断,因此不能单步执行.
收到的鲜花
  • hu9jj2013-01-25 11:09 送鲜花  20朵   附言:好文章

姓名:旖旎[x64asm]
QQ:6405035,6405038
2013-01-25 00:34
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
解释的很详细,赞!

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2013-01-25 11:10
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
DEBUG下的T命令是通过设置标志寄存器的TF=1,让cpu执行完这条语句后,引发单步中断的,中断的过程会伴随FR,CS,IP的入栈操作!

Stay hungry , Stay foolish!
2013-01-25 12:10
快速回复:汇编中的中断为啥刹不住了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012769 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved