Assembler - язык неограниченных возможностей

         

Директивы задания набора допустимых команд


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

.8086 — используется по умолчанию. Разрешены только команды 8086;

.186 — разрешены команды 80186;

.286 и .286c — разрешены непривилегированные команды 80286;

.286p — разрешены все команды 80286;

.386 и .386c — разрешены непривилегированные команды 80386;

.386p — разрешены все команды 80386;

.486 и .486c — разрешены непривилегированные команды 80486;

.486p — разрешены все команды 80486;

.586 и .586c — разрешены непривилегированные команды P5 (Pentium);

.586p — разрешены все команды P5 (Pentium);

.686 — разрешены непривилегированные команды P6 (Pentium Pro, Pentium II);

.686p — разрешены все команды P6 (Pentium Pro, Pentium II);

.8087 — разрешены команды NPX 8087;

.287 — разрешены команды NPX 80287;

.387 — разрешены команды NPX 80387;

.487 — разрешены команды FPU 80486;

.587 — разрешены команды FPU 80586;

.MMX — разрешены команды IA MMX;

.K3D — разрешены команды AMD 3D.

Не все ассемблеры поддерживают каждую директиву, например MASM и WASM не поддерживают .487 и .587, так как их действие не отличается от .387. Естественно, ассемблеры, вышедшие до появления последних процессоров и расширений, не в состоянии выполнять соответствующие им команды.

Если присутствует директива .386 или выше, ассемблер WASM всегда определяет все сегменты как 32-битные при условии, что не указан явно операнд USE16. MASM и TASM действуют так же, только если директива задания набора команд указана перед директивой .model.



Содержание раздела