Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Использование Турбо Ассемблера /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Директивы выбора процессора - Программирование от RIN.RU
Директивы выбора процессора



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


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


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


Функция: Числовое значение, возвращающее информацию о текущем процессоре.


Замечания: Значение, возвращаемое @Cpu, дает в битовых полях информацию о типе процессора:


БитОписание
0Разрешены инструкции процессора 8086.
1Разрешены инструкции процессора 80186.
2Разрешены инструкции процессора 80286.
3Разрешены инструкции процессора 80386.
4Разрешены инструкции процессора i486.
7Разрешены привилегированные инструкции процессоров (80286, 386, 486).
8Разрешены инструкции математического сопроцессора 8087.
10Разрешены инструкции математического сопроцессора 80287.
11Разрешены инструкции математического сопроцессора 80387.



Не определенные здесь биты зарезервированы для будущего использования. При использовании идентификатора @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
ДирективаЗначение
.287Разрешает ассемблирование всех инструкций арифметического сопроцессора 80287. Используйте данную директиву, если вы знаете, что вам не потребуется запускать программы на машине с сопроцессором 8087. Данная директива приводит к оптимизации инструкций. При этом они становятся несовместимыми с сопроцессором 8087. Поэтому не используйте данную директиву, если ваши программы должны работать на сопроцессоре 8087.
.387Разрешает ассемблирование всех инструкций арифметического сопроцессора 80387. Используйте данную директиву, если вы знаете, что вам не потребуется запускать программы на машине с сопроцессором 8087. Данная директива приводит к оптимизации инструкций. При этом они становятся несовместимыми с сопроцессором 8087. Поэтому не используйте данную директиву, если ваши программы должны работать на сопроцессоре 8087.
.8087Разрешает ассемблирование инструкций арифметического сопроцессора и запрещает все инструкции, доступные для сопроцессоров 80287 и 80387. Этот режим инструкций сопроцессора используется Турбо Ассемблером по умолчанию.
P287Разрешает ассемблирование инструкций арифметического сопроцессора 80287.
P387Разрешает ассемблирование инструкций арифметического сопроцессора 80287.
P8087 Разрешает ассемблирование только инструкций арифметического сопроцессора 8087. В Турбо Ассемблере этот режим назначается по умолчанию.



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


Если вам нужны реальные инструкции с плавающей точкой, то нужно использовать сопроцессор 8087. Если у вас установлен пакет программной эмуляции инструкций с плавающей точкой, то для его использования можно указать директиву EMUL. (Директива EMUL работает аналогично параметру /e).


Примечание: Директивы EMUL и NOEMUL работают как в режиме MASM, так и в режиме Ideal.


Например:


Finit ; реальные инструкции сопроцессора 8087
EMUL
Fsave BUF ; эмулируемая инструкция


При использовании сопроцессора 8087 вы можете либо эмулировать инструкции с плавающей точкой с помощью директивы EMUL, либо принудительно использовать инструкции с плавающей точкой с помощью директивы NOEMUL. Заметим, что вы можете использовать инструкции EMUL и NOEMUL, когда хотите генерировать инструкции с плавающей точкой для одной части файла и эмулируемые инструкции для другой.


Приведем пример использования инструкции NOEMUL:


NOEMUL ; ассемблировать реальные инструкции с плавающей точкой
finit
EMUL ; вернуться к эмуляции


<<<  Назад
 1  2 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Начало работы на Турбо Ассемблере

Использование директив и параметров

Общие принципы программирования

Объектно-ориентированное программирование

Использование выражений и значений идентификаторов

Использование моделей памяти программы и сегментации

Определение типов данных

Задание и использование счетчика адреса

Описание процедур

Управление областью действия идентификаторов

Определение данных

Расширенные инструкции

Использование макрокоманд

Использование условных директив

Интерфейс с компоновщиком

Генерация листинга

Интерфейс Турбо Ассемблера и Borland C++

Интерфейс Турбо Ассемблера с Турбо Паскалем

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь