Problema: escriba un programa en el microprocesador 8086 para averiguar los cuadrados de n números de 8 bits, donde el tamaño «n» se almacena en el desplazamiento 500 y los números se almacenan desde el desplazamiento 501 y almacenan los números resultantes en el desplazamiento 501 (suponiendo que los cuadrados resulta estar en el límite de solo 8 bits).
Ejemplo –
Algoritmo –
- Almacene 500 en SI y cargue datos desde el desplazamiento 500 para registrar CL y establezca el registro CH en 00 (para contar).
- Aumenta el valor de SI en 1.
- Cargue el primer número (valor) del siguiente desplazamiento (es decir, 501) para registrar AL.
- Multiplique el valor del registro AL por sí mismo.
- Almacene el resultado (valor del registro AL) en el desplazamiento de memoria SI.
- Aumenta el valor de SI en 1.
- Bucle por encima de 2 hasta que el registro CX obtenga 0.
Programa –
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIO |
---|---|---|
400 | MOV SI, 500 | SI<-500 |
403 | CL MOV, [SI] | CL<-[SI] |
405 | CA MOV, 00 | CH<-00 |
407 | INC SI | SI<-SI+1 |
408 | MOV AL, [SI] | AL<-[SI] |
40A | MUL AL | AX=AL*AL |
40C | MOV [SI], AL | AL->[SI] |
40E | INC SI | SI<-SI+1 |
40F | BUCLE 408 | SALTAR A 408 SI CX!=0 y CX=CX-1 |
411 | HLT | final |
Explicación –
- MOV SI, 500: establezca el valor de SI en 500
- MOV CL, [SI]: cargar datos desde el desplazamiento SI al registro CL
- MOV CH, 00: establece el valor del registro CH en 00
- INC SI: aumenta el valor de SI en 1.
- MOV AL, [SI]: carga el valor del desplazamiento SI al registro AL
- MUL AL: multiplica el valor del registro AL por AL.
- MOV [SI], AL: almacena el valor del registro AL en el desplazamiento SI.
- INC SI: aumenta el valor de SI en 1.
- BUCLE 408: salta a la dirección 408 si CX no es 0 y CX=CX-1.
- HL: detener
Publicación traducida automáticamente
Artículo escrito por Amber_Saxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA