Como todos ustedes saben los caracteres ingresados por teclado una vez presionada la tecla en el dispositivo, esta emite una señal y esta pasa por uan especie de decodificador ( reconocedor de señales) para así reconocer entre si se presionó una letra 'a' o el numero '1', pero esta señal es un conjunto de bits, que a su vez estos agrupados, van en bloques haciendo una suma de pesos, por ejemplo ( supongamos 8 bits):
PESOS -> 128 64 32 16 8 4 2 1
A7 A6 A5 A4 A3 A2 A1 A0
0 0 1 0 1 0 0 1 Sumando sus pesos =1+8+32 =41
41 es el código hexadecimal de la letra 'a', entonces de reconocer este carácter se habrá presionado la letra a del teclado.
Ahora la idea es convertir ese código ASCII (hexadecimal) al sistema que manejamos nosotros el decimal, no es con un fin específico sino para practicar instrucciones y un poco de programación en assembler.
Bien veamos a continuación el código, no lo comentaré todo porque pretendo mostrarles como es que funcionan algunas instrucciones que están dentro de este código
Bien veamos a continuación el código, no lo comentaré todo porque pretendo mostrarles como es que funcionan algunas instrucciones que están dentro de este código
.MODEL SMALL
.CODE
;leer un carácter e imprimir su código en exa.
INICIO: MOV AH,01 ; instrucción para leer algo de teclado
INT 21H ; realiza el servicio cagado de 01
MOV BL,AL
MOV AH,02H
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
MOV AL,BL
MOV CL,04
SHR AL,CL ; instrucción de rotación de bits
ADD AL,30H
MOV DL,AL
INT 21H
AND BL,0FH
CMP BL,09
JA sig ; es un salto condicional hacia la etiqueta sig
ADD BL,30H
MOV DL,BL
INT 21H
JMP FIN
sig: ADD BL,37H ; etiqueta sig, especie de procedimiento
MOV DL,BL
INT 21H
FIN: MOV AH,4CH
INT 21H
END
3 comentarios:
Oe ese programa te recibe el caracter(a ,2,..) y te sale el codigo hexadecimal
Este programa no es de H->D si no de HEX->ascii
Marca error en la linea 5 y 6 podrias decir cual es el problema
Publicar un comentario