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



Директива WHILE


Для повторения тела макрокоманды до того момента, пока определенное выражение не примет значения 0 (false), вы можете использовать макродирективу WHILE. Она имеет следующий синтаксис:


WHILE выражение
тело_макрокоманды
ENDM


Перед каждой итерацией тела макрокоманды Турбо Ассемблер вычисляет "выражение". Будьте аккуратны и избегайте бесконечных циклов, которые привести к тому, что Турбо Ассемблер исчерпает доступную память или прекратит работу. Приведем пример использования директивы WHILE:


WHILE 1
;; ничего не делает
ENDM




Макрокоманды повторения строк


Для повторения тела макрокоманды для каждого элемента в списке или каждого символа в строке вы можете использовать макродирективы повторения IRP и IRPC. Каждая из этих директив требует от вас задания одного формального аргумента. Приведем синтаксис директивы IRP:


IRP формальный_аргумент, список_аргументов
тело_макрокоманды
ENDM


Директива IRPC имеет следующий синтаксис:


IRP формальный_аргумент, строка
тело_макрокоманды
ENDM


в обоих случаях "формальный_аргумент" - это аргумент, используемый в теле макрокоманды. Конец тела макрокоманды отмечает ENDM.


В синтаксисе директивы IRP "список_аргументов" состоит из спискам аргументов, разделенных запятыми. Аргументами может быть любой текст (идентификаторы, строки, числа и т.д.). Форма каждого аргумента в списке аналогична той, которая описана выше для вызова общей макрокоманды, состоящей из нескольких строк. Список аргументов всегда нужно заключать в угловые скобки (<>).


В синтаксисе директива IRPC аргумент состоит из одной строки. Строка может содержать столько символов, сколько вы хотите.


Для каждого аргумента или символа в строке Турбо Ассемблер будет включать в модуль тело макрокоманды, подставляя вместо формального аргумента аргумент или символ (когда он его находит). Например:


IRP reg
PUSH reg
ENDM


дает следующее:


PUSH ax
PUSH bx
PUSH cx
PUSH dx


а директива IRPC:


IRPC LUCKY,1379
DB LUCKY
ENDM


дает следующее:


DB 1
DB 2
DB 3
DB 4


Используйте директива IRPC аккуратно, поскольку Турбо Ассемблер помещает каждый символ в строке в макрорасширение "как есть", поэтому макрокоманда строкового повторения:


IRPC CHAR,HELLO
DB CHAR
ENDM


может дать не DB "H","E"","L","L","O", а DB H,E,L,L,O (где каждая буква интерпретируется как имя идентификатора.


Непосредственная макродиректива %


Непосредственная макродиректива % интерпретирует строку текста так, как если бы это было тело макрокоманды. Приведем ее синтаксис:


# строка_тела_макрокоманды


где "строка_тела_макрокоманды" представляет тело макрокоманды, используемое для непосредственного макрорасширения, например:


SEGSIZE EQU
LANGUAGE EQU
% MODEL SEGSIZE,LANGUAGE ; дает MODEL TINY,WINDOWS PASCAL


Включение расширения макрокоманды в файл листинга


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


  • .LALL

  • .SALL

  • .XALL

  • %MACS

  • %NOMACS


которые позволяют управлять листингом макрорасширений.


Примечание: Подробнее об этих директивах рассказывается в этом разделе.

<<<  Назад
 1  2  3  4  5  6 


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

8  В тему

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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