programa 8085 para hallar la enésima potencia de un numero

Problema: escriba un código en lenguaje ensamblador para calcular la potencia n de un número utilizando el microprocesador 8085.

Ejemplo –

Input : Base=>02H
        Exponent=>03H  
Output :08H 

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*4 equivale a 4+4+4+4 (es decir, 4 veces).
Cargue 02H (base) para registrar B y 03H (exponente) para registrar C -> establezca el registro D en 02H -> Agregue 02H B (es decir, 2) veces -> El registro D ahora contiene 04H -> Agregue 04H B (es decir, 2) veces -> El registro D ahora contiene 08H -> La salida es 08H.

Algoritmo –

  1. Cargue la base en el registro B y el exponente en el registro C.
  2. Para comenzar la multiplicación, establezca D en 01H.
  3. Vaya al paso 7.
  4. Decrementos C.
  5. Vaya al paso 3 hasta que el valor de C>0.
  6. Lleve el puntero de memoria a la siguiente ubicación y almacene el resultado.
  7. Cargue E con el contenido de B y limpie el acumulador.
  8. Agregue repetidamente el contenido de D al acumulador E veces.
  9. Almacene el contenido del acumulador en D.
  10. Vaya al paso 4.

Programa –

Dirección Etiqueta Mnemotécnico Comentario
2000H Base Byte de datos para la base
2001H Exponente Byte de datos para exponente
2002H Resultado resultado del factorial
2003H LXI H, 2000H Cargar datos de la memoria
2006H MOV B, M Carga base al registro B
2007H INXH Incrementar la memoria
2008H MOV C, M Cargar exponente al registro C
2009H MVI D, 01H Establezca el registro D en 1
200BH POTENCIA_LOOP MULTIPLICAR LLAMADA Llamada de subrutina para multiplicación
200EH DCR C Decremento C
200FH JNZ POWER_LOOP Llame a power_loop hasta que C se convierta en 0
2012H INXH Incrementar la memoria
2013H MOV M, D Guardar resultado en la memoria
2014H HLT Detener
2100H MULTIPLICAR MOVER E, B Transferir contenidos de B a E
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. Establecer registro B con base y registro C con exponente.
  2. Configure el registro D con la base llamando a la subrutina MULTIPLY una vez.
  3. Disminuya C y agregue D a sí mismo B veces llamando a la subrutina MULTIPLY.
  4. Repita el paso anterior hasta que C 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 *