Programa 8085 para hallar el factorial de un numero

Problema: escriba un programa en lenguaje ensamblador para calcular el factorial de un número utilizando el microprocesador 8085.

Ejemplo –

Input : 04H
Output : 18H 
as 04*03*02*01 = 24 in decimal => 18H

Data result store

En el microprocesador 8085, no existe ninguna instrucción directa para multiplicar dos números, por lo que la multiplicación se realiza mediante sumas repetidas, ya que 4×3 equivale a 4+4+4 (es decir, 3 veces).
Cargue 04H en el registro D -> Agregue 04H 3 veces -> El registro D ahora contiene 0CH -> Agregue 0CH 2 veces -> El registro D ahora contiene 18H -> Agregue 18H 1 vez -> El registro D ahora contiene 18H -> La salida es 18H

factorial iterations

Algoritmo –

  1. Cargue los datos en el registro B
  2. Para iniciar la multiplicación ajuste D a 01H
  3. Saltar al paso 7
  4. Decrementa B para multiplicar el número anterior
  5. Saltar al paso 3 hasta el valor de B>0
  6. Lleve el puntero de memoria a la siguiente ubicación y almacene el resultado
  7. Cargue E con contenido de B y despeje el acumulador
  8. Agregue repetidamente el contenido de D al acumulador E veces
  9. Almacene el contenido del acumulador en D
  10. Ir al paso 4
Dirección Etiqueta Mnemotécnico Comentario
2000H Datos Byte de datos
2001H Resultado resultado del factorial
2002H LXI H, 2000H Cargar datos de la memoria
2005H MOV B, M Cargar datos en el registro B
2006H MVI D, 01H Establecer registro D con 1
2008H FACTORIAL MULTIPLICAR LLAMADA Llamada de subrutina para multiplicación
200BH DCR B Decremento B
200CH JNZ FACTORIAL Llame al factorial hasta que B se convierta en 0
200FH INXH Incrementar la memoria
2010H MOV M, D Guardar resultado en la memoria
2011H HLT Detener
2100H MULTIPLICAR MOVER E, B Transferir contenido de B a C
2101H MVI A, 00H Borrar acumulador para almacenar resultado
2103H BUCLE MULTIPLE AÑADIR D Agregar contenido de D a A
2104H DCR E Decremento E
2105H BUCLE MULTIPLE JNZ Adición repetida
2108H MOV D, A Transferir contenido de A a D
2109H RETIRADO Regreso de subrutina

Explicación –

  1. Primero configure el registro B con datos.
  2. Configure el registro D con datos llamando a la subrutina MULTIPLY una vez.
  3. Disminuya B y agregue D a sí mismo B veces llamando a la subrutina MULTIPLY ya que 4*3 es equivalente a 4+4+4 (es decir, 3 veces).
  4. Repita el paso anterior hasta que B llegue a 0 y luego salga del programa.
  5. El resultado se obtiene en el registro D que se almacena en la memoria

Publicación traducida automáticamente

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