大侠版主快来帮我除魔。。【实验5】
本帖最后由 老人与狗^ 于 2013-8-6 04:06 编辑这两个图片中我有很大的疑问,从而导致我的学习无法向下继续,请各位大神替我除魔。。。
DB1,2,3,4,5,6,7,8
DW 0123H,0456H
这两段分别指的什么意思。
他们貌似最后是在存到哪个地方了。请问这个地方我并没有指定。他放到哪里了。“最疑惑的问题就是这行了。”
好吧自己的沙发自己坐。
这两个图第一个图我还是不懂,第二个图我倒是看懂了。
请大家帮我解答第一个图中的内容把。
存内存里啊。
具体的我也不清楚,不过db是8位(00000000)的数据,dw是16位(0000000000000000)
data段的东西,在你运行程序的时候就会被加载进内存,如何加载我就不知到了。 db 1,2,3,4,5,6,7,8 定义了8个字节的数据
dw 0123h,0456h定义了两个字数据
在内存中数据和指令一样,你说是什么就是什么
前面的伪指令如果指定了cs:code,ds:data 那么就存放在cs和ds中
程序中从end后的标号开始,若没有数据段,那么数据和程序存在一个段中,会把数据当做指令执行。 db = define byte 定义字节型数据占 1byte
dw = define word 定义字型数据 占2byte
dd = dfine dword 定义双字型数据占4byte
楼主没好好看书 本帖最后由 琉魂 于 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字节。 define byte and define word 好像是这么写的吧。更具体的 楼上的说的都是非常清楚了。 撸主,第二幅图看懂了,第一幅图其实没什么区别。只是把data换成a(代号而已,什么都行),把dw(字占16位)换成db(字节占8位) 楼上说的非常清楚,我就不做重复了,楼主,挑选满意答案就好。如果还有其他不懂继续提问。{:1_1:} 琉魂 发表于 2013-8-6 08:34 static/image/common/back.gif
嗯。。这个我有点点忘了。。。不知道说的对不对哈!
图一中'db'是以8字节定义数据,这个具体地址由编译器 ...
很感谢 解释得非常清楚。 他们貌似最后是在存到哪个地方了。请问这个地方我并没有指定。他放到哪里了。“最疑惑的问题就是这行了。”
数据类型上面已经说了,我补充你这个问题,在一般如果没有指令DS段的操作中,上面的指令分别在DS初始化后段地址+10h, 偏移位置在0的位置,为什么要加10H 因为这10H是PSP位置 PSP又在哪? PSP就在DS:0 这个位置的256个空间内(字节) 256换成16进制就是100 而段地址和偏移的组合是要*10H的. 懂了吗? 补充一下,如果指定了DS段的话那么就在DS段:0的位置了,因为指定了.就会自动略过PSP
页:
[1]