Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Глава 6. Директивы выбора процессора и идентификаторы процессора

          Процессор 8086 представляет собой на самом деле  только один
     из процессоров семейства iAPx86. Это семейство включает в себя:

          - процессор 8088 (который содержит 8-разрядную шину данных),
            8086 (содержит 16-разрядную шину данных);

          - процессоры 80186 и 80188 (аналогичны  процессорам  8086  и
            8088,  но  содержат  дополнительные  инструкции и работают
            быстрее своих предшественников);

          - процессор 80286 (который содержит  инструкции  защищенного
            режима);

          - процессор  80386 (который может обрабатывать 16- и 32-раз-
            рядные данные);

          - процессор 80486 (улучшенная версия процессора 80386, кото-
            рая отличается более высокой скоростью работы).

          Математические сопроцессоры,  такие как 8087, 80287 и 80387,
     работающие с процессорами семейства iAPx86,  позволяют  выполнять
     операции с плавающей точкой.

          В Турбо  Ассемблере предусмотрены директивы и предопределен-
     ные идентификаторы, которые позволяют вам использовать инструкции
     конкретного процессора. Эти директивы и идентификаторы описывают-
     ся в данной главе.


Директивы процессоров iAPx86

Процессоры семейства iAPx86 предусматривают использование множества директив. Заметим, что директивы, начинающиеся с точки, доступны только в режиме MASM. Примечание: Список инструкций, допустимых для конкрет- ных процессоров, можно найти в Главе 1. Директивы выбора процессоров iAPx86 Таблица 6.1 -----------------T----------------------------------------------¬ ¦ Директива ¦ Значение ¦ +----------------+----------------------------------------------+ ¦ P8086 ¦ Разрешает ассемблирование только инструкций ¦ ¦ ¦ процессора 8086. ¦ ¦ ¦ ¦ ¦ .8086 ¦ Разрешает ассемблирование инструкций проце- ¦ ¦ ¦ ссора 8086 и запрещает все инструкции, дос- ¦ ¦ ¦ тупные только на процессорах 80186, 80286 и ¦ ¦ ¦ 386. Разрешает также ассемблирование инст- ¦ ¦ ¦ рукций сопроцессора 8087, так же как инст- ¦ ¦ ¦ рукции .8087 или 8087. ¦ ¦ ¦ ¦ ¦ P186 ¦ Разрешает ассемблирования инструкций про- ¦ ¦ ¦ цессора 80186. ¦ ¦ ¦ ¦ ¦ .186 ¦ Разрешает ассемблирования инструкций про- ¦ ¦ ¦ цессора 80186. ¦ ¦ ¦ ¦ ¦ P286 ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ процессора 80286. ¦ ¦ ¦ ¦ ¦ P286N ¦ Разрешает ассемблирование непривилегирован- ¦ ¦ ¦ ных (реальный режим) инструкций процессора ¦ ¦ ¦ 80286 и инструкций арифметического сопро- ¦ ¦ ¦ цессора 80287. ¦ ¦ ¦ ¦ ¦ P286P ¦ Разрешает ассемблирование всех (включая ¦ ¦ ¦ защищенный режим) инструкций процессора ¦ ¦ ¦ 80286 и инструкций арифметического сопро- ¦ ¦ ¦ цессора 80287. ¦ ¦ ¦ ¦ ¦ .286 ¦ Разрешает ассемблирование непривилегирован- ¦ ¦ ¦ ных инструкций процессора 80286 (реальный ¦ ¦ ¦ режим) и инструкций арифметического сопро- ¦ ¦ ¦ цессора 80287, так же как директива P287. ¦ ¦ ¦ ¦ ¦ .286C ¦ Разрешает ассемблирование непривилегирован- ¦ ¦ ¦ ных инструкций процессора 80286 (реальный ¦ ¦ ¦ режим) и инструкций арифметического сопро- ¦ ¦ ¦ цессора 80287. ¦ ¦ ¦ ¦ ¦ .286P ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ процессора 80286 (включая защищенный режим) ¦ ¦ ¦ и инструкций арифметического сопроцессора ¦ ¦ ¦ 80287, как директивы .287 или .P287. ¦ ¦ ¦ ¦ ¦ P386 ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ процессора 386. ¦ ¦ ¦ ¦ ¦ P386N ¦ Разрешает ассемблирование непривилегирован- ¦ ¦ ¦ ных (реальный режим) инструкций процессора ¦ ¦ ¦ 386. ¦ ¦ ¦ ¦ ¦ P386P ¦ Разрешает ассемблирование всех (включая за- ¦ ¦ ¦ щищенный режим) инструкций процессора 386. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ .386 ¦ Разрешает ассемблирование непривилегирован- ¦ ¦ ¦ ных инструкций процессора 80386 (реальный ¦ ¦ ¦ режим), включая все дополнительные инструк- ¦ ¦ ¦ ции, и инструкций арифметического сопроцес- ¦ ¦ ¦ сора 80387е, как директивы .387 и P387. ¦ ¦ ¦ ¦ ¦ .386C ¦ Разрешает ассемблирование инструкций проце- ¦ ¦ ¦ ссора 80386. ¦ ¦ ¦ ¦ ¦ .386P ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ процессора 80386 (включая защищенный режим) ¦ ¦ ¦ и инструкций арифметического сопроцессора ¦ ¦ ¦ 80387, как директивы .387 и P387. ¦ ¦ ¦ ¦ ¦ P486 ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ процессора i486 (включая защищенный режим). ¦ ¦ ¦ ¦ ¦ P486N ¦ Разрешает ассемблирование непривилегирован- ¦ ¦ ¦ ных инструкций процессора i486 (реальный ¦ ¦ ¦ режим). ¦ ¦ ¦ ¦ ¦ .486 ¦ Pазрешает ассемблирование дополнительных ¦ ¦ ¦ инструкций процессора, поддерживаемых ¦ ¦ ¦ процессором 80486 в непривилегированном ре- ¦ ¦ ¦ жиме. Разрешает также инструкции сопроцес- ¦ ¦ ¦ сора 3867, как директивы .387 и P387. ¦ ¦ ¦ ¦ ¦ .486C ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ процессора i486. ¦ ¦ ¦ ¦ ¦ .486P ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ процессора 80486 (включая защищенный режим) ¦ ¦ ¦ и инструкций арифметического сопроцессора ¦ ¦ ¦ 80487, как директивы .487 и P487. ¦ L----------------+-----------------------------------------------

