. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  发现检测点3.2(2)的一个问题  [待解决] 回复[ 3次 ]   点击[ 384次 ]  
hysteriant
[帖 主]   [ 发表时间:2012-06-30 16:02 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2011-12-15 15:16
我在debug里1000:0000~1000:000f里随意乱写了一组数据来检测,随后用a命令在1100:0这个位置写语句如下:
mov ax,2000
mov ds,ax
mov ax,1000
mov ss,ax
mov sp,0000
pop [e]
下面就不写了,书上都有。

将CS:IP定位到1100:0,第一次运行这些语句,OK。运行以后1000:0~1000:000f里的数据全部变了。
问题就是第二次运行。
因为我非常确定我将CS:IP重置到1100:0,并且我用e命令重新改写1000:0~1000:000f的数据,改成和之前一样。只是AX,SS,DS这些寄存器没有重置,还是第一次运行后的数据。

就出问题了,第二次运行以后,2000:0~f不知道是啥数据,反正不是之前1000:0~1000:000f的。

请问为什么会出现这个情况呢,我起码验证了不下三次。
chinatree
[第1楼]   [ 回复时间:2012-06-30 17:49 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
记得注意下ss:sp的指向。
hysteriant
[第2楼]   [ 回复时间:2012-07-01 09:02 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2011-12-15 15:16
记得注意下ss:sp的指向。
------------------
回复:
为什么要注意SS:SP呢,语句里不是又重新把SS和SP置为1000和0000了吗
chinatree
[第3楼]   [ 回复时间:2012-07-01 16:27 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
楼主能否把代码全发出来?一般数据被改变如果不是显存都是由于debug的保护现场所致,它使用共同的栈。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved