C开头 发表于 2012-8-26 20:56:53

一个关于data段中的数据问题(db、dd、dw)

   如:db '1111','2222'
   小甲鱼说上面那样一个数就占一个字节,那就占8个字节。那:db 1,1,1,1,2,2,2,2中一个数还是占一个字节的吧?也是占8个字节啊,那这个和上面那个又有什么区别嘛。最开始我还以为'1111'这个就是占一个字节的。
   如果安小甲鱼说的那样,dw 0123h,0456h里面的任何一个数字是不是也是占一个字的空间啦?好像不是吧,好像是0123h才是占一个字的空间吧。我现在好纠结这个问题,希望各位懂的大哥大姐能给小弟说一下是怎么回事,谢谢了。
对了,还有一个问题,用dd定义数据。如:dd 100000在内存中应该是以16位的数据显示的吧?那像dd '1111','2222'也应该在内存中是以16位的数据显示的啊,那一人数还怎么占一个字节啊。
谢谢大家了。真心的感谢,那怕能得到大家一句“我也不懂”,我也很感激。

向往 发表于 2012-8-26 21:44:05

本帖最后由 向往 于 2012-8-26 22:00 编辑

db '1111','2222'
这里要注意一下, 这个是有 ' ' 引号的, 所以这个就是 字符串
也就是说, 这里的每一个数字, 它在内存中存储的, 并不是数字本身, 而是数字对应的ASCII码
'1' 就是 31H(16进制)
'2' 就是 32H
所以 db '1111','2222' 实际上在内存中是 31 31 31 31 32 32 32 32 所以是8个字节
而   db 1,1,1,1,2,2,2,2在内存中存储的, 就是数的本身, 也就是 01 01 01 01 02 02 02 02

另外, db '1111','2222' 跟 db '1', '1', '1', '1', '2', '2', '2', '2' 是一样的,还有, 也可以使用 "" 双引号

dw 0123h, 0456h   你说的没错, 这里就是定义了2个字型数据 0123H 为1个字, 主要是你应该还没分清楚普通数据和字符串的区别吧, 看了我上面的解释, 应该就没有问题了

至于 dd 的问题, 我看说到底还是跟上面一样的问题吧, 认真看看就好了, 呵呵
如果还有不懂的, 可以继续提问{:5_108:}

C开头 发表于 2012-8-27 07:28:59

向往 发表于 2012-8-26 21:44 static/image/common/back.gif
db '1111','2222'
这里要注意一下, 这个是有 ' ' 引号的, 所以这个就是 字符串
也就是说, 这里的每一个数 ...

首先非常感谢你的回答,谢谢。不过我还有点不是很懂。其实我最开始的疑惑是来自一个小程序的。程序在下面assume ds:data,cs:code
data segment
dd 100001
dw 100
dw 0
data ends

code segment
start:
         mov ax,data
               mov ds,ax
               mov ax,ds:   ;我就没搞懂,这一步。你也说了,一个普通的数据储存,在内存中储存就是数字不是对应的ASCII码。但是,我觉得上面的dd 100001定义的数据应该在内存中是以ASII码储存的吧,要不怎么能取高位和低位了?
               mov dx,ds:
               div word ptr ds:
               
               mov ds:,ax
               mov ax,4c00h
               int 21h
code ends
end start

真的非常感谢了{:5_107:}{:5_92:}

向往 发表于 2012-8-27 18:57:31

不是ASCII码呢
首先, 用MASM编译器编译的源程序, 写代码时, 默认是10进制的, 16进制要+h, 2进制+b, 8进制+o
dd 100001 是在内存中, 用了双字 (4字节) 的空间存储了一个 100001(十进制),
100001 就是 186A1 (16进制, 也可以看作 0001 86A1),
所以, 高位 是 1 ,低位 是 86A1

C开头 发表于 2012-8-27 22:59:12

向往 发表于 2012-8-27 18:57 static/image/common/back.gif
不是ASCII码呢
首先, 用MASM编译器编译的源程序, 写代码时, 默认是10进制的, 16进制要+h, 2进制+b, 8进制+ ...

有点懂了,谢谢{:7_155:}
页: [1]
查看完整版本: 一个关于data段中的数据问题(db、dd、dw)