. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
寄存器(CPU工作原理)
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
段最小长度问题
[待解决]
回复[
5
次 ] 点击[
604
次 ]
ismylord
[帖 主]
[ 发表时间:2010-10-19 19:58 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-10-15 14:54
“可以根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。”书上有这么一句话,但是一直不理解。看到别人问过这个问题,但是回答的答案仍然感觉有疑问。
下面贴出abob回复的内容:
------------------------------------------------------------------------------------
不同的段必然有不同的段地址,而对于段地址相差的最小也需要是1。也就是说两个段地址相差是1时,段值小的数是最小的段。(根据物理地址=段地址*16+偏移地址,一个段的起始地址偏移地址=0,也就是说一个段的起始地址=段地址*16即段的起始地址必然是16的倍数-见2.8段的概念)
假设段地址可以为1或2,他们的物理地址差是00020H-00010H=10H,也就是一个段最小是16Byte。(对于地址总线,寻址的是存储单元,见第一章)
----------------------------
10000H-| |←起始地址 -
10001H-| |←结束地址 ↑ (刚好满足连续的内存单元且起始地址为16的倍数,这个不能为一个段?)
10002H-| |
10003H-| |
10004H-| |
10005H-| |
10006H-| |
10007H-| |
10008H-| | 为什么这些连续的单元才能作为段
10009H-| |
1000AH-| |
1000BH-| |
1000CH-| |
1000DH-| |
1000EH-| | ↓
1000FH-| | -
10010H-| |←起始地址
------------------------
疑问:两起始地址的物理地址之差,跟最小段的长度有什么关系?
10010H-10000H=10H 得到的是两个地址间内存单元数。
最小段长度应该是小于等于10H啊。
这里只是说起始地址为16倍数,也没说段与段之间没间隙的。连续只是说作为段的内存单元是连续的。是我理解有问题吧,求解释。谢谢。
515332695
[第
1
楼]
[ 回复时间:2010-10-19 20:20 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-06-01 22:23
连续两个段的起始地址之差就是前一个段的长度。
sempron
[第
2
楼]
[ 回复时间:2010-10-29 11:24 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-10-29 09:56
首先需要明确一个概念,起始地址是偏移地址为零时的物理地址,此时物理地址=段基址*16+0,
即起始地址=段基址*16,很明显起始地址是16的倍数.
也可以这么说一个段的起始地址与段基址的商一定是16
sempron
[第
3
楼]
[ 回复时间:2010-10-29 11:28 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-10-29 09:56
用上面的道理来解释一下为什么10001H不能做起始地址.
如果10001H是起始地址的话,那么10001H=段基址*16+0,你能算出来段基址是多少吗,算不出来吧。如果从十进制的思路考虑段基址就成小数了,所以10001H不能做起始地址。
that's all
zhllhz
[第
4
楼]
[ 回复时间:2010-11-03 16:10 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:4
注册日期:2009-12-18 19:17
1.
10000H-| |←起始地址 -
10001H-| |←结束地址 ↑ (刚好满足连续的内存单元且起始地址为16的倍数,这个不能为一个段?)
---------------------------------
这个可以是一个段。
2.疑问:两起始地址的物理地址之差,跟最小段的长度有什么关系?
---------------------------------
任意的地址连续、起始地址为16的倍数的一组内存单元都可以是一个段,
即一个段的大小可以是从1~FFFFH,
但是,程序被加载到内存时所分配到的内存单元的数量是16的倍数。
ysp0328
[第
5
楼]
[ 回复时间:2010-11-24 16:28 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-11-24 11:07
????????????????
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved