Red de conocimientos turísticos - Información de alquiler - Acerca de la instrucción LOOP en lenguaje ensamblador

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

SEGMENTO DE CÓDIGO

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.