求问关于段地址和偏移地址的问题!
经过一下午查论坛以及查其他网站的资料,我了解了由于当时总线是20位,但是段地址和偏移地址都是16位是因为受到了当时寄存器大小只有16位的限制。但是有些地方一直都无法理解:
1.
偏移量是16位,那表示的范围从0000h~ffffh;段地址是16位,那表示的范围也是0000h~ffffh。
如果一个段地址是0000h,偏移地址是0010h,那么根据段地址*16+偏移地址,得到物理地址是0000h+0010h=0010h;
如果另一个段地址是0001h,偏移地址是0000h,那么得到的物理地址是0010h+0000h=0010h。
那这两个值的是同一个寄存器吗?
2.
段地址是怎么决定的?偏移量默认都是0000h~ffffh这个范围吗?
3.
我理解了段地址*16相当于二进制的左移4位,但是为什么要这样做?物理地址=段地址*16+偏移地址这个公式是如何得来的?
希望朋友们说说自己的看法,拯救一下陷入苦思冥想的小白同学 T T
1.
偏移量是16位,那表示的范围从0000h~ffffh;段地址是16位,那表示的范围也是0000h~ffffh。
如果一个段地址是0000h,偏移地址是0010h,那么根据段地址*16+偏移地址,得到物理地址是0000h+0010h=0010h;
如果另一个段地址是0001h,偏移地址是0000h,那么得到的物理地址是0010h+0000h=0010h。
那这两个值的是同一个寄存器吗?
应该说得到的是同一个物理地址 2.
段地址是怎么决定的?偏移量默认都是0000h~ffffh这个范围吗?
段地址 你可以随意
偏移地址范围 是0000h~ffffh范围 物理地址=段地址*16+偏移地址
十进制 16 等于 十六进制 10h
物理地址=段地址*10h+偏移地址
10h 等于 二进制 10000
也就是 段地址左移4位 + 偏移地址
人造人 发表于 2017-4-26 18:37
1.
偏移量是16位,那表示的范围从0000h~ffffh;段地址是16位,那表示的范围也是0000h~ffffh。
如果一个段 ...
谢谢回答!
请问同一个不同的段地址+偏移地址能够表示同一个物理地址的话,那在实际用到的时候不会出错吗? 人造人 发表于 2017-4-26 18:38
2.
段地址是怎么决定的?偏移量默认都是0000h~ffffh这个范围吗?
谢谢回答! 人造人 发表于 2017-4-26 18:45
物理地址=段地址*16+偏移地址
十进制 16 等于 十六进制 10h
谢谢回答!
我能理解16进制和10进制相互转换后,段地址*10h=段地址左移4位。
但是为什么要进行这一步操作再加上偏移地址呢? yvc220 发表于 2017-4-29 20:17
谢谢回答!
我能理解16进制和10进制相互转换后,段地址*10h=段地址左移4位。
为了生成20位的物理地址 yvc220 发表于 2017-4-29 20:15
谢谢回答!
请问同一个不同的段地址+偏移地址能够表示同一个物理地址的话,那在实际用到的时候不会出错 ...
一般不会
页:
[1]