Acerca de la instrucción LOOP en lenguaje ensamblador
Este programa realiza un ciclo una vez y CX lo almacena.
cx almacena el número de bucles
Cálculo de programación 2^12:
asume cs:code
segmento de código
p>
mov ax,2
mov cx,11
s:añadir ax,ax
loop s
mov ax,4c00h
int 21h
el código termina
end
Al ejecutar loop s , primero debe disminuir (cx) en 1. Si (cx) no es 0, vaya a sy ejecute add ax,ax.
Cuando la CPU ejecuta la instrucción LOOP, necesita realizar dos pasos:
1 (cx)=(cx)-1
2 Determinar el valor en cx, si no es cero, transfiera a la etiqueta para ejecutar el programa. Si es cero, ejecute hacia abajo
Ejemplo 1 Calcula 2^2 y coloca el resultado en AX
ASUMIR CS:CODE
MOV AX,2
AÑADIR AX,AX
MOV AX,4C00H
INT 21H
código ENDS
END
Ejemplo 2 Calcula 2^3 y pon el resultado en AX
CODE SEGMENTO
ASUMIR CS:CODE
MOV AX,2
AÑADIR AX,AX
AÑADIR AX,AX
MOV AX,4C00H
INT 21H
código ENDS
END
Información ampliada:
Nota :
Cálculo ffff:0-ffff:La suma de los datos en la unidad b, el resultado se almacena en dx.
Compruebe si el resultado después de la operación excede el rango de almacenamiento que dx puede soportar.
ffff:0-ffff:b son datos en bytes, que van del 0 al 255. 12 de esos números, incluso si son 255, la suma no excederá 65535.
Los datos no pueden acumularse directamente en dx.
Dado que ffff:0-ffff:b son datos de bytes de 8 bits, los datos de 16 bits se almacenan en dx.
No puede acumular datos directamente en dl, porque dl es un registro de 8 bits y el rango de datos que contiene está entre 0 y 255. Los datos en ffff:0-ffff:b también son de 8 bits. Si solo se acumulan 12 datos de 8 bits en dl, esto puede provocar una pérdida de acarreo.