Ассемблер и программирование для IBM PC



       

ГЛАВА 20. Макросредства - часть 8


ДИРЕКТИВЫ ПОВТОРЕНИЯ: REPT, IRP, IRPC ------------------------------------------------------------

Директивы повторения заставляют ассемблер повторить блок операторов, завершаемых директивой ENDM. Эти директивы не обязательно должны находится в макроопределении, но если они там находятся, то одна директива ENDM требуется для завершения повторяющегося блока, а вторая ENDM - для завершения макроопределения.

REPT: Повторение

Операция REPT приводит к повторению блока операторов до директивы ENDM в соответствии с числом повторений, указанным в выражении: REPT выражение

В следующем примере происходит начальная инициализация значения N=0 и затем повторяется генерация DB N пять раз:

N = 0

Ассемблер для IBM PC. Глава 20 26

REPT 5 N = N + 1 DB N ENDM

В результате будут сгенерированы пять операторов DB от DB 1 до DB 5. Директива REPT может использоваться таким образом для определения таблицы или части таблицы. Другим примером может служить генерация пяти команд MOVSB, что эквивалентно REP MOVSB при содержимом CX равном 05:

REPT 5 MOVSB ENDM

IRP: Неопределенное повторение

Операция IRP приводит к повторению блока команд до директивы ENDM. Основной формат:

IRP dummy,<arguments>

Аргументы, содержащиеся в угловых скобках, представляют собой любое число правильных символов, строк, числовых или арифметических констант. Ассемблер генерирует блок кода для каждого аргумента. В следующем примере ассемблер генерирует DB 3, DB 9, DB 17, DB 25 и DB 28:

IRP N,<3, 9, 17, 25, 28>

DB N ENDM

IRPC: Неопределенное повторение символа

Операция IRPC приводит к повторению блока операторов до директивы ENDM. Основной формат:

IRPC dummy,string

Ассемблер генерирует блок кода для каждого символа в строке "string". В следующем примере ассемблер генерирует DW 3, DW 4 ... DW 8:

IRPC N,345678 DW N ENDM

УСЛОВНЫЕ ДИРЕКТИВЫ ------------------------------------------------------------

Ассемблер поддерживает ряд условных директив. Ранее нам уже приходилось использовать директиву IF1 для включения библиотеки только в первом проходе ассемблирования. Условные




Содержание  Назад  Вперед