Problema: escriba un programa en lenguaje ensamblador en un microprocesador 8085 para generar series de Fibonacci.
Ejemplo: suponga que la serie de Fibonacci se almacena en la ubicación de memoria inicial 3050.
Nota: este programa genera series de Fibonacci en números hexadecimales.
Algoritmo –
- Inicialice el registro H con 30 y el registro L con 50, de modo que la memoria indirecta M apunte a la ubicación de memoria 3050.
- Inicialice el registro B con 00, el registro C con 08 y el registro D con 01.
- Mueva el contenido de B en M.
- Incremente M en 1 para que M apunte a la siguiente ubicación de memoria.
- Mueva el contenido de D en M.
- Mueva el contenido de B en el acumulador A.
- Agregue el contenido de D en A.
- Mueva el contenido de D en B.
- Mueve el contenido de A en D.
- Incremente M en 1 para que M apunte a la siguiente ubicación de memoria.
- Mueva el contenido de A en M.
- Disminuye C en 1.
- Salte a la ubicación de memoria 200C si ZF = 0, de lo contrario, detenga el programa.
Programa –
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIO |
---|---|---|
2000 | LXI H, 3050 | Alto <- 30, Largo <- 50 |
2003 | MVI C, 08 | C<-08 |
2005 | MVI B, 00 | B <- 00 |
2007 | MVI D, 01 | D <- 01 |
2009 | MOV M, B | M <- B |
200A | INXH | METRO <- METRO + 01 |
200B | MOV M, D | M <-D |
200C | MOV A, B | A <-B |
200D | AÑADIR D | A <- A + D |
200E | MOV B, D | segundo <- re |
200F | MOV D, A | D <- A |
2010 | INXH | METRO <- METRO + 01 |
2011 | MOV M, A | M <- A |
2012 | DCR C | C <- C – 01 |
2013 | JNZ 200C | Saltar si ZF = 0 |
2016 | HLT | FINAL |
Explicación: los registros A, B, C, D, H, L se utilizan para fines generales.
- LXI H 3050: asigna 30 a H y 50 a L.
- MVI B, 00: asigna 00 a B.
- MVI C, 08: asigna 08 a C.
- MVI D, 01: asigna 01 a D.
- MOV M, B: mueve el contenido de B en M.
- INX H: incrementa M en 1.
- MOV M, D: mueve el contenido de D en M.
- MOV A, B: mueve el contenido de B en A.
- ADD D: suma el contenido de D y A. Almacena el resultado en A.
- MOV B, D: mueve el contenido de D en B.
- MOV D, A: mueve el contenido de A en D.
- INX H: incrementa M en 1.
- MOV M, A: mueve el contenido de A en M.
- DCR C: decrementa C en 1.
- JNZ 200C: salta a la ubicación de memoria 200C si ZF = 0.
- HLT: deja de ejecutar el programa y detiene cualquier ejecución posterior.
Publicación traducida automáticamente
Artículo escrito por AmishTandon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA