Programa 8085 para convertir un número hexadecimal en código ASCII

Problema: escriba un programa de lenguaje de nivel ensamblador para convertir el código HEX a su respectivo código ASCII.
Suponga que la dirección inicial del programa y la ubicación de la memoria de entrada son 2000 y 2050 respectivamente.

Ejemplo:

Input: 2050 E4 (Hex data)

Output:
2051 34 (ASCII code for 4)
2052 45 (ASCII code for E) 

Algoritmo:

  1. Cargue los datos dados en el acumulador y muévase al registro B
  2. Enmascare los 4 bits más significativos (nibble superior) del número hexadecimal en el acumulador.
  3. Llame a la subrutina para obtener ASCII de 4 bits menos significativos.
  4. Guárdalo en la memoria
  5. Mueva el registro B al acumulador y enmascare los 4 bits menos significativos (nibble inferior).
  6. Gire la posición de nibble superior e inferior.
  7. Llame a la subrutina para obtener ASCII del nibble superior
  8. Guárdalo en la memoria
  9. Terminar el programa.

Código:

DIRECCIÓN DE MEMORIA MNEMOTÉCNICA COMENTARIOS
2000 LDA2050H Cargue los datos hexadecimales
2003 MOV B, A mover el contenido del acumulador a B
2004 ANI OFH mordisco superior de la máscara
2006 LLAMADA SUB1 obtener el código ascii para nibble superior
2009 STA 2051H
2012 MOV A, B mover el contenido de B al acumulador
2013 ANI F0H mordisco inferior de la máscara
2015 RLC
2016 RLC
2017 RLC
2018 RLC
2019 LLAMADA SUB1 obtener el código ascii para el nibble inferior
2022 STA 2052H
2025 HLT
SUB1 IPC 0AH
SALTAR JC
IDA 07H
SALTAR IDA 30H
RETIRADO

Explicación:

  1. LDA 2050H: carga el contenido de la ubicación de memoria 2050H en el acumulador.
  2. MOV B, A: copia el contenido del acumulador al registro B.
  3. ANI OFH: La operación AND se realiza entre el acumulador y el valor 0FH.
  4. CALL SUB1: se llama a la subrutina en la ubicación de memoria SUB1.
  5. STA 2051H: almacena el contenido del acumulador en la ubicación de memoria 2051H.
  6. MOV A, B: copia el contenido del registro B al acumulador.
  7. ANI F0H: La operación AND se realiza entre el acumulador y el valor F0H.
  8. RLC: girar el acumulador a la izquierda.
  9. HLT: deja de ejecutar el programa y detiene cualquier ejecución posterior.
  10. CPI 0AH: compara el contenido del acumulador con el valor 0AH.
  11. JC SKIP: salta a la ubicación de memoria SKIP si el bit de acarreo está establecido.
  12. ADI 07H: suma el valor 07H al contenido del acumulador.
  13. RET: Regreso de la subrutina incondicionalmente.

Publicación traducida automáticamente

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