La instrucción LOOP

La instrucción LOOP, requiere un valor inicial en el registro CX. En cada iteración, LOOP de forma automática disminuye 1 de CX. Si el valor en el CX es cero, el control pasa a la instrucción que sigue; si el valor en el CX no es cero, el control pasa a la dirección del operando. La distancia debe ser un salto corto, desde -128 hasta +127 bytes. Para una operación que exceda este limite, el ensamblador envía un mensaje como «salto relativo fuera de rango». El formato general de la instrucción LOOP es:

|  [etiqueta:]  |  LOOP  |  dirección corta  |

El siguiente programa muestra el funcionamiento de la instrucción LOOP.

Page 60,132
TITLE     P08LOOP (COM) Ilustración de LOOP
.MODEL     SMALL
.CODE
ORG          100H
MAIN      PROC         NEAR
MOV            AX,01                     ;Iniciación de AX,
MOV            BX,01                     ;BX y
MOV            CX,01                     ;CX a 01
MOV            CX,10                     ;Iniciar
A20:                                                          ;Número de iteraciones
ADD             AX, 01                    ;Sumar 01 a AX
ADD             BX, AX                   ;Sumar AX a BX
SHL             DX, 1                      ;Multiplicar por dos a DX
LOOP          A20                        ;Iterar si es diferente de cero
MOV            AX, 4C00H             ;Salida a DOS
MAIN     ENDP
END             MAIN
Existen dos variaciones de la instrucción LOOP, ambas también decrementan el CX en 1. LOOPE/LOOPZ (repite el ciclo mientras sea igual o repite el ciclo mientras sea cero) continua el ciclo mientras que el valor en el CX es cero o la condición de cero esta establecida.

LOOPNE/LOOPNZ (repite el ciclo mientras no sea igual o repite el ciclo mientras sea cero) continua el ciclo mientras el valor en el CX no es cero o la condición de cero no esta establecida.