Реальный режим микропроцессоров Intel
Реальный режим - атавизм современных микропроцессоров Intel, от
которого разработчики не избавляются вот уже около двадцати лет. Он
существует по причине наличия программного обеспечения,предназначенного
для работы в этом режиме. Этот режим был единственным в котором работали
процессоры 8086 и 80186, но уже в 80286 был введен защищенный режим,
который был доработан в 80386
Для доступа к оперативной памяти в реальном режиме используется
сегментная адресация с использованием сегментных регистров CS, DS, ES, SS
и появившихся позже FS и GS. Размер этих регистров в 8086 и 80186
составляет два байта. При этом любое обращение к памяти использует
какой-нибудь сегментный регистр и физический адрес (т.е. номер
ячейки памяти) определяется таким
образом:
сегментный_регистр*16+указанный_адрес
Например
команда:
mov [0x1234], al
поместит содержимое регистра al в
следующую ячейку памяти:
DS*16+0x1234
Обычно команды работающие
со стеком используют SS как сегментный регистр по умолчанию, выборка кода
для последующего исполнения процессором производится по адресу CS:IP (т.е.
CS*16+IP), остальные работающие с памятью команды обычно используют
DS.
Любой сегмент может быть переопределен при помощи префиксов
переопределения сегмента, т.е:
es mov [0x1234], al
приведет к
тому, что содержимое al запишется по адресу:
ES*16+0x1234
Максимально возможный адрес памяти в реальном режиме составляет 10FFEF
(1114095 байт), которые получается при использовании FFFF в качестве
сегмента и FFFF в качестве адреса.