Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по МПиМК / Лекция 04.doc
Скачиваний:
160
Добавлен:
15.06.2014
Размер:
415.74 Кб
Скачать

8. Система команд

Система команд 32–разрядных процессоров является существенно расширенной системой команд 8086/80286. Расширения касаются увеличения разрядности адресов и операндов, более гибкой системы адресации, появления принципиально новых типов данных и команд.

Команды содержат одно- или двухбайтный код инструкции, за которым могут следовать несколько байт, определяющих режим исполнения команды и операнды. Команды могут использовать до трех операндов или не использовать ни одного. Результат выполнения записывается в место, предопределенное инструкцией, или (и) в место, заданное операндом назначения. Операнды могут находиться в памяти, регистрах процессора или непосредственно в команде. Для 32–разрядных процессоров разрядность «слова» по умолчанию может составлять 32 бит, а не 16. Это распространяется на многие инструкции, включая и строковые. Перед любой инструкцией может быть использован префикс переключения разрядности адреса или слова. При адресации памяти использование сегментного регистра, предусмотренного командой, в ряде инструкций может подавляться префиксом изменения сегмента. Назначение префиксов приведено в таблице 8.1. Префиксы могут использоваться в любом сочетании (не более одного из каждой группы), их действие распространяется только на одну инструкцию.

Таблица 8.1

Префикс

Назначение

SIZ

Изменение разрядности слова данных (386+)

ADDRSIZ

Изменение разрядности адреса (386+)

CS: SS: DS: ES: FS: GS:

Изменение используемого сегментного регистра (FS: и GS: только для 386+)

LOCK

Захват локальной шины на время выполнения инструкции

REP REPE/REPZ REPNE/REPNZ

Префиксы повтора строковых операций до обнуления CX (CX – декрементируется на каждом повторе)

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

  • reg – 16/32–битный регистр;

  • Sreg – сегментный регистр;

  • mem – 16/32–битная ячейка памяти;

  • r8, r16, r32 – только 8–, 16– или 32–битный регистр;

  • m8, m16, m32, m64 – только 8–, 16–, 32– или 64–битная ячейка памяти, адресуемая регистрами;

  • r/m – 8/16/32–битный регистр или ячейка памяти, адресуемая регистрами процессора;

  • i – непосредственный операнд 8, 16, 32 или 64 бит;

  • i8, i16 – непосредственный операнд 8, 16 бит;

  • r/m/i – 8/16/32–битный регистр или ячейка памяти, адресуемая регистрами процессора, или непосредственный операнд;

  • moffs8, moffs16, moffs32 – 8–, 16– или 32–битная ячейка, адресуемая в команде (не через регистры процессора);

  • ptr16:16, ptr16:32 – операнд–указатель: 16–битный сегмент и 16/32–битное смещение;

  • m16:16, m16:32 – ячейка памяти, содержащая указатель;

  • rel8, rel16, rel32 – смещение короткое (127 байт) или ближнее внутри сегмента кода относительно адреса следующей инструкции;

  • st(i) – регистр стека FPU, смещенный от верхушки на i;

  • m80bcd – упакованное 10–байтное двоично–десятичное число в памяти, используемое FPU;

  • m16int, m32int, m64int – целочисленные значения в памяти, используемое FPU;

  • m32real, m64real, m80real – вещественные числа в памяти, используемые FPU;

  • m94/108byte – образ регистров FPU в памяти, включая стек;

  • m14/28byte – образ состояния FPU в памяти;

  • m16&32 – 6–байтная структура в памяти (GDT – Global Descriptor Table и IDT).

Операнд назначения в списке параметров команды всегда стоит первым, во многих случаях он может одновременно являться и одним из операндов–источников.

Соседние файлы в папке Конспект по МПиМК