Добавить в корзинуПозвонить
Найти в Дзене

Управление памятью в микропроцессорах семейства 80х86.

Физический адрес. Для того чтобы микропроцессор мог получить доступ к любой области памяти в диапазоне 1MB, он должен поместить адрес этой области в 20-битный формат. Для этого микропроцессор выполняет операцию, известную как вычисление реального или физического адреса. Эта операция принимает содержимое двух 16-битных регистров и получает 20-битный адрес. Микропроцессор использует следующую формулу: Физический Dir = Сегмент Dir * 10h + Смещение Dir. Например: если микропроцессор хочет получить доступ к переменной X, хранящейся в памяти, ему необходимо знать ее направление смещения. Сегментный адрес переменных указан в регистре DS. Для этого случая предположим, что X имеет смещение 0100h внутри сегмента данных, а DS имеет адрес 1000h, физический адрес переменной X внутри пространства 1Mb будет равен: Физический Dir = 1000h * 10h +0100h * 10h +0100h Дир. физика = 10000h + 0100h Физический адрес = 10100h (адрес в 20-битном формате). Эффективное направление (перемещение). Эффективный адре
 https://unsplash.com/photos/MaDXpqp1vM0
https://unsplash.com/photos/MaDXpqp1vM0

Физический адрес.

Для того чтобы микропроцессор мог получить доступ к любой области памяти в диапазоне 1MB, он должен поместить адрес этой области в 20-битный формат.

Для этого микропроцессор выполняет операцию, известную как вычисление реального или физического адреса. Эта операция принимает содержимое двух 16-битных регистров и получает 20-битный адрес. Микропроцессор использует следующую формулу:

Физический Dir = Сегмент Dir * 10h + Смещение Dir.

Например: если микропроцессор хочет получить доступ к переменной X, хранящейся в памяти, ему необходимо знать ее направление смещения.

Сегментный адрес переменных указан в регистре DS. Для этого случая предположим, что X имеет смещение 0100h внутри сегмента данных, а DS имеет адрес 1000h, физический адрес переменной X внутри пространства 1Mb будет равен:

Физический Dir = 1000h * 10h +0100h * 10h +0100h

Дир. физика = 10000h + 0100h

Физический адрес = 10100h (адрес в 20-битном формате).

Эффективное направление (перемещение).

Эффективный адрес (смещение) восстанавливается по адресу области памяти относительно начального адреса сегмента.

Эффективные адреса могут принимать значения только между 0000h и FFFFh, потому что сегменты ограничены объемом памяти 64 Kb. В предыдущем примере реальный адрес переменной X был 10100h, а ее эффективный адрес или адрес перемещения был 100h по отношению к сегменту данных, который начинается с адреса 10000h.

Маршрутизация данных.

В большинстве инструкций по языку ассемблера даются ссылки на данные, которые хранятся на различных носителях, например, регистры, области памяти, переменные и т.д.

Для того чтобы микропроцессор правильно выполнял инструкции и достигал ожидаемых результатов, необходимо указывать источник или происхождение данных, с которыми он собирается работать, что называется маршрутизацией данных.

В микропроцессорах 80x86 есть четыре способа указания источника данных и они называются режимами адресации. Для объяснения этих четырех режимов мы возьмем в качестве примера наиболее часто используемую инструкцию в сборочных программах - инструкцию MOV.

Команда MOV позволяет передавать (копировать) информацию между двумя операндами; этими операндами могут быть регистры, переменные или прямые данные, размещенные программистом.

Формат команды MOV выглядит следующим образом:

· Оператор переезда 1.

· Оператор переезда 2.

Данная инструкция копирует содержание Операции 2 в Операцию 1.

Прямой адрес.

Этот режим называется прямым, поскольку второй операнд указывает направление движения, в котором находятся исходные данные.

Пример:

· Перемещение AX, [1000h] ;

· Копии в AX, которые хранятся в ;

· DS:1000h

Немедленное обращение.

В этом режиме данные предоставляются непосредственно в рамках функции инструктаж.

Пример.

· Перемещение AX,34h ;

· Копии в AX число 34h шестнадцатеричное число

· Перемещение CX,10 ;

· Скопируйте в CX число 10 в десятичную дробь

Адрес по регистру.

В этом режиме адресации вторым операндом является регистр, который содержит данные, с помощью которых микропроцессор будет выполнять команду инструкции.

Пример.

· Перемещает AX,BX ;

· Копирует в AX содержимое записи BX;

· Копирует в AX содержимое записи BX

Косвенное обращение путем регистрации.

Наконец, в непрямом режиме по регистру, второй операнд имеет вид запись, содержащая адрес прокрутки, соответствующий данным для команды.

Пример.

· Перемещает AX, [BX] ;

· Копирует в AX данные, расположенные в области ;

· DS памяти:[BX];

· Копирует в AX данные, расположенные в области ;

· DS памяти:[BX].

Квадратные скобки используются для указания ассемблеру, что номер связан не с данными, а с местом в памяти.

 https://unsplash.com/photos/GztZ77a0tAM
https://unsplash.com/photos/GztZ77a0tAM