老人与狗^ 发表于 2013-8-6 04:02:14

大侠版主快来帮我除魔。。【实验5】

本帖最后由 老人与狗^ 于 2013-8-6 04:06 编辑



这两个图片中我有很大的疑问,从而导致我的学习无法向下继续,请各位大神替我除魔。。。

DB1,2,3,4,5,6,7,8

DW 0123H,0456H

这两段分别指的什么意思。

他们貌似最后是在存到哪个地方了。请问这个地方我并没有指定。他放到哪里了。“最疑惑的问题就是这行了。”

老人与狗^ 发表于 2013-8-6 04:11:00

好吧自己的沙发自己坐。

这两个图第一个图我还是不懂,第二个图我倒是看懂了。

请大家帮我解答第一个图中的内容把。

youmingshi 发表于 2013-8-6 07:32:05

存内存里啊。

具体的我也不清楚,不过db是8位(00000000)的数据,dw是16位(0000000000000000)

data段的东西,在你运行程序的时候就会被加载进内存,如何加载我就不知到了。

福禄娃娃 发表于 2013-8-6 07:46:34

db 1,2,3,4,5,6,7,8 定义了8个字节的数据
dw 0123h,0456h定义了两个字数据

在内存中数据和指令一样,你说是什么就是什么

前面的伪指令如果指定了cs:code,ds:data 那么就存放在cs和ds中

程序中从end后的标号开始,若没有数据段,那么数据和程序存在一个段中,会把数据当做指令执行。

ssyss501 发表于 2013-8-6 08:23:16

db = define byte 定义字节型数据占 1byte
dw = define word 定义字型数据   占2byte
dd = dfine dword 定义双字型数据占4byte

楼主没好好看书

琉魂 发表于 2013-8-6 08:34:20

本帖最后由 琉魂 于 2013-8-6 08:36 编辑

嗯。。这个我有点点忘了。。。不知道说的对不对哈!

图一中'db'是以8字节定义数据,这个具体地址由编译器决定,但可以通过'a'的地址加偏移(8为单位)定位到每个数据;
图二中'dw'是以16字节定义数据,'0123H'就是一个十六进制数,也可以用'date'地址加偏移(16为单位)定位到。

可以这样理解:图一的的'1,2,3,4,5,6,7,8'是8个8字节的数据,即共8*8=64字节;
图二中的'0123H,0456H'是两个16字节数据,即共16*2=32字节。

Crazy迷恋. 发表于 2013-8-6 08:38:33

define byte    and   define word   好像是这么写的吧。更具体的 楼上的说的都是非常清楚了。

ck329054222 发表于 2013-8-6 16:05:58

撸主,第二幅图看懂了,第一幅图其实没什么区别。只是把data换成a(代号而已,什么都行),把dw(字占16位)换成db(字节占8位)

狂潮丶 发表于 2013-8-6 18:14:09

楼上说的非常清楚,我就不做重复了,楼主,挑选满意答案就好。如果还有其他不懂继续提问。{:1_1:}

老人与狗^ 发表于 2013-8-7 03:01:11

琉魂 发表于 2013-8-6 08:34 static/image/common/back.gif
嗯。。这个我有点点忘了。。。不知道说的对不对哈!

图一中'db'是以8字节定义数据,这个具体地址由编译器 ...

很感谢 解释得非常清楚。

pediyzhi 发表于 2013-8-7 08:16:13

他们貌似最后是在存到哪个地方了。请问这个地方我并没有指定。他放到哪里了。“最疑惑的问题就是这行了。”
数据类型上面已经说了,我补充你这个问题,在一般如果没有指令DS段的操作中,上面的指令分别在DS初始化后段地址+10h, 偏移位置在0的位置,为什么要加10H 因为这10H是PSP位置 PSP又在哪? PSP就在DS:0 这个位置的256个空间内(字节) 256换成16进制就是100 而段地址和偏移的组合是要*10H的. 懂了吗?

pediyzhi 发表于 2013-8-7 08:17:48

补充一下,如果指定了DS段的话那么就在DS段:0的位置了,因为指定了.就会自动略过PSP
页: [1]
查看完整版本: 大侠版主快来帮我除魔。。【实验5】