Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Директива .8086

Вопрос:
В начале некоторых программ стоит .8086, а для чего? ведь по умолчанию процессор и так работает как .8086.

Ответ:
Посмотрите линейку Процессоров Intel. Они все совместимы снизу вверх, т.е. более позние версии поддерживают более ранние и программное обеспичение написанное для 16-битных могло работать на 32-х битных, это о Вашей фразе ведь по умолчанию процессор и так работает как .8086 он запускается в этом режиме, а потом переводится в защищенный, но как говорится в Одессе, это две большие разницы. Такая директива появилась в компиляторах, после введения новых линеек процессоров 186,286,386 и т.д. . Компиляторы написанные под новые наборы команд и поддерживающие новые процессоры могли компилировать программы под х86-е, но чтобы программисту не следить за тем какие команды принадлежат нужному процессору ввели такую директиву, которая функцию слежения возлагала на сам компилятор. Попробуйте написать программу в режиме .086 и использовать команду 186-го процессора pushf или pusha к примеру. Но если вместо этих команд записать их опкоды, то компилятор в этом режиме их пропустит, т.к. считает их за данные, а не команду.
mov	ax,bx
db	60;опкод команды pusha
mov	bx,ax

   Вперёд
   Содержание