Предопределенные идентификаторы

Два предопределенных идентификатора @Cpu и @WordSize позволяют вам получить информацию о типе используемого процессора или размере текущего сегмента. Приведем описание этих идентифика- торов.

Идентификатор @Cpu

Функция: Числовое значение, возвращающее информацию о теку- щем процессоре. Замечания: Значение, возвращаемое @Cpu, дает в битовых полях информацию о типе процессора: ------------T--------------------------------------¬ ¦ Бит ¦ Описание ¦ +-----------+--------------------------------------+ ¦ 0 ¦ Разрешены инструкции процессора ¦ ¦ ¦ 8086. ¦ ¦ ¦ ¦ ¦ 1 ¦ Разрешены инструкции процессора ¦ ¦ ¦ 80186. ¦ ¦ ¦ ¦ ¦ 2 ¦ Разрешены инструкции процессора ¦ ¦ ¦ 80286. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 3 ¦ Разрешены инструкции процессора ¦ ¦ ¦ 80386. ¦ ¦ ¦ ¦ ¦ 4 ¦ Разрешены инструкции процессора ¦ ¦ ¦ i486. ¦ ¦ ¦ ¦ ¦ 7 ¦ Разрешены привилегированные ¦ ¦ ¦ инструкции процессоров (80286, ¦ ¦ ¦ 386, 486). ¦ ¦ ¦ ¦ ¦ 8 ¦ Разрешены инструкции математи- ¦ ¦ ¦ ческого сопроцессора 8087. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 10 ¦ Разрешены инструкции математи- ¦ ¦ ¦ ческого сопроцессора 80287. ¦ ¦ ¦ ¦ ¦ 11 ¦ Разрешены инструкции математи- ¦ ¦ ¦ ческого сопроцессора 80387. ¦ L-----------+--------------------------------------- Не определенные здесь биты зарезервированы для будущего ис- пользования. При использовании идентификатора @Cpu замаскируйте их, это обеспечит совместимость вашей программы с будущими верси- ями Турбо Ассемблера. Так как семейство процессоров 8086 совместимо снизу-вверх, то когда вы разрешаете тип процессора по директиве .286, автома- тически разрешаются также младшие типы сопроцессоров (8086, 80186). Это значение только предоставляет информацию о процессоре, который вы выбрали на этапе ассемблирования с помощью .286 или аналогичных директив. Тип процессора, на котором выполняется ваша программа, не указывается. Пример: IPUSH = @Cpu AND 2 ; разрешает непосредственную ; инструкцию push процессора ; 186 и старше IF IPUSH PUSH 1234 ELSE mov ax,1234 push ax ENDIF

