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


          

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


ДИРЕКТИВЫ ПОВТОРЕНИЯ: 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 для включения библиотеки только в первом проходе ассемблирования. Условные

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