
073F:0100
段地址:偏移地址
段地址寄存器:ds,es,ss,cs且都是16位寄存器,他们的寻址能力为2的16次方。
那地址范围为:
0000 0000 0000 0000 --> 1111 1111 1111 1111
但8086CPU有20根地址线,则该cpu的寻址能力为2的20次方。地址的范围为:
0000 0000 0000 0000 0000 --> 1111 1111 1111 1111 1111
但段地址地存器都是16位的,在物理上是无法表示20位地址线的。那如何表示呢?
于是就为8086CPU增加了一个地址加法器
段地址*16 + 偏移地址 = 物理地址
比如:
段地址 偏移地址
F230H *(10H) + 00C8H

基础地址 + 偏移地址 = 物理地址
有如下

则反过来可以求偏移地址


对于DOSBOX中

073F:0100 它的物理地址就为 073F10H + 0100H = 74F0H
073E10H + 0110H = 74F0H
虽然段地址、偏移地址不同,但最终的物理地址是一样的,那表示的内容会不同吗?
使用d命令可以查看

从结果可以看出,只要计算的物理地址相同,那表示的内容就是相同的。


本文探讨了8086CPU中段地址和偏移地址如何组合成物理地址,解释了16位段地址寄存器如何在20位地址线的系统中工作。通过地址加法器,段地址乘以16再加上偏移地址得到物理地址,例如073F:0100转化为74F0H。即使不同的段地址和偏移地址组合,如果其物理地址相同,所表示的内容也是相同的。
161

被折叠的 条评论
为什么被折叠?



