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:
- Cargue los datos dados en el acumulador y muévase al registro B
- Enmascare los 4 bits más significativos (nibble superior) del número hexadecimal en el acumulador.
- Llame a la subrutina para obtener ASCII de 4 bits menos significativos.
- Guárdalo en la memoria
- Mueva el registro B al acumulador y enmascare los 4 bits menos significativos (nibble inferior).
- Gire la posición de nibble superior e inferior.
- Llame a la subrutina para obtener ASCII del nibble superior
- Guárdalo en la memoria
- 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:
- LDA 2050H: carga el contenido de la ubicación de memoria 2050H en el acumulador.
- MOV B, A: copia el contenido del acumulador al registro B.
- ANI OFH: La operación AND se realiza entre el acumulador y el valor 0FH.
- CALL SUB1: se llama a la subrutina en la ubicación de memoria SUB1.
- STA 2051H: almacena el contenido del acumulador en la ubicación de memoria 2051H.
- MOV A, B: copia el contenido del registro B al acumulador.
- ANI F0H: La operación AND se realiza entre el acumulador y el valor F0H.
- RLC: girar el acumulador a la izquierda.
- HLT: deja de ejecutar el programa y detiene cualquier ejecución posterior.
- CPI 0AH: compara el contenido del acumulador con el valor 0AH.
- JC SKIP: salta a la ubicación de memoria SKIP si el bit de acarreo está establecido.
- ADI 07H: suma el valor 07H al contenido del acumulador.
- 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