搜索
编程论坛
→
开发语言
→
『 汇编论坛 』
→ 问个问题?
标题:
问个问题?
只看楼主
newyj
等 级:
新手上路
威 望:
3
帖 子:542
专家分:0
注 册:2008-1-4
楼主
问题点数:0 回复次数:4
问个问题?
逻辑段的开始地址必须是16位的倍数?
逻辑段的最大长度为64K?
能否解释 一下 谢谢
2008-10-09 23:15
ONEPROBLEM
来 自:广西 南宁
等 级:
贵宾
威 望:
21
帖 子:1569
专家分:349
注 册:2008-7-11
第
2
楼
得分:0
[bo][un]newyj[/un] 在 2008-10-9 23:15 的发言:[/bo]
逻辑段的开始地址必须是16位的倍数?
逻辑段的最大长度为64K?
能否解释 一下 谢谢
怎么说好呢?
段地址必须是16位的倍数,这应该是由寄存器造成的.因为,物理地址是20位的,而寄存器是16位的,装不下.只好先右移一位,再装入寄存器.
反过来,将段寄存器中的段地址换算成物理地址前,要先左移一位.所以,必须是16位的倍数,否则这一右移左移的,就把低于16位的给去掉了,最终是寻不到正确的地址.
最大为什么是64K?问题还是在寄存器上.我们有了段地址寄存器,还要有个放偏移地址的寄存器,而放偏移地址的寄存器是16位的,它所能表达的最大值就是64K .
2008-10-09 23:53
newyj
等 级:
新手上路
威 望:
3
帖 子:542
专家分:0
注 册:2008-1-4
第
3
楼
得分:0
谢谢了
是不是说 只要是 左移一次 就是16的倍数呢?
2008-10-10 22:25
ONEPROBLEM
来 自:广西 南宁
等 级:
贵宾
威 望:
21
帖 子:1569
专家分:349
注 册:2008-7-11
第
4
楼
得分:0
[bo][un]newyj[/un] 在 2008-10-10 22:25 的发言:[/bo]
谢谢了
是不是说 只要是 左移一次 就是16的倍数呢?
对.16进制移一次就是16的倍数;如果是2进制,移一次就是2的倍数了.类推.
2008-10-10 23:08
邋遢鬼
等 级:
论坛游民
帖 子:29
专家分:94
注 册:2011-5-29
第
5
楼
得分:0
由于段基址加偏移来表示二十位的地址,一个段最大只能有64K的空间,例如段地址为1234,它的空间是0000H~FFFFH,也就是64k,再多的话就跑到下一个段里了
2011-07-01 11:35
5
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-237315-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.269484 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved