Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КС-ZAO / Лекции ЦЭВМруский вариант11.doc
Скачиваний:
188
Добавлен:
07.02.2016
Размер:
15.82 Mб
Скачать

Расширенные инструкции

В процессор 80386 не только добавлены новые мощные инструкции по сравнению с набором инструкций процессором 8086/80186/80286, но также расширены имеющиеся инструкции. Это следующие инструкции:

CMPS JC JNAE JNLE JPO OUTS

IMUL JCXZ JNB JNO JS POPA

INS JE JNBE JNP JZ POPF

IRET JG JNC JNS LODS PUSHA

JA JGE JNE JNZ LOOP PUSHF

JAE JL JNG JO MOV SCAS

JB JLE JNGE JP MOVS STOS

JBE JNA JNL JPE

Кроме того, в процессоре 80386 многие инструкции могут работать с 32-разрядными операндами, хотя их мнемоника явно не изменилась.

Специальные версии инструкции mov

Процессор 80386 поддерживает специальные формы инструкции MOV, которые позволяют программе, работающей на уровень привилегий 0 (уровень с максимальными полномочиями) перемещать данные между 32-разрядными общими регистрами и специальными регистрами процессора 80386. Таким способом можно обращаться к следующим регистрам процессора 80386:

CR0 DR0 DR3 TR6

CR2 DR1 DR6 TR7

CR3 DR2 DR7

32-разрядные версии инструкций процессора 8086

Многие инструкции процессора 8086 расширены таким образом, чтобы можно было использовать новые возможности адресации и новые операнды процессора 80386. Следующая инструкция выполняет 32-разрядное вычитание 32-битового регистра EBX из 32-битовой переменной по адресу EBP+EAX*8+10h. При этом для ссылки на целевую ячейку памяти используются 32-разрядные регистры: sub DWORD PTR [ebp+eax*8+10h],ebx

Новые версии инструкций loop и jcxz

Инструкции LOOP, LOOPE, LOOPNE и JCXZ работают обычно с 16-разрядным регистром CX. Процессор 8086 предусматривает как 16- разрядную, так и 32-разрядную версию этих инструкций. 32-разрядные версии вместо регистра CX могут работать с регистром ECX.

Инструкции LOOP, LOOPE и LOOPNE используют в качестве счетчика цикла регистр CX или ECX, в зависимости от типа сегмента (16 -битового или 32-битового). Если вы хотите обеспечить, чтобы в качестве регистра управления циклом всегда используется регистр CX (даже в 32-битовом сегменте), то используйте словную форму данных инструкций (LOOPW, LOOPWE или LOOPWNE). Аналогично, если нужно обеспечить использование в качестве управляющего циклом регистра регистр ECX, используйте следующие формы инструкций: LOOPD, LOOPDE и LOOPDNE.

Инструкция LOOPD уменьшает содержимое ECX и выполняет переход по указанному смещению, если возвращаемое значение отлично от нуля.

Инструкция LOOPDE уменьшает содержимое ECX и выполняет переход на целевое смещение, пока флаг нуля равен 1, а ECX не равен 0. (LOOPDZ - это еще одна форма той же инструкции.) Аналогично, инструкция LOOPDNE уменьшает значение ECX и переходит по целевому смещению, пока флаг нуля равен 0, а ECX не равен 0. (LOOPDNZ - это эквивалентная инструкция.)

Новые версии строковых инструкций

В процессоре 80386 все строковые инструкции могут работать с байтами, словами или двойными словами. Версии этих инструкций, работающие с двойными словами, просто заканчиваются буквой D, а не буквами W или B. Это следующие инструкции:

CMPSD MOVSD SCASD

INSD OUTSD STOSD

LODSD

Каждая из этих инструкций работает сразу с 32 битами данных и увеличивает или уменьшает при каждом повторении соответствующий регистр-указатель на 4.

Соседние файлы в папке КС-ZAO