搜索
编程论坛
→
开发语言
→
『 汇编论坛 』
→ 汇编中的中断为啥刹不住了?
标题:
汇编中的中断为啥刹不住了?
只看楼主
乾坤洞主
来 自:乾坤洞
等 级:
论坛游侠
帖 子:93
专家分:103
注 册:2012-7-18
结帖率:
77.78%
楼主
已结贴
√
问题点数:10 回复次数:5
汇编中的中断为啥刹不住了?
为什么在debug下t命令管不住
mov ss,ax
mov sp,16
这两步一个t直接就过去了!
2013-01-24 17:56
zklhp
来 自:china
等 级:
贵宾
威 望:
254
帖 子:11485
专家分:33241
注 册:2007-7-10
第
2
楼
得分:5
debug在处理堆栈的时候经常有一些奇怪的问题 原因很简单 DOS是单进程的 所以debug和被调试的程序用的是同一个堆栈 因而会有很多稀奇古怪的事 习惯就好了
2013-01-24 18:00
清微御宇
来 自:开封
等 级:
侠之大者
威 望:
2
帖 子:318
专家分:497
注 册:2012-1-15
第
3
楼
得分:0
回复 2楼 zklhp
Stay hungry , Stay foolish!
2013-01-24 18:22
x64asm
来 自:X64ASM
等 级:
论坛游民
威 望:
1
帖 子:45
专家分:36
注 册:2010-5-20
第
4
楼
得分:5
因为MOV SS,段寄存器的操作是原子操作.
堆栈指针是由SS段寄存器和SP组成的,所以修改堆栈的操作需要两条指令,即:
MOV SS,堆栈段指针
MOV SP,堆栈指针
在早期的8086处理器,这两条指令不是原子操作,因此,如果修改SS后发生中断
那么,中断处理程序将得到错误的堆栈,造成系统崩溃,后来INTEL修正了指令系统
在执行 MOV SS,堆栈段指针 以后,自动隐含关闭中断,直到下条指令执行完毕以后,
才会开放中断,实现了修改堆栈的原子操作.
所以,跟在MOV SS,堆栈段指针后的指令,将无法打断,因此不能单步执行.
收到的鲜花
hu9jj
于
2013-01-25 11:09
送鲜花
20朵 附言:好文章
姓名:旖旎[x64asm]
QQ:6405035,6405038
2013-01-25 00:34
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
396
帖 子:11713
专家分:43267
注 册:2006-5-13
第
5
楼
得分:0
解释的很详细,赞!
活到老,学到老! http://www. E-mail:hu-jj@
2013-01-25 11:10
清微御宇
来 自:开封
等 级:
侠之大者
威 望:
2
帖 子:318
专家分:497
注 册:2012-1-15
第
6
楼
得分:0
DEBUG下的T命令是通过设置标志寄存器的TF=1,让cpu执行完这条语句后,引发单步中断的,中断的过程会伴随FR,CS,IP的入栈操作!
Stay hungry , Stay foolish!
2013-01-25 12:10
6
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-397519-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 2.628776 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved