| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 629 人关注过本帖
标题:一段内存既可以是代码段,也可以是数据段和栈端 勘误 这个论坛还有人在吗? ...
只看楼主 收藏
baimk
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-2-6
结帖率:0
  已结贴   问题点数:20  回复次数:3   
一段内存既可以是代码段,也可以是数据段和栈端 勘误 这个论坛还有人在吗?帮忙解答一下
(在Debug环境中)
将10000H-1001FH这段内存安排为代码段,并在里面存储如下代码:
mov ax,1000H
mov ss,ax
mov sp,0020H
mov ax,cs
mov ds,ax
mov ax,[0]
add ax,[2]
mov bx,[4]
add bx,[6]
push ax
push bx
pop ax
pop bx

设置CS=1000H,IP=0,执行这段代码。

问题:在Debug中用-t命令一步步执行的,每步执行完都会显示各个寄存器的状态还会先显示下一条是什么;执行完add ax,[2]这条指令时,除了显示各个寄存器的状态,它显示的下一条预执行命令应该是
mov bx,[4],但结果却不是,哪位大神帮帮小弟,拜谢,拜谢。
搜索更多相关主题的帖子: 寄存器  
2017-02-06 17:55
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:10
帖 子:161
专家分:933
注 册:2016-5-15
  得分:20 
sp栈顶设定太低!
debug本身和程式,有时无可避免会共用同一个栈,
所以当运行到mov sp,0020时,最后的代码部份已经被破坏了
将mov sp,0020改为mov sp,0030或更大便是
2017-02-07 06:55
k972003356
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-10-23
  得分:0 
那是王爽老师为了讲解上的方便这样说,以后的章节他有提过,这样做是危险的。
2017-10-31 17:54
哎哎哎啊嗷嗷
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-11-8
  得分:0 
回复 楼主 baimk
11111111111111111111111111111111111111111
2017-11-08 18:41







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

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