从给定的物理和有效地址中查找段地址

时间:2019-05-10 07:39:03

标签: assembly x86-16 real-mode memory-segmentation

如何从给定数据中查找段地址?

物理地址= 0x119B,有效地址= 0x10AB

公式是什么?

1 个答案:

答案 0 :(得分:4)

x86 16位实模式下的有效地址仅是20位segment:offset address的偏移量部分。您已经得到的问题是确定与有效地址0x10AB组合产生的物理(线性)地址0x119B时的段值。

可以使用公式physaddr=(segment<<4)+offsetphysaddr=(segment*0x10)+offset segment:offset 对计算物理地址。重新修改公式:

physaddr = (segment*0x10)+offset
physaddr-offset = segment*0x10
(physaddr-offset)/0x10 = segment
segment = (physaddr-offset)/0x10

现在我们知道细分的公式为segment = (physaddr-offset)/0x10,我们可以执行计算以找到问题的答案:

segment = (0x119B-0x10AB)/0x10
segment = 0xF0/0x10
segment = 0xF

我们可以通过将其插入到物理地址的原始公式中来检查此结果并得到:

physaddr = (0xF*0x10)+0x10AB = 0x119B.