Адресация ячеек памяти в реальном режиме

В «наследство» от процессоров 8086/88 достался своеобразный способ задания адреса ячейки памяти в виде указателя «seg:offset», состоящего из двух слов: сегмента (seg – segment) и смещения(offset). Такая запись предполагает вычисление полного адреса по формуле:
Addr = 16 × seg + offset (1)

Такое представление 20-битного адреса двумя 16-битными числами в процессорах 8086/88 поддерживается и в реальном режиме всех последующих процессоров х86. Здесь сегмент указывает адрес параграфа16-байтной области памяти. Выравнивание адреса по границе параграфа означает, что он кратен 16 (4 младших бита нулевые). Нетрудно видеть, что один и тот же адрес можно задавать разными сочетаниями этих двух компонентов. Так например, адрес начала области данных BIOS (BIOS Data Area) 00400h представляют как 0000:0400, так и 0040:0000 (шестнадцатеричное представление подразумевается). Возможны и другие варианты, но их не используют.
Обозначение и порядок бит и байт шин адреса и данных, принятые в аппаратуре PC, пришли от процессоров Intel 8086/88 (и даже от 8080). Самый младший бит LSB(Least Significant Bit) имеет номер 0, старший (MSB – Most Significant Bit) бит байта – 7, слова – 15, двойного слова –31. На рисунках принято старший бит изображать слева, а младший – справа.
загрузка...