. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于段大小可以是8byte的问题  [待解决] 回复[ 7次 ]   点击[ 620次 ]  
maodengqi
[帖 主]   [ 发表时间:2010-08-16 15:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-13 09:19
第二章检测题中有一个题选项中有个“段大小可以是8byte”的问题,很多朋友都说错了,错的原因是:“段地址必须是16的倍数”之类的,我想来想去,段的大小和段地址有关系吗?我举例说明: 一个段空间10000-10007这个段不可以吗(段地址是1000)这个段空间不是8byte吗?

我拿出来讨论,希望高手指教,谢谢,呵呵
masmaster
[第1楼]   [ 回复时间:2010-08-16 16:33 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
如果你定义的栈不足16byte,masm会调整成16byte。
maodengqi
[第2楼]   [ 回复时间:2010-08-16 17:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-13 09:19
谢谢masmaster兄,您这么说,我就好理解了,是不是不管是栈段,还是数据段,如果不足16byte就调整吧。要是这样的话我还有个问题,如果我定义 dw 0456h,系统是要分配空间的,这个栈空间也不足16byte呀,那是不是就不能定义。最少要定义4个以上才行,(0456h应该是4个byte吧),我刚看到第六章,哈哈,见笑。再次谢谢
masmaster
[第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字节
maodengqi
[第4楼]   [ 回复时间:2010-08-17 08:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-13 09:19
谢谢哥们,这就是我要的答案,呵呵,我以后有问题还要请教呀。希望能帮忙,哈哈,0456h是两个字节,我搞错了,哈哈,
xshz
[第5楼]   [ 回复时间:2010-09-08 18:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-24 22:41
请问masmaster学长:最短的段大小是16B不是8B, 那么对内存单元的物理地址来说最短的大小又是多少?1B? 2B? 16B? 还是根本没有这种说法?谢谢。
jrookie
[第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没错吧?
jrookie
[第7楼]   [ 回复时间:2011-09-28 10:51 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2011-09-22 01:36
写错一段。最大 段地址*16+偏移地址=0010H+FFFFH=64KB
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved