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


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




Текстовые макрокоманды


Текстовая макрокоманда - это идентификатор, представляющий строку текстовых символов. Когда Турбо Ассемблер обнаруживает идентификатор в выражениях (и в других ситуациях), он подставляет вместо него текстовые символы. Например, если DoneMsg - это текстовая макрокоманда, имеющая значение "Returning to DOS", то следующий оператор:


GoodBy DB DoneMsg


дает в результате:


GoodBy DB "Returning to DOS"


Определение текстовых макрокоманд с помощью директивы EQU


Для определения простых текстовых макрокоманд можно использовать директиву EQU.Приведем синтаксис определения текстовой макрокоманды:


имя EQU текстовая_строка


где "текстовая_строка" связывается с текстовой макрокомандой с именем "имя". Для выделения текста вы можете заключить текстовую строку в угловые скобки (<>), например:


DoneMsg DB <"Returning to DOS">


Если в режиме MASM вы опустите скобки, то Турбо Ассемблер будет определять, можно ли свести текстовую строку к выражению. Если ее вычислить нельзя, Турбо Ассемблер будет интерпретировать текстовую строку как текстовую макрокоманду (чтобы сохранить совместимость c MASM). Чтобы обеспечить правильное определение текстовой строки, нужно всегда заключать ее в угловые скобки. Рассмотрим следующие ошибки, которые могут возникать, если вы этого не делаете:


Earth EQU dirt ; Earth = "dirt"
Planet EQU Earth ; Planet = "dirt" (неверно!)
Planet EQU ; Planet = "Earth" (верно!)


В режиме Ideal оператор EQU всегда определяет текстовую макрокоманду.


Текстовые макрокоманды являются переопределяемыми. Вы можете переопределить текстовую макрокоманду в том же модуле другой текстовой строкой.


Директивы макрокоманд работы с текстовыми строками


Турбо Ассемблер обеспечивает директивы, которые могут работать с текстовыми макрокоманд. Эти директивы доступны в режиме Ideal и для версий M510, M520 и T300 (как задается директивой VERSION).


Строковые аргументы для любой из этих директив могут быть следующими:


  • текстовой строкой, заключенной в скобки, например, ;

  • именем ранее определенной текстовой макрокоманды;

  • выражением с предшествующим символом %, значение которого эквивалентно числовому представлению строки для текущего основания.




Вперед  >>>
 1  2  3  4  5  6 


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

8  В тему

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь
Источник: Агент Думбия: "Зимой Сейду точно не сменит клуб".