Идентификатор @WordSize

Функция: Числовое значение, указывающее 16- или 32-разрядные сегменты. Примечания: @WordSize возвращает значение 2, если текущим сегментом является 16-разрядный сегмент, и 4, если это 32-разряд- ный сегмент. Пример: IF @WordSize EQ 4 mov esp,0100h ELSE mov sp,0100h ENDIF

Директивы сопроцессора 8087

Имеющиеся директивы задания сопроцессора перечислены в сле- дующей таблице. Заметим, что директивы, начинающиеся с точки, доступны только в режиме MASM. Директивы сопроцессора 8087 Таблица 6.2 -----------------T----------------------------------------------¬ ¦ Директива ¦ Значение ¦ +----------------+----------------------------------------------+ ¦ .287 ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ арифметического сопроцессора 80287. Исполь- ¦ ¦ ¦ зуйте данную директиву, если вы знаете, что ¦ ¦ ¦ вам не потребуется запускать программы на ¦ ¦ ¦ машине с сопроцессором 8087. Данная дирек- ¦ ¦ ¦ тива приводит к оптимизации инструкций. При ¦ ¦ ¦ этом они становятся несовместимыми с сопро- ¦ ¦ ¦ цессором 8087. Поэтому не используйте дан- ¦ ¦ ¦ ную директиву, если ваши программы должны ¦ ¦ ¦ работать на сопроцессоре 8087. ¦ ¦ ¦ ¦ ¦ .387 ¦ Разрешает ассемблирование всех инструкций ¦ ¦ ¦ арифметического сопроцессора 80387. Исполь- ¦ ¦ ¦ зуйте данную директиву, если вы знаете, что ¦ ¦ ¦ вам не потребуется запускать программы на ¦ ¦ ¦ машине с сопроцессором 8087. Данная дирек- ¦ ¦ ¦ тива приводит к оптимизации инструкций. При ¦ ¦ ¦ этом они становятся несовместимыми с сопро- ¦ ¦ ¦ цессором 8087. Поэтому не используйте дан- ¦ ¦ ¦ ную директиву, если ваши программы должны ¦ ¦ ¦ работать на сопроцессоре 8087. ¦ ¦ ¦ ¦ ¦ .8087 ¦ Разрешает ассемблирование инструкций ариф- ¦ ¦ ¦ метического сопроцессора и запрещает все ¦ ¦ ¦ инструкции, доступные для сопроцессоров ¦ ¦ ¦ 80287 и 80387. Этот режим инструкций сопро- ¦ ¦ ¦ цессора используется Турбо Ассемблером по ¦ ¦ ¦ умолчанию. ¦ ¦ ¦ ¦ ¦ P287 ¦ Разрешает ассемблирование инструкций ариф- ¦ ¦ ¦ метического сопроцессора 80287. ¦ ¦ ¦ ¦ ¦ P387 ¦ Разрешает ассемблирование инструкций ариф- ¦ ¦ ¦ метического сопроцессора 80287. ¦ ¦ ¦ ¦ ¦ P8087 ¦ Разрешает ассемблирование только инструк- ¦ ¦ ¦ ций арифметического сопроцессора 8087. В ¦ ¦ ¦ Турбо Ассемблере этот режим назначается по ¦ ¦ ¦ умолчанию. ¦ L----------------+-----------------------------------------------

Директивы эмуляции сопроцессора

Если вам нужны реальные инструкции с плавающей точкой, то нужно использовать сопроцессор 8087. Если у вас установлен пакет программной эмуляции инструкций с плавающей точкой, то для его использования можно указать директиву EMUL. (Директива EMUL рабо- тает аналогично параметру /e). Примечание: Директивы EMUL и NOEMUL работают как в ре- жиме MASM, так и в режиме Ideal. Например: Finit ; реальные инструкции сопроцессора ; 8087 EMUL Fsave BUF ; эмулируемая инструкция При использовании сопроцессора 8087 вы можете либо эмулиро- вать инструкции с плавающей точкой с помощью директивы EMUL, либо принудительно использовать инструкции с плавающей точкой с по- мощью директивы NOEMUL. Заметим, что вы можете использовать инс- трукции EMUL и NOEMUL, когда хотите генерировать инструкции с плавающей точкой для одной части файла и эмулируемые инструкции для другой. Приведем пример использования инструкции NOEMUL: NOEMUL ; ассемблировать реальные инструкции ; с плавающей точкой finit EMUL ; вернуться к эмуляции
                       Назад | Содержание | Вперед

 

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...