|
主题 : : 关于段大小可以是8byte的问题 [待解决] |
回复[ 7次 ]
点击[ 620次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-08-16 15:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-11-13 09:19 |
第二章检测题中有一个题选项中有个“段大小可以是8byte”的问题,很多朋友都说错了,错的原因是:“段地址必须是16的倍数”之类的,我想来想去,段的大小和段地址有关系吗?我举例说明: 一个段空间10000-10007这个段不可以吗(段地址是1000)这个段空间不是8byte吗?
我拿出来讨论,希望高手指教,谢谢,呵呵 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-08-16 16:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
如果你定义的栈不足16byte,masm会调整成16byte。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-08-16 17:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-11-13 09:19 |
谢谢masmaster兄,您这么说,我就好理解了,是不是不管是栈段,还是数据段,如果不足16byte就调整吧。要是这样的话我还有个问题,如果我定义 dw 0456h,系统是要分配空间的,这个栈空间也不足16byte呀,那是不是就不能定义。最少要定义4个以上才行,(0456h应该是4个byte吧),我刚看到第六章,哈哈,见笑。再次谢谢 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-08-16 18:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
内存空间以字节为最小单位。 如果你定义的数据类型是dw的话, 表示数据类型都是字。0456h是一个字,两个字节。
比如:
date segment
dw 0456h
data ends
这个数据段你定义了一个字,段空间不足16字节, 那么masm会自动把数据段空间调整成16字节 | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-08-17 08:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-11-13 09:19 |
谢谢哥们,这就是我要的答案,呵呵,我以后有问题还要请教呀。希望能帮忙,哈哈,0456h是两个字节,我搞错了,哈哈, | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-09-08 18:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-24 22:41 |
请问masmaster学长:最短的段大小是16B不是8B, 那么对内存单元的物理地址来说最短的大小又是多少?1B? 2B? 16B? 还是根本没有这种说法?谢谢。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-09-28 10:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:2
注册日期:2011-09-22 01:36 |
段的最小值应该是段地址*16+偏移地址=0010H+0000H=0010,这里是1B
最大是段地址*16+便宜地址=0010H*16+FFFFH=64KB。
o o没错吧? | | |
|
|
|
|
[第7楼]
[ 回复时间:2011-09-28 10:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:2
注册日期:2011-09-22 01:36 |
写错一段。最大 段地址*16+偏移地址=0010H+FFFFH=64KB | | |