Вот начало загрузчика операционной системы [BITS 16] [ORG 0] jmp start ..... start: mov ax,07C0h mov ds,ax .... А почему 07С0? ведь логический адрес 0000:7С00?
Можешь пожалуйста написать алгоритм перевода логического адреса в физический, а то, как написано в "Испльзование Tutbo Assembler...." не совсем понятно... Там физ 000010 соответствует 0001:0000 и 0000:0010...
stel123 В real mode процессора пара ("сегмент", "смещение") переводится в физический адрес так "сегмент" * 16 + "смещение". Собственно, Black_mirror так и показал. Какие выводы : к одной и той же ячейке памяти можно обращаться несколькими вариантами пар ("сегмент", "смещение"). Например 0001:0000 => 0001 * 16 + 0000 == 000010 и 0000:0010 => 0000 * 16 + 0010 == 000010. Или другой вариант : 0002:0000 => 0002 * 16 + 0000 == 000020 и 0000:0020 => 0000 * 16 + 0020 == 000020 и 0001:0010 => 0001 * 16 + 0010 == 000020 и т.д.
lis Это все понятно, что можно в другие сегментные регистры и 0 загрузить. Я просто пытался придумать правдоподобное об"яснение. А вопрос вызван совсем другим. Просто с высоты сегодняшних 32-х и 64-х бит тяжело понять, что Интелу надо было с помощью 16-битных регистров "удобно" адресовать аж 1 Мбайт !