Programa 8086 para generar la Secuencia de Fibonacci

Problema: escriba un programa de nivel de ensamblaje 8086 para generar la secuencia de Fibonacci. La longitud de la secuencia se almacena en el segmento de datos con el valor de desplazamiento de 0. Almacenaremos la secuencia generada en el segmento de datos, desde el valor de desplazamiento de 500.
Nota: Los números generados y las ubicaciones de memoria se representan en su Hexa- Formato decimal.

Ejemplo:
Entrada:

Producción:

Algoritmo:
la secuencia de Fibonacci se genera sumando el (i)-ésimo elemento y el (i-1)-ésimo elemento, y almacenándolo en la (i+1)-ésima posición. Esto es válido dado que las posiciones 1 y 2 se inicializan con 0 y 1 respectivamente. Se deben seguir los siguientes pasos para ejecutar el proceso utilizando las instrucciones del nivel de ensamblaje.

  1. Mueva el valor almacenado en el desplazamiento 00H a CX (esto actuará como el contador) y disminúyalo en 2 (porque necesitamos cargar explícitamente los primeros 2 elementos de la secuencia)
  2. Mover 00H a AL
  3. Mover 500 a SI
  4. Mover AL a [SI]
  5. Incremente AL y SI en 1, y almacene el valor de AL en [SI] (con esto, hemos cargado los primeros 2 elementos de la secuencia en la memoria)
  6. Mover el valor [SI-1] a AL
  7. Mover [SI]th valor a AH
  8. Mover 00H a BH
  9. Añadir BH y AH (resultado almacenado en BH)
  10. Añadir BH de nuevo con AL
  11. Incrementar SI en 1
  12. Almacenar BH en [SI]
  13. Vuelva al paso 6 hasta que el contador se convierta en 0
  14. Deténgase

Programa:

Dirección de memoria Instrucción/Mnemotecnia Explicación/Comentario
2000 MOV AL, 00H LA <- 00
2002 MOV SI, 500H SI <- 500
2005 MOV [SI], AL [SI] <- 00
2007 AGREGAR SI, 01H SI <- SI + 01
200A AGREGAR AL, 01H AL <- AL + 01
200C MOV [SI], AL SI <- AL
200E MOV CX, [0000H] CX <- 0000
2012 SUB CX, 0002H CX <- CX – 02
~2015 L1: ETIQUETA
2015 MOV AL, [SI-1] AL <- [SI – 01]
2018 AGREGAR AL, [SI] AL <- AL + [SI]
201A AGREGAR SI, 01H SI <- SI + 01
201D MOV [SI], AL [SI] <- AL
201F BUCLE L1 BUCLE L1 CX TIEMPOS
2021 HLT FINAL

Explicación:

  1. MOV AL, 00H: AL ahora tiene el primer número de la secuencia
  2. MOV SI, 500H: hacer que el SI apunte a la ubicación de salida
  3. MOV [SI], AL: Mover 0 a la primera posición
  4. ADD SI, 1: Incrementa SI para apuntar a la siguiente ubicación de memoria
  5. ADD AL, 1: Ahora, AL tiene el segundo elemento de la secuencia
  6. MOV [SI], AL: Mover 01H a la segunda posición
  7. MOV CX, [0000H]: mover el valor almacenado en el desplazamiento 0 a CX (contador)
  8. SUB CX, 02H: Dado que hemos inicializado los primeros 2 elementos de la secuencia, necesitamos disminuir el contador en 2
  9. L1: Esto define el inicio del ciclo (Se crea una etiqueta)
  10. MOV AL, [SI-1]: Mueve el elemento en la posición (i-1) a AL
  11. ADD AL, [SI]: Mueve el (i)th elemento con el (i-1)th elemento ya presente en AL
  12. ADD SI, 1: Incrementa SI para apuntar a la siguiente posición
  13. MOV [SI], AL: Almacenar la suma en la nueva posición
  14. LOOP L1: Las instrucciones entre la etiqueta L1 y esta instrucción LOOP se ejecutan “CX” veces
  15. HLT: Finaliza el programa

Salida real:

La ubicación de memoria dentro de un círculo (0000) contiene la longitud de la secuencia. Para este programa, es 8.

Los valores resaltados son los elementos de la Secuencia de Fibonacci (en su representación hexadecimal. Por lo tanto, 13 se representa como 0D)

Consulte para: programa 8085 para generar series de Fibonacci

¡Disfruta codificando!

Publicación traducida automáticamente

Artículo escrito por MukkeshMckenzie 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 *