cdkyee 发表于 2013-10-30 21:44:04

使用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


我发现每压入栈一次,堆栈段(全零那个,但在进入循环前里边的值也有变化)内的原数据会向前覆盖数据段内的数据,这是为何?菜鸟求轻喷。。。

懦弱男人 发表于 2013-11-1 10:53:48

因为栈地址重复了。栈的段地址应该从10h开始。并且你的代码段要和数据段分开。你都塞到一个段里面去了。虽然也可以,但是读起来很费劲,你找个课后答案参考参考。我手机就不重新打打代码了。

懦弱男人 发表于 2013-11-1 10:56:42

纠正一下,sp=20h

cdkyee 发表于 2013-11-1 23:59:50

谢谢,可是我还是不明白,为什么压栈同时会使栈内数据向栈底方向移动呢,好奇怪的做法,,,不是应该覆盖相应的栈数据的吗?

cdkyee 发表于 2013-11-2 00:05:08

懦弱男人 发表于 2013-11-1 10:56 static/image/common/back.gif
纠正一下,sp=20h

重新编译了下没事了,估计是之前电脑抽了,,,还是要谢谢你哈!!

▲_禦焱_2amor〃 发表于 2013-11-2 00:13:33

路过一下
页: [1]
查看完整版本: 使用debug时遇到的问题