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



Директива CATSTR


Директива CATSTR определяет новую текстовую макрокоманду путем конкатенации строк. Она имеет следующий синтаксис:


имя CATSTR строка[,строка].


Директива CATSTR выполняет конкатенацию слева-направо. Турбо Ассемблер создает новую текстовую макрокоманду с именем "имя".


Директива SUBSTR


Директива SUBSTR определяет новую текстовую макрокоманду, которая является подстрокой строки. Она имеет следующий синтаксис:


имя SUBSTR строка,выражение_позиции[,выражение_размера]


Новая текстовая макрокоманда с именем "имя" состоит из части строки , начинающейся с символа в позиции "выражение_позиции" и длины "выражение_длины". Если вы не указываете "выражение_размера", новая текстовая макрокоманда содержит остаток строки, начиная с символа в "выражении_позиции". Турбо Ассемблер рассматривает первый символ строки как позицию 1.


Директива INSTR


Директива INSTR возвращает позицию одной строки внутри другой. Она имеет следующий синтаксис:


имя INSTR [выражение_начала,]строка_1,строка_2


Турбо Ассемблер присваивает "имя" числовому значению, которое соответствует первой позиции первого вхождения "строки_2" в "строку_1". Первый символ "строки_1" имеет позицию 1. Если "строка_2" в "строке_1" не содержится, то Турбо Ассемблер возвращает значение 0. Если вы укажете "выражение_начала", то поиск начинается с символа, задаваемого этим выражением. Первый символ строки находится в позиции 1.


Директива SIZESTR


Директива SIZESTR возвращает длину текстовой макрокоманды (число символов в строке). Она имеет синтаксис:


имя SIZESTR строка


где "имя" устанавливается в числовое значение, равное длине указанной строки. Нулевая строка <> имеет длину 0.


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


Следующие примеры показывают, как работают эти операции:


VERSION T300
ABC
ABC2
ABC
ABC3
ABCLEN
ABC3LEN
COMMA1
COMMA2
ABC4
ABC5
ABC6
ABC7
ABC8
EQU
EQU
EQU
CATSTR
SIZESTR
SIZESTR
INSTR
INSTR
SUBSTR
SUBSTR
EQU
EQU
EQU
<abc>
ABC
<det>
ABC2,<,>,A
BC,<,>,ABC2
ABC
ABC3
ABC3,<,>
COMMA1+1,ABC3,<,>
ABC3,5
ABC3,5,3
3+2+1
%3+2+1
%COMMA1
ABC = "abc"
ABC2 = "ABC"
ABC = "det" (переопределяется)
ABC3 = "ABC,DEF,ABC"
ABCLEN = 3
ABC3LEN = 11
COMMA1 = 4
COMMA2 = 8
ABC4 = "def,ABC"
ABC5 = "def"
ABC6 = 6 (числовое присваивание)
ABC7 = "6" (текстовая макрокоманда)
ABC8 = "4"



Макрокоманды, состоящие из нескольких строк


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


Существует насколько типов макрокоманд, состоящих из нескольких строк. Одна версия подставляет каждый элемент строки (один за другим), который является аргументом макрокоманды. Другая версия повторяет определенное число раз тело макрокоманды. Наконец, в одном месте вы можете определить еще одну версию, которая будет много раз вызываться. Все эти версии имеют общее определение тела макрокоманды.


Тело макрокоманды, состоящей из нескольких строк


Независимо от содержимого тела макрокоманды, средство обработки макрокоманд Турбо Ассемблера интерпретирует макрокоманду, состоящую из нескольких строк, как просто несколько строк текста. Турбо Ассемблер позволяет вам заменить идентификаторы в теле макрокоманды текстом, заданным при вызове макрокоманды. Это средство называется подстановкой аргументов. Идентификаторы в теле макрокоманды, которые должны быть заменены, называются формальными (фиктивными) аргументами. Предположим, например, что идентификатор foo - это формальный аргумент в следующем теле макрокоманды:


PUSH foo
MOV foo,1


Если при вызове данной макрокоманды вы присваиваете foo текстовую строку AX, то фактическим включаемым в модуль текст будет:


PUSH foo
MOV AX,1


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


symfoo:
DB "It is foo time"


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


  • когда он является частью другого идентификатора;

  • когда он находится внутри кавычек (" или ");

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




<<<  НазадВперед  >>>
 1  2  3  4  5  6 


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

8  В тему

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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