Лекция: Команды языка Ассемблера

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

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

Команда MOV, хоть название ее и происходит от слова «move» (перемещать), на самом деле не перемещает, а копирует значение из источника в приемник:

MOV приемник, источник

Процессоры семейства х86 позволяют использовать в командах только один косвенный аргумент. Следующая команда копирования значения, находящегося по адресу number_one, в область памяти с адресом number_two, недопустима:

mov [number_two],[number_one]; НЕПРАВИЛЬНО!!!

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

mov ax,[number_one]; загружаем в АХ 16-битное

; значение «number_one»

mov [number_two], ах; а затем копируем его в переменную

; «number_two»

Оба операнда команды MOV должны быть одного размера: например, для копирования значения BL в регистр АХ мы должны «расширить диапазон», то есть скопировать весь ВХ в АХ, а затем загрузить 0 в АХ:

mov ах,bх; загружаем ВХ в АХ

mov ah,0; «сбрасываем» верхнюю часть

; АХ – записываем в нее 0

Можно поступить и наоборот: сначала сбросить весь АХ, а затем загрузить BL в младшую часть АХ (AL):

mov ах,0; АН = 0, AL = 0

mov al,bl; заносим в AL значение BL

Точно так же можно скопировать 16-битное значение в 32-битный регистр.

В официальной документации приведены все допустимые форматы команды MOV:


MOV r/m8,reg8

MOV r/m16,regl6

MOV r/m32,reg32

MOV reg8,r/m8

MOV reg16,r/ml6

MOV reg32,r/m32

MOV reg8,imm8

MOV reg16,imml6

MOV reg32,imm32

MOV r/m8,imm8

MOV r/m16,imml6

MOV r/m32,imm32


 

8.2. Логические команды языка Ассемблера

К логическим операциям относятся: логическое умножение (И, AND), логическое сложение (ИЛИ, OR), исключающее ИЛИ (XOR) и отрицание (NOT). Все эти инструкции изменяют регистр признаков.

еще рефераты
Еще работы по информатике