传说。 发表于 2014-4-27 20:13:35

实验5的问题。

本帖最后由 传说。 于 2014-4-27 20:14 编辑

assume cs:code,ds:data,ss:stack

data segment
      dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends

stacksegment
      dw 0,0,0,0,0,0,0,0
stack ends

code segment

start:mov ax,stack
                mov ss,ax
                mov sp,16
               
                mov ax,data
                mov ds,ax
               
                push ds:
                push ds:
                pop ds:
                pop ds:
               
                mov ax,4c00h
                int 21h
               
code ends
end start
为什么我单步调试到这里的时候栈段数据就被覆盖了。 刚开始的时候都是0076a:10 段。 这一段是栈段。076a:0 这段是数据段。


为之疯狂 发表于 2014-4-27 20:37:59

大哥你别骗我了,从图1 明显的可以看出 你的SS段地址是076b,而你查看7c6a,跟栈段有什么关系?

青玄 发表于 2014-4-27 20:39:18

哦!有时候内存中可能有其它的程序在运行,这样不免有所冲突,你要么在调试一下试一下!

传说。 发表于 2014-4-28 11:46:39

青玄 发表于 2014-4-27 20:39 static/image/common/back.gif
哦!有时候内存中可能有其它的程序在运行,这样不免有所冲突,你要么在调试一下试一下!

调试好几次了。 刚开始的时候都是0. 一执行到那一步就被覆盖了。 pop完之后还是被覆盖的数据。

传说。 发表于 2014-4-28 12:00:47

为之疯狂 发表于 2014-4-27 20:37 static/image/common/back.gif
大哥你别骗我了,从图1 明显的可以看出 你的SS段地址是076b,而你查看7c6a,跟栈段有什么关系?

栈段你还没搞清楚哪一段, 你还是重新学一遍吧。

传说。 发表于 2014-4-28 12:06:53

传说。 发表于 2014-4-28 11:46 static/image/common/back.gif
调试好几次了。 刚开始的时候都是0. 一执行到那一步就被覆盖了。 pop完之后还是被覆盖的数据。

这个问题还是不研究了。。反正运行是正常的。。 dw 0 , 存入内存是00 ,还是00 00, 是占几个字节? 为什么上面定义八个字, 下面定义了 16 个0

吃货YA鸭 发表于 2017-6-14 15:13:29

本帖最后由 吃货YA鸭 于 2017-6-14 15:17 编辑

dw是存入00 00,正常占1个字两个字节,db是存入00,相当于一个字节。分配空间的公式是一样的,。而且我的cpu也是从76a:0开始的,我debug就不会出现,你那种栈空间被占用的问题。
页: [1]
查看完整版本: 实验5的问题。