cpu寄存器为什么不采取这个策略呢?

lkx语言创始人 2009-03-23 04:54:10
看了汇编语言书上说,假如cpu是16位寄存器,如果直接寻址,只能访问2的16次方也就是64k字节的内存空间,如果要访问1M 的话,那么就用段寄存器*16+偏移地址,,这里我就看不明白了,为什

么会这样做呢,为什么不采取两个寄存器来表示呢 假如直接用两个寄存器来寻址的话,那么16位的两个寄存器可直接寻址2的32次方,也就是4G的空间。。

还有如查采用两个寄存器寻址的话,根本用不着32位的寄存器,我感觉32位寄存器没有必要,因为两个16位的寄存器就能够解决问题了。。。不知道我分析的对不对,请大家帮帮我解除心中的疑问,谢

谢谢谢谢。
...全文
191 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fianceeyi 2009-08-09
  • 打赏
  • 举报
回复
我觉得还是9楼的zhanzongru兄弟说到了本质。
小赌移情 2009-03-25
  • 打赏
  • 举报
回复
這是歷史遺留問題,x86體系就是為了兼容這個特性,做了很多nasty的事情. 起因為最早的x86-8086為16bit機,數据線線和主寄存器皆為16bit. 唯地址總線為20bit. 所以把1M的地址分成了16個段. 當時是夠用的, 一個.com程序也就是64k,不跨段. 後來後悔也來不及了. 386才改, 不過對這個模式一直兼容到現在, 稱為 實模式, 每次開機都要進這個模式的.
小赌移情 2009-03-25
  • 打赏
  • 举报
回复
寄存器是多少位都有溢出問題的, 樓上的發言.....
mngzilin 2009-03-25
  • 打赏
  • 举报
回复
使用两个 寄存器要考虑寄存器间的进位、溢出等问题。使用32位寄存器可以在一定程度上解决这些问题!当然当数据太大时,32位寄存器也会溢出。呵呵
nanlingcg 2009-03-24
  • 打赏
  • 举报
回复
地址总线的原因,地址总线宽20。最高寻址2的20次方=1048576(0H-0FFFFFH)=(0B-11111111111111111111B)再多就要21位了,就没法传了。
2000:1000=21000 如果改成2000:1000=20001000 就没法传这个地址了(宽20的情况下)

以上为我这个初学者的粗浅认识,
z5684382 2009-03-24
  • 打赏
  • 举报
回复
总的老说还是实际的技术水平的限制,假如真象楼主说的,能直接用两个寄存器来寻址,那现在我们就不需抱怨电脑太烂了。
假如cpu是16位寄存器,如果直接寻址,只能访问2的16次方也就是64k字节的内存空间,如果要访问1M 的话,那么就用段寄存器*16+偏移地址,,就象你要去一个朋友家,你家到他家就必须去搭公车,公车那站还许要走一段路才能到你家,这就是段寄存器*16+偏移地址的基础原理
Guilty 2009-03-23
  • 打赏
  • 举报
回复
地址寄存器+段寄存器,不就是你说的两个寄存器吗?
BAYNPU 2009-03-23
  • 打赏
  • 举报
回复
楼主对16位、32位的汇编理解搞都混淆了。
rookie001 2009-03-23
  • 打赏
  • 举报
回复
楼上正解。要知道理论上可以实现的东西,也要考虑实际的技术水平。
比如8088才是8位数据线,很大部分原因就是为了减少管脚,当时的工艺水平还比较低
BAYNPU 2009-03-23
  • 打赏
  • 举报
回复
为什么不采取两个寄存器来表示呢 假如直接用两个寄存器来寻址的话,那么16位的两个寄存器可直接寻址2的32次方,也就是4G的空间。。
答:8086的内外数据总线16位,地址才总线20位,1MB主存,怎么能过寻址到4G地址空间呢?
BAYNPU 2009-03-23
  • 打赏
  • 举报
回复
看了汇编语言书上说,假如cpu是16位寄存器,如果直接寻址,只能访问2的16次方也就是64k字节的内存空间,如果要访问1M 的话,那么就用段寄存器*16+偏移地址,这里我就看不明白了,为什么会这样做呢.

答:8086CPU将1MB存储器空间分成许多逻辑段,每个段最大限制为64KB,这样每个存储器单元就可以用"段基地址:段内偏移地址"表达其准确的物理位置.
xiaopoy 2009-03-23
  • 打赏
  • 举报
回复
需要分段的时候至强内存大小只有2^16。
不需要分段的时候直接设置一个寄存器就得了。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