Система команд микропроцессоров с архитектурой IA32

Система команд микропроцессоров с архитектурой 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 имеет формат:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: