Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

- если 1-ый операнд содержит косвенный адрес, то 2-ой операнд ссылается на регистр или непосредственное значение;




- если 1-ый операнд содержит косвенный адрес, то 2-ой операнд ссылается на регистр или непосредственное значение;

- если 2-ой операнд содержит косвенный адрес, то 1-ый операнд ссылается на регистр.

(Подумайте, почему оба операнда не могут содержать косвенные адреса? )

Существует 2 варианта косвенной адресации ячеек ОП:

- косвенная обычная, когда исполнительных адрес находится в регистре, например:

    MOV     AX, [BX].

Исполнительный адрес операнда может находиться в базовом регистре BX, регистре указателя базы BP или индексном регистре SI или DI. Косвенный регистровый операнд заключается в квадратные скобки, что означает ”в качестве адреса брать содержимое того адреса, на который указывает заключенный в квадратные скобки регистр”. Чтобы адрес-смещение переменной мог оказаться в РОН, используется команда пересылки следующего вида:

              MOV     BX, offset SOURCE.

Функции этой команды заключаются в том, что смещение (offset) ячейки памяти с именем SOURCE помещается в РОН ВХ. Естественно, в программе эта команда должна предшествовать команде пересылки с косвенной адресацией.

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

Так, командами

              MOV     BX, offset SOURCE

M1:        MOV     AX, [BX]

    INC       BX

    INC       BX

возвращаясь в цикле на метку М1 можно организовать последовательную пересылку в регистр АХ всех элементов массива SOURCE.

Еще пример. Пусть в сегменте данных описан вектор TABL DB    12, 15, 16, 10, 8, 2, 5, 0.

Ниже первая команда загружает адрес вектора TABL в базовый регистр ВХ, а следующая команда заменяет первый байт в векторе на нулевое значение:

    MOV     BX, OFFSET TABL

    MOV     BYTE PTR [BX], 0

после выполнения этих программных инструкций содержимое вектора будет:     TABL    DB 0, 15, 16, 10, 8, 2, 5, 0.

 

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

             MOV     AX, [BX+SII].

Смешанная непосредственная адресация ячеек памяти имеет несколько вариантов:

- непосредственная обычная:

              MOV     AX, offset pole.

Здесь в качестве непосредственного операнда берется смещение адреса переменной pole;

- непосредственная с индексированием, когда в качестве исполнительного адреса операнда берется сумма значений индексного регистра и непосредственного смещения:

                   MOV     AX, [SI+const],

причем смещение, обозначенное const, может быть задано числом, идентификатором константы, смещением адреса переменной (offset), или их комбинацией в виде простого выражения;

- непосредственная с базированием, в которой, в отличие от предыдущей адресации, фигурирует базовый, а не индексный регистр:

MOV              AX, [BX+const].

Форма записи смещения относительно базы может быть любой из 3-ех нижеприведенных:

              MOV     AX, [BX]+4,

              MOV     AX, 4[BX],

              MOV     AX, [BX+4].

Это примечание относится и к форме записи команд с индексированием (предыдущий вид адресации);

- непосредственная с базированием и индексированием отличается тем, что для вычисления исполнительного адреса берется сумма базового и индексного регистра, к которым добавляется непосредственно фигурирующее в команде смещение:

MOV              AX, pole[BX+SI+const].

Адресация с базированием и индексированием очень полезна при работе с двумерными массивами и таблицами. В ней исполнительный адрес вычисляется как сумма значений базового регистра, индексного регистра и (возможно) сдвига. В случае двумерного массива базовый адрес может содержать начальный адрес массива, а значения сдвига и индексного регистра могут содержать смещения по строке и столбцу. Допустимыми форматами команд являются следующие записи:

              MOV     AX, [BX+2+DI],

              MOV     AX, [DI+BX+2]

              MOV     AX, [BX+2][DI]

              MOV     AX, [BX+2+DI]

              MOV     AX, [BX][DI+2]

              MOV     AX, NUMBER [BP][SI].

 

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

1. В следующей команде найдите ошибку и предложите способ ее исправления:

MOV     [SI], [BX]

2. Объясните, почему ассемблер выдает ошибку в команде

MOV     [BX], 25?

Исправьте ошибку.

3. В нижеприведенной таблице укажите в пустом столбце, какой режим адресации используется в командах.

Команда Режим адресации
LEA BX, TABL  
MOV DI, 4  
MOV CL, [BX]  
MOV DL, [BX+3]  
MOV AL, [BX+DI]  
MOV CH, 2[BX+DI]  

4. Какой смысл имеют квадратные скобки в командах ассемблера?

 

 

Тема 2. 3 Основные команды простых программ на Ассемблере

1. Общие сведения

 2. Команды пересылки данных

3. Команды манипулирования битами

4. Команды сдвига

1. Общие сведения

Изучаемый микропроцессор имеет 92 типа команд, которые приведены в таблице 1. Из нее видно, что некоторые команды имеют не 1, а несколько мнемокодов. В таблице команды перечислены в алфавитном порядке, что не очень приемлемо для их изучения. Удобнее для изучения команд представить их как совокупность групп команд, выполняющих похожие функции. С этой целью можно разделить систему команд на 7 функциональных групп:

1. Команды пересылки данных, осуществляющие обмен информацией.

2. Арифметические команды, выполняющие арифметические операции над числами со знаком и без знака.

3. Команды манипулирования битами выполняющие логические операции и сдвиги содержимого регистров и ячеек памяти.

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

5. Команды обработки строк для перемещения, сравнения и сканирования символьных данных.

6. Команды прерывания, вызывающие обработку микропроцессором некоторых специфических ситуаций.

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...