9.2.2. Перенос проверки условия в конец цикла

Циклы типа WHILE или FOR, которые так часто применяются в языках вы­сокого уровня, оказываются менее эффективными по сравнению с циклами типа UNTIL из-за того, что в них требуется лишняя команда перехода:

;  Цикл типа WHILE.

mov si,counter ;  Число повторов.

mov dx,start_i ;  Началвное значение.

loop_start:

'cmp dx.si ;  Пока dx < si - выполнять.

jnb exit_loop

[тело цикла]

inc dx

jmp loop_start

;  Почти такой же цикл типа until:

mov       si,counter

mov dx,start_i loop_start: ;  Выполнять. -

[тело цикла]

inc dx

cmp       dx,Si ;   Пока dx < si.

■    jb loop_start

Естественно, цикл типа UNTIL, в отличие от цикла типа WHILE, выполнится по крайней мере один раз, так что, если это нежелательно, придется добавить одну проверку перед телом цикла, но в любом случае даже небольшое уменьшение тела

цикла всегда оказывается необходимой операцией.