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.





Начало  Назад  Вперед