注册 登录
编程论坛 汇编论坛

一段内存既可以是代码段,也可以是数据段和栈端 勘误 这个论坛还有人在吗?帮忙解答一下

baimk 发布于 2017-02-06 17:55, 2660 次点击
(在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],但结果却不是,哪位大神帮帮小弟,拜谢,拜谢。
3 回复
#2
Valenciax2017-02-07 06:55
sp栈顶设定太低!
debug本身和程式,有时无可避免会共用同一个栈,
所以当运行到mov sp,0020时,最后的代码部份已经被破坏了
将mov sp,0020改为mov sp,0030或更大便是
#3
k9720033562017-10-31 17:54
那是王爽老师为了讲解上的方便这样说,以后的章节他有提过,这样做是危险的。
#4
哎哎哎啊嗷嗷2017-11-08 18:41
回复 楼主 baimk
11111111111111111111111111111111111111111
1