Programa 8085 para generar series de Fibonacci

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.

6666

Nota: este programa genera series de Fibonacci en números hexadecimales.

Algoritmo –

  1. 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.
  2. Inicialice el registro B con 00, el registro C con 08 y el registro D con 01.
  3. Mueva el contenido de B en M.
  4. Incremente M en 1 para que M apunte a la siguiente ubicación de memoria.
  5. Mueva el contenido de D en M.
  6. Mueva el contenido de B en el acumulador A.
  7. Agregue el contenido de D en A.
  8. Mueva el contenido de D en B.
  9. Mueve el contenido de A en D.
  10. Incremente M en 1 para que M apunte a la siguiente ubicación de memoria.
  11. Mueva el contenido de A en M.
  12. Disminuye C en 1.
  13. 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.

  1. LXI H 3050: asigna 30 a H y 50 a L.
  2. MVI B, 00: asigna 00 a B.
  3. MVI C, 08: asigna 08 a C.
  4. MVI D, 01: asigna 01 a D.
  5. MOV M, B: mueve el contenido de B en M.
  6. INX H: incrementa M en 1.
  7. MOV M, D: mueve el contenido de D en M.
  8. MOV A, B: mueve el contenido de B en A.
  9. ADD D: suma el contenido de D y A. Almacena el resultado en A.
  10. MOV B, D: mueve el contenido de D en B.
  11. MOV D, A: mueve el contenido de A en D.
  12. INX H: incrementa M en 1.
  13. MOV M, A: mueve el contenido de A en M.
  14. DCR C: decrementa C en 1.
  15. JNZ 200C: salta a la ubicación de memoria 200C si ZF = 0.
  16. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *