По умолчанию ассемблеры используют набор команд процессора 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.