Директивы WHILE и REPT

Директивы WHILE и REPT применяют для повторения определенное количество раз некоторой последовательности строк. Эти директивы имеют следующий синтаксис:

WHILE константное_выражениепоследовательность_строкENDM REPT константное_выражениепоследовательность строкENDM

Обратите внимание, что последовательность повторяемых строк в обеих директивах ограничена директивой ENDM.

При использовании директивы WHILE макрогенератор транслятора будет повторять последовательность_строк до тех пор, пока значение константное_выражение не станет равно нулю. Это значение вычисляется каждый раз перед очередной итерацией цикла повторения (то есть значение константное_выражение должно подвергаться изменению внутри последовательность_строк в процессе макрогенерации).

Директива REPT, подобно директиве WHILE, повторяет последовательность_строк столько раз, сколько это определено значением константное_выражение. Отличие этой директивы от WHILE состоит в том, что она автоматически уменьшает на единицу значение константное_выражение после каждой итерации.

Рассмотрим Пример 4, в котором демонстрируется применение директив WHILE и REPT для резервирования области памяти в сегменте данных. Имя идентификатора и длина области задаются в качестве параметров для соответствующих макросов def_sto_1 и def_sto_2.

Пример 4. Использование директив повторенияdef_sto_1 macro id_table,ln:=<5>;макрос резервирования памяти длиной len.;Используется WHILEid_table label bytelen=ln while len db 0 len=len-1 endmendmdef_sto_2 macro id_table,len;макрос резервирования памяти длиной lenid_table label byte rept len db 0 endmendm data segment para public 'data' def_sto_1 tab_1,10 def_sto_2 tab_2,10data ends;сегменты команд и стека в этой программе необязательныend

Заметьте, что счетчик повторений в директиве REPT уменьшается автоматически после каждой итерации цикла.

Таким образом, директивы REPT и WHILE удобно применять для “размножения” в тексте программы последовательности одинаковых строк без внесения в эти строки каких-либо изменений.

Следующие две директивы, IRP и IRPC, делают этот процесс более гибким, позволяя модифицировать на каждой итерации некоторые элементы в последовательность_строк.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: