使用debug时遇到的问题
本帖最后由 cdkyee 于 2013-10-31 21:51 编辑最近在学小甲鱼的零基础汇编,写了个汇编程序,和教程(第六章_包含多个段的程序01)一样,但用debug检测时遇到了问题,代码附上:
assume cs:msgcs
msgcs segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cdah,0987h
dw 0,0,0,0,0,0,0,0
start : mov ax,cs
mov ss,ax
mov sp,32
mov bx,0
mov cx,8
s: push cs:
add bx,2
loop s
mov bx,0
mov cx,8
sz: pop cs:
add bx,2
loop sz
mov ax,4c00h
int 21h
msgcs ends
end start
我发现每压入栈一次,堆栈段(全零那个,但在进入循环前里边的值也有变化)内的原数据会向前覆盖数据段内的数据,这是为何?菜鸟求轻喷。。。
因为栈地址重复了。栈的段地址应该从10h开始。并且你的代码段要和数据段分开。你都塞到一个段里面去了。虽然也可以,但是读起来很费劲,你找个课后答案参考参考。我手机就不重新打打代码了。 纠正一下,sp=20h 谢谢,可是我还是不明白,为什么压栈同时会使栈内数据向栈底方向移动呢,好奇怪的做法,,,不是应该覆盖相应的栈数据的吗? 懦弱男人 发表于 2013-11-1 10:56 static/image/common/back.gif
纠正一下,sp=20h
重新编译了下没事了,估计是之前电脑抽了,,,还是要谢谢你哈!! 路过一下
页:
[1]