-
Notifications
You must be signed in to change notification settings - Fork 1
02. Сегментные регистры. Адресация в реальном режиме. Понятие сегментной части адреса и смещения.
■ Сегмент кода (CS)
■ Сегменты данных (DS, ES, FS, GS)
■ Сегмент стека (SS)
Каждый регистр содержит адрес для разных сегментов программы, с помощью них и происходит доступ к этим сегментам.
Мы знаем что регистр IP "указывает" на следующую команду, мы также знаем что регистры у нас размером в 16 бит, таким образом, используя один регистр программист имеет доступ только к 2^16 адресам, это примерно 64 кБ. Это достаточно мало, поэтому адресация в 8086 по 2^20 адресам, то есть примерно 1 МБ памяти. Для этого используют адрес начала сегмента и смещение. Сегментные регистры как раз хранят адрес. Реальный адрес высчитывается так: сегментная_часть × 16 + смещение. (умножение на 16 = сдвиг на четыре бита влево)
При такой адресации адреса 0400h:0001h и 0000h:4001h будут ссылаться на одну и ту же ячейку памяти, так как 400h × 16 + 1 = 0 × 16 + 4001h.
Меня всегда можно найти в Telegram: @mrrvz
-
Выполнение программы. Машинный код. Исполняемые файлы. Язык ассемблера.
-
Виды переходов. Условные, безусловные переходы. Короткий, ближний, дальний переход.
-
Стек. Регистры, связанные со стеком. Команды записи/извлечения из стека.
-
Стек. Использование при вызове подпрограмм. Команды вызоваподпрограммы и возврата.
-
Прерывания. Назначение, виды прерываний. Таблица векторов прерываний.
-
Срабатывание прерывания. Обработчик прерывания в реальном режиме. Возврат из обработчика прерывания.
-
Модели памяти в защищённом режиме. Регистры управления памятью. Страничное преобразование.
-
Математический сопроцессор. Типы данных. Представление вещественных чисел.