Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП_2007.doc
Скачиваний:
3
Добавлен:
16.09.2019
Размер:
1.02 Mб
Скачать

Команда mov

MOV Пересылка данных.

Команда MOV пересылает операнд-источник по адресу приемника. Команду MOV можно использовать для пересылок вида:

- непосредственные данные в память;

- непосредственные данные в регистр;

- между регистрами общего назначения;

- из памяти в регистр;

- из регистра в память.

Команда МOV не может пересылать данные из память в память или из одного регистра сегмента а другой.

Команды MOV используются для загрузки и выгрузки специальных регистров и регистров общего назначения. Они предназначены для работы с регистрами управления (CR0, CR2, CR3), тестирования (TR6, TR7) и отладки (DR0, DR1, DR2, DR3, DR6, DR7).

Команда XCHG

Команда XCHG выполняет обмен содержимым двух операндов и заменяет три команды MOV. Команда не нуждается во вспомогательной ячейке для сохранения одного из операндов при загрузке другого.

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

Исключения реального режима

Те же, что и для инструкции АDD.

Исключения защищенного режима

Те же, что и для инструкции АDD.

Команда JMP

JMP Переход

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

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

- для выбора адреса приемника регистр модифицирует адрес указателя памяти;

- в программе осуществляется переход на ячейку, определяемую регистром общего назначения (EAX, EDX, ECS, EBP, ESI, EDI) – МП 80386 загружает это 32-разрядное значение в регистр EIP и возобновляет выполнение;

- МП 80386 получает адрес приемника из ячейки памяти, адрес указан в команде.

Команды условных переходов:

JA/JNBE Выше, не ниже и не равно

JAE/JNB Выше или равно, не ниже

JB/JNAE Ниже, не выше и не равно

JBE/JNA Ниже или равно, не выше

JC Перенос

JE/JZ Равно, нуль

JNC Отсутствие переноса

JNE/JNZ Не равно, не нуль

JNP/JPO Отсутствие четности, нечетность

JP/JPE Четность

JG/JNLE Больше, не меньше и не равно

JGE/JNL Больше или равно, не меньше

JL/JNGE Меньше, не больше и не равно

JLE/JNG Меньше или равно, не больше

JNO Отсутствие переполнения

JNS Отсутствие знака (положительно, включая нуль)

JO Переполнение

JS Знак (отрицательно)

JMP внутри сегмента текущего кода модифицирует указатель команды для того, чтобы начать выполнение нового офсета. Когда JMP выполняется внутри сегмента текущего кода, регистр сегмента кода не задействован. Когда межсегментный JMP возникает в реальном режиме или в режиме виртуальном 8086, указатель команды и регистр сегмента кода оба заменяются величинами операнда, чтобы начать выполнение в подпрограмме. Когда JMP имеет место в защищенном режиме, действия, выполняемые 80386, могут быть довольно сложными, согласно одному из состояний селектора приемника:

1.сегмент кода находится на текущем уровне привилегии (DPL=CPL),

2.сегмент согласованного кода находится на более привилегированном уровне (DPL < CPL),

3.переключатель вызова,

4.сегмент состояния задачи или

5.переключатель задачи.

Команда JC/JNC

Команды условного перехода, при наличии переноса.