. : : 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