3.3.6. Директивы задания набора допустимых команд
По умолчанию ассемблеры используют набор команд процессора 8086 и выдают сообщения об ошибках, если выбирается команда, которую этот процессор не поддерживал. Для того чтобы ассемблер разрешил использование команд, появившихся в более новых процессорах, и команд расширений, предлагаются следующие директивы:
а .8086 - используется по умолчанию. Разрешены только команды 8086;
□ .186 - разрешены: команды 80186;
□ .286 и .286с - разрешены непривилегированные команды 80286;
□ .286р - разрешены все команды 80286;
□ .386 и ,386с - разрешены: непривилегированные команды! 80386;
□ .386р - разрешены! все команды 80386;
0.486 и .486с - разрешены! непривилегированные команды 80486;
□ .486р - разрешены! все команды! 80486;
□ .586 и .586с — разрешены непривилегированные команды Р5 (Pentium);
□ .586р - разрешены все команды Р5 (Pentium);
□ .686 - разрешены непривилегированные команды Р6 (Pentium Pro, Pentium II); Q .686p - разрешены все команды Р6 (Pentium Pro, Pentium II);
□ .8087 - разрешены! команды! NPX 8087;
□ .287 - разрешены команды NPX 80287; a .387 - разрешены команды NPX 80387;
□ .487 - разрешены команды FPU 80486; a .587 - разрешены! команды! FPU 80586;
□ .ММХ - разрешены команды IA MM; a .K3D - разрешены команды AMD 3D.
He все ассемблеры поддерживают каждую директиву, например МASM и WASM не поддерживают .487 и .587, так как их действие не отличается от .387. Естественно, ассемблеры, вышедшие до появления последних процессоров и расширений, не в состоянии выполнять соответствующие им команды.
Если присутствует директива .386 или выше, ассемблер WASM всегда определяет все сегменты как при условии, что не указан явно операнд 16. MASM и TASM действуют также, только если директива задания набора команд указана перед директивой .model.