苦人儿 发表于 2012-1-19 12:47:50

dw把数据放哪里了

本帖最后由 苦人儿 于 2012-1-19 13:28 编辑

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

这段定义中把数据0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h放在了内存中的哪里了?找不到。
是放到ds:0处,还是放到了其他地址。与什么有关?
各位大侠不吝赐教!
谢谢!

事事如意 发表于 2012-1-19 17:43:28

这个天不知,地不知,只有系统知道(小甲鱼老师的话),因为在你定义了这段数据时,系统会自动给分配空间来存放的。

事事如意 发表于 2012-1-19 17:49:23

data segment
      dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
若你要想找到具体放到什么地方,可以这样试下:
在上述数据段的基础上,加入下面的指令
mov ax,data
mov ds,ax
这时候你看看ax 或ds 的值,就知道了你这个数据段的段地址了。

苦人儿 发表于 2012-1-19 18:02:51

大侠看看结果吧!好像出错

nichkhun 发表于 2012-1-22 18:48:32

我每天无限的DEBUG,我感觉,0123h 会对应 起码的是 23 10 这样的机器码出来。。

张国祥 发表于 2012-1-23 19:25:25

本帖最后由 张国祥 于 2012-1-23 19:26 编辑

如果ds段在程序最前端的话,数据就在psp的后面

张国祥 发表于 2012-1-23 19:28:27

要把dsg所在段正确指向ds寄存器,才能行;因为ds在程序开始似乎并不指向dsg

bafengao 发表于 2012-1-23 19:34:09

ds段 :lol:lol:$:$

阳光ヾ… 发表于 2012-1-29 10:27:42

这段数据放在哪,主要看前面的关联和后面的代码了,如果data跟DS关联应该是放在data:0处了,如果跟CS关联,后面还有代码的话,就是放在代码段的前面了,执行时就从这个数据开始执行,那样就不对了,的加个标号就是入口地址,指定程序的第一条指令在那个位置,如果不加标号就从数据开始执行就有莫名其妙的指令了,不知道说的对不对,本人也是菜鸟,希望各为高手指导啊!
页: [1]
查看完整版本: dw把数据放哪里了