Universidad Antonio Nariño

Aplicación Industrial de Micros
Código: 444405

CAPITULO 3
Técnicas en languaje ensamblador

3.3 Conversión a ASCII
 
El conjunto de carácteres ASCII (American Standard Code for Information Interchange) es el código de representación en hexadecimal del alfabeto, los números del 0 al 9 y los principales símbolos de puntuación y algunos carácteres de control. Ver Tabla 3.3.1
Tabla 3.3.1 Conjunto de carácteres ASCII
Como se observa en la tabla 3.3.1, podemos dividir a cada caracter representado en hexadecimal como una parte alta de 3 bits (Most significant character) y una parte baja de 4 bits (Least significant character), o sea, la representación total se hace con solo 7 bits.

De los problemas usuales en la programación está el convertir un número hexadecimal representado en 8 bits a dos carácteres ASCII los cuales sean la representación de dicho número para permitir la visualización en terminales de datos tales como Monitores de video o Impresoras entre otras.

Ejemplo:
Se quiere representar el número hexadecimal 70h cuya representación en binario es 01110000b como los dos carácteres ASCII "7" y "0", gráficamente:
 

 
 0       en hexadecimal (8 bits)
 ¯ 
 ¯
 "7" 
"0"     en ascii (16 bits) 
 ¯   
 ¯
37h 
30h     ascii en hexadecimal (16 bits) 
 
Transportándolo a un programa:

NumHex    equ        0Ch                ; posición donde se almacena el número a convertir
AsciiH       equ        0Dh                ; posición donde se almacena el resultado parte alta
AsciiL        equ        0Eh                ; posición donde se almacena el resultado parte baja
.......................
.......................
                movlw    0Fh                  ; dato para enmascarar parte alta
                andwf     NumHex,0       ; se enmascara la parte alta del número hexa y pasa a W
                iorlw       30h                  ; convierte  el número en ascii
                movwf    AsciiL              ; el número queda salvado en la variable de salida
                movlw    0F0h                ; dato para enmascarar parte baja
                andwf     NumHex,1       ; se enmascara la parte baja del número hexa y queda allí
                swapf     NumHex,0       ; se invierten parte alta y baja
                iorlw       30h                  ; convierte  el número en ascii
                movwf    AsciiL              ; el número queda salvado en la variable de salida.
.....................
.....................

Se debe tener en cuenta que el ejemplo anterior funciona en forma correcta siempre y cuando lo nibbles del número hxadecimal a convertir, estén en el rango de 0 a 9, debe realizarse un tratamiento adicional a estos si se encuentran en el rango de Ah a Fh. Realice en un programa esta condición.


  índice de capítulo