Директива WHILE
Общий вид директивы WHILE
WHILE (Выражение)
Команды
ENDM
Последний тип макроса используется, если необходимо развернуть цикл с известным числом повторений для исключения команд перехода, а значит возможного сброса конвейера.
Пример. Составить программу сложения чисел заданного массива, не используя команд перехода
ideal
p586
model flat
extrn ExitProcess:proc
dataseg
a dd 1,2,3,4,5
s dd ?
codeseg
begin:
xor eax, eax
xor esi,esi
i=1
while i le 5
add eax, [a + esi]
add esi, 4
i = i + 1
endm
mov [s], eax
call ExitProcess
end begin