Опубликован: 05.04.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 7:

Кодирование команд (часть 1)

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

Пример 3.

Операнд a находится в AX, операнд b - в оперативной памяти по прямому адресу 3474h.

Символическая запись команды:

ADD AX,[3474h]

Ее машинное представление:


Пусть перед выполнением команды (AX)=1234, [3474h]=1A, [3475h]=25, (IP)=0012. Напомним, что адрес слова в оперативной памяти - это адрес его младшего байта. Тогда после выполнения команды: (AX)=374E, (IP)=0016.

Пример 4.

Если операнд a находится в оперативной памяти по прямому адресу 3474h, а операнд b представляет собой непосредственный операнд, равный 56B3h, то символическая запись команды имеет вид:

ADD [3474h],56B3h

а ее машинное представление:


При тех же исходных данных, что и в примере 3, результатом операции будет: [3474]=CD, [3475]=7B, (IP)=0018.

Пример 5.

Операнд a находится в слове оперативной памяти, адрес которого хранится в регистре BX, а операнд b - в регистре AX. В этом случае адресация операнда a - регистровая косвенная.

Символическая запись команды:

ADD [BX],AX

Машинное представление:


Если перед выполнением команды (AX)=1234, (BX)=3474, [3474]=D7, [3475]=11, (IP)=0012, то в результате выполнения команды произойдут следующие изменения: [3474]=0B, [3475]=24, (IP)=0014.

Пример 6.

Операнд a находится в AX. Операнд b является элементом массива, первый элемент которого помечен меткой MAS, а положение операнда b в массиве определяется содержимым регистра BX ( рис. 7.1).

Организация доступа к операнду при регистровой относительной адресации

Рис. 7.1. Организация доступа к операнду при регистровой относительной адресации

Символическая запись команды:

ADD AX,MAS[BX]

При ассемблировании программы метке ставится в соответствие смещение относительно начала сегмента. Таким образом, операнд b будет определяться в данном случае с помощью регистровой относительной адресации (суммирование значения смещения и содержимого регистра).

Пусть начало массива MAS имеет смещение в 3000h байтов от начала сегмента DS. Тогда машинный код команды будет иметь вид:


Если перед выполнением команды (AX)=1234, (BX)=0074, [3074]=E6, [3075]=64, (IP)=0102, то результатом будет: (AX)=771A, (IP)=0106.

Если начало массива располагается со смещением 70h байтов от начала сегмента DS, то программа Ассемблера сформирует более короткий машинный код команды:


Если исходное состояние элементов хранения совпадает с предыдущим, за исключением (BX)=3004, то и результат будет таким же, за исключением (IP)=0105.

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Илья Бекиров
Илья Бекиров
Кирилл Кондратьев
Кирилл Кондратьев
Камилла Мурзанова
Камилла Мурзанова
Россия
Сергей Назаров
Сергей Назаров
Россия, Владикавказ, СОГУ им. Хетагурова &#039;16