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.