Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Приложения /
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
Вопросы совместимости




Турбо Ассемблер в режиме MASM в высокой степени совместим с ассемблером MASM версии 5.2. Однако стопроцентная совместимость - это идеал, к которому можно только стремиться, т.к. формальная спецификация языка отсутствует, и даже различные версии MASM не полностью совместимы друг с другом.


Для большинства программ замена MASM на Турбо Ассемблер не повлечет за собой каких-либо осложнений. В некоторых случаях в Турбо Ассемблере появятся предупреждающие сообщения и сообщения об ошибках там, где их в MASM не было, что обычно означает, что ошибочный оператор не был выявлен макроассемблером MASM. Например, MASM не обнаруживает ошибок в следующих операторах:


abc EQU [BP+2]
PUBLIC abc


и генерирует бессмысленный объектный код. В Турбо Ассемблере подобная конструкция, а также ряд других двусмысленных конструкций, будут идентифицированы как ошибочные.


Если при ассемблировании программы пользователя с помощью Турбо Ассемблера возникнут какие-либо затруднения, то можно попытаться использовать директиву QUIRKS. Например, если с помощью следующей командной строки:


TASM /JQUIRKS MYFILE


программа будет ассемблирована правильно, то следует добавить в начало исходного файла директиву QUIRKS. Еще лучше, используя сведения из этого приложения, определить операторы, для которых требуется директива QUIRKS, и после этого переписать соответствующие строки исходного файла так, чтобы отпала необходимость использования директивы QUIRKS.


Для максимальной совместимости с MASM следует использовать директиву NOSMART и режим QUIRKS.


Одно- и двухпроходные режимы ассемблирования


В стандартном режиме Турбо Ассемблер выполняет ассемблирование за один проход, а MASM - за два прохода. Поэтому Турбо Ассемблер - более быстрый ассемблер по сравнению с MASM. Однако однопроходность Турбо Ассемблера может привести к некоторой его несовместимости с MASM при разрешении ссылок вперед и обработке конструкций, зависящих от прохода. В TASM имеется параметр командной строки (/m), с помощью которого можно задать число проходов. Если требуется обеспечить максимум совместимости с MASM, то нужно указать двухпроходный режим (/m2). (См. этот раздел, где данный параметр обсуждается более подробно.)


Использование данного параметра командной строки будет генерировать режим, совместимый с MASM (два прохода), когда присутствуют следующие конструкции:


  • директивы IF1 и IF2;

  • директивы ERR1 и ERR2;

  • ссылки вперед с IFDEF и IFNDEF;

  • опережающие ссылки с операцией .TYPE;

  • рекурсивно определенные числа, такие, как


    NMBR=NMBR+1;


  • рекурсивно определенные текстовые макрокоманды или текстовые макрокоманды, на которые имеются опережающие ссылки, такие, как:


    LNAME CATSTR LNAME,<1>


  • макрокоманды, на которые имеются опережающие ссылки.




Переменные операционной среды


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


Если при использовании MASM для конфигурирования нужным образом системы использовались переменные операционной среды INCLUDE или MASM, то для использования той же программы с Турбо Ассемблером нужно создать файл конфигурации. Все те параметры, которые были специфицированы, используя переменную среды MASM, нужно поместить непосредственно в файл конфигурации. Каталоги, указанные переменной INCLUDE, помещаются в файл конфигурации с помощью параметра /I командной строки.


Формат фирмы Microsoft для двоичных чисел с плавающей точкой


В ранних версиях макроассемблера MASM для чисел с плавающей точкой по умолчанию использовался формат, несовместимый с форматом для чисел с плавающей точкой стандарта IEEE. В MASM версии 5.1 числа с плавающей точкой генерируются в формате IEEE, но имеется директива .MSFLOAT, с помощью которой можно специфицировать использование ранее использовавшегося формата фирмы Microsoft.


В Турбо Ассемблере не поддерживается старый формат чисел с плавающей точкой и, следовательно, .MSFLOAT является для него недопустимой директивой.



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

8  В тему

Замечания по программированию

Обзор синтаксических правил Турбо Ассемблера

Утилиты Турбо Ассемблера

Сообщения об ошибках

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь
купить семена клевера красного лугового