3.5.1. Блоки повторений

Простейший блок повторений REPT (не поддерживается WASM) выполняет

ассемблирование участка программы заданное число раз. Например, если требу­ется создать массив байтов, значениями от 0 до это можно сделать путем повтора псевдокоманды      следующим образом:

hexnumber hextable

hexnumber

О

label byte

rept 256

db hexnumber

= hexnumber+1

endm

; Имя массива.

; Начало блока.

; Эти две строки

; 256 раз.

ассемблируются

Блоки повторений, так же как макроопределения, могут вызываться с парамет­рами. Для этого используются директивы IRP и

irp

endm

irpc

endm

параметр,<значение1,значение2.

параметр,строка

Блок, описанный директивой ПО», будет вызываться столько раз, сколько зна­чений указано в списке (в угловых скобках), и при каждом повторении будет оп­ределена метка с именем параметр, равная очередному значению из списка. На­пример, следующий блок повторений сохранит в стек регистры АХ, ВХ, СХ и БХ:

irp

push

endm

reg,<ах,bx,сх,dx> reg

Директива ШГС (РОИС в WASM) описывает блок, который выполняется столько раз, сколько символов содержит указанная строка, и при каждом повто­рении будет определена метка с именем параметр, равная очередному символу из строки. Если строка содержит пробелы или другие символы, отличные от раз­решенных для меток, она должна быть заключена в угловые скобки. Например, следующий блок задает строку в памяти, располагая после каждого символа стро­ки атрибут ОЕп. (белый символ на черном фоне), так что эту строку впоследствии можно будет скопировать прямо в видеопамять.

irpc

db

endm

character,<строка символов> '&character&' ,0Fh

В этом примере используются амперсанды, чтобы вместо параметра character было подставлено      значение даже внутри кавычек. - это; один из

макрооператоров - специальных которые действуют только внутри

макроопределений и блоков повторений.