Система команд микропроцессоров с архитектурой IA32 довольно таки обширна, поэтому рассмотрим только несколько базовых команд, поддерживаемых всеми процессорами семейства х86.
Команды пересылки данных
MOV <приемник>,<источник> – Пересылка данных.Команда mov замещает первый операнд (приемник) вторым (источником). При этом исходное значение первого операнда теряется. Второй операнд не изменяется. В зависимости от описания операндов, пересылается слово или байт. Если операнды описаны по-разному или режим адресации не позволяет однозначно определить размер операнда, для уточнения размера передаваемых данных в команду следует включить один из атрибутных операторов byte ptr или word ptr. Команда не воздействует на флаги процессора. В зависимости от используемых режимов адресации, команда mov может осуществлять пересылки следующих видов:
1. из регистра общего назначения в регистр общего назначения;
2. из регистра общего назначения в ячейку памяти;
3. из регистра общего назначения в сегментные регистры DS, ES и SS;
|
|
4. из ячейки памяти в регистр общего назначения;
5. из ячейки памяти в сегментный регистр;
6. из сегментного регистра в регистр общего назначения;
7. из сегментного регистра в ячейку памяти;
8. непосредственный операнд в регистр общего назначения;
9. непосредственный операнд в ячейку памяти.
Запрещены пересылки из ячейки памяти в ячейку памяти (для этого предусмотрена команда movs), а также загрузка сегментного регистра непосредственным значением, которое, таким образом, приходится загружать через регистр общего назначения:
mov AX, data; где data — имя сегмента (в данном случае сегмента данных)
mov DS,AX;Загрузка его в регистр DS
Нельзя также непосредственно переслать содержимое одного сегментного регистра в другой. Такого рода операции удобно выполнять с использованием стека:
Push DS
Pop ES
MOVS – Пересылка данных из строки в строку
MOVSB – Пересылка байта данных из строки в строку
MOVSW – Пересылка слова данных из строки в строку
Команды предназначены для операций над строками (строкой называется последовательность байтов или слов памяти с любым содержимым). Они пересылают по одному элементу строки, который может быть байтом или словом. Первый операнд (приемник) адресуется через ES:DI, второй (источник) – через DS:SI. Операцию пересылки можно условно изобразить следующим образом:
(DS:SI) -> (ES:DI)
После каждой операции пересылки регистры SI и DI получают положительное (если флаг DF=0) или отрицательное (если флаг DF=1) приращение. Величина приращения составляет 1 или 2 в зависимости от размера пересылаемых элементов. Вариант команды movs имеет формат: