. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  数据段问题  [待解决] 回复[ 4次 ]   点击[ 286次 ]  
aiker
[帖 主]   [ 发表时间:2009-05-31 08:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04
书上说 我们可以将一组长度为N(n<=64K).地址连续.起始地址为16的倍数的内存单元当作专门存储数据的内存空间.
不说都说通过 段地址X16+偏移 就可以做到1M的寻址空间吗?? 那上面的N就该<=1M.
378499835
[第1楼]   [ 回复时间:2009-05-31 08:58 ]   [引用]   [回复]   [ top ] 
荣誉值:11
信誉值:1
注册日期:2008-11-24 20:35
段地址*16肯定是16的倍数,所以一个短的起始地址也一定是16的倍数,所以一个段的长度最大肯定为64KB,这是对内存单元的解释,而偏移地址16位的变化范围是0~ffffh,所以两者是不一样的
378499835
[第2楼]   [ 回复时间:2009-05-31 09:01 ]   [引用]   [回复]   [ top ] 
荣誉值:11
信誉值:1
注册日期:2008-11-24 20:35
寻址空间和内存空间貌似也不是一样的啊
zhenglxd
[第3楼]   [ 回复时间:2009-05-31 10:19 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
寻址空间 是指cpu的寻址能力 8086 cpu有20根地址总线 他的寻址能力是 2^20 b =1MB

专门存储数据的内存空间 指代的是 你所存放数据的一个数据段 是为了方便内存管理而抽象分配的一个内存空间段 在cpu 中 给出段的起始地址 然后靠偏移地址去寻址 来表达这个段的范围 
由于 偏移地址 的大小 是靠一2个字节大小的 寄存器ip来指定 而ip他所能存放数值 最大也只有ffff
所以说 一个段的空间 最大为64KB 不是说超过64KB的空间就不存在了 而是 超过64KB的空间 就要靠改变段地址来寻址了 因为对于一个段来说 他的最大表示范围就是 64KB 超过64KB的东西 靠偏移地址不能给出了 因为 大于ffff的数据 会造成 溢出 又会从0开始 
好比一栋 楼房 有好几层 每层 都有会许多 客房 你想在 一楼 来找 二楼的客房 那是不可能的
你只有跑到2楼去 才行 但是对于这栋楼本身 每个客房都是他的一个单元 
而一楼二楼 只是我们为了表示某个楼房在这个楼所在闻之的 一个方便的称呼而已 
内存也是如此
aiker
[第4楼]   [ 回复时间:2009-05-31 11:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04
谢谢各位 我懂了
理解这段话的时候没有注意IP的范围
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved