Согласен, мой комментарий был меньше ожидаемого, но чтобы быть более информативным, нужно фактически выполнить упражнение, так что вот оно, и оно определенно не сложно.
mov si, Data
xor cx, cx
mov dx, Crunch
Crunch:
lodsw
test ax, ax
jz Exit
push dx
cmp cx, ax
ja Exit
mov cx, ax
Exit:
ret ;Either turns to another iteration or terminates
Data: dw 4, 7, 21, 32, 208, 18, 44, 92, 244, 61, 108, 11, 0
Это динамично, так чтоон просто продолжит обрабатывать данные до нуля. Технически это цикл, но, по крайней мере, не в обычном смысле, где есть специальная инструкция, которая вынуждает двигаться вверх в коде.