как найти адрес сегмента по заданным данным?
Физический адрес = 0x119B, эффективный адрес = 0x10AB
какая может быть формула?
как найти адрес сегмента по заданным данным?
Физический адрес = 0x119B, эффективный адрес = 0x10AB
какая может быть формула?
Эффективный адрес в 16-битном реальном режиме x86 - это просто часть смещения 20-битного < em> сегмент: смещение адрес. Вопрос, который вам задали, заключается в том, чтобы определить значение сегмента, когда в сочетании с эффективным адресом 0x10AB получается физический (линейный) адрес 0x119B.
Физический адрес можно вычислить из пары сегмент: смещение по формуле physaddr=(segment<<4)+offset
или physaddr=(segment*0x10)+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.