Programa #15 "Números ASCII"
LF EQU 10
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
TAB EQU 09H
BELL EQU 07H
TECLADO EQU 8
DATOS SEGMENT
NUMERO_BINARIO DW 0,"$"
NUMERO_ASCII DB 6,0,6 DUP(?),"$"
M_ENCABEZADO DB 13,10,13,10,TAB,"=================================="
DB 13,10,13,TAB,"PROGRAMA QUE CONVIERTE UN NUMERO ASCII (CAPTURADO) A BINARIO"
DB 13,10,13,TAB,"================================================",13,10,"$"
M_ESPACIO DB 13,10,13,10,13,10,13,10,13,10,13,10,"$"
M_ASCII_ASCII DB 13,10,13,10,"NUMERO ADCII IMPRESO NOMRALMENTE COMO LO HACE UNA PC (EN ASCII)",13,10,"$"
M_BINARIO_ASCII DB 13,10,13,10,"NUMERO BINARIO (YA CONVERTIDO),",13,10,"IMPRESO NORMALMENTE COMO LO HACE UNA PC (EN ASCII):","$"
POTENCIA DW 001H,000AH,0064H,03E9H,2710H,"$"
DATOS ENDS
PILA SEGMENT STACK "STACK"
DW 128 DUP("P")
PILA ENDS
CODIGO SEGMENT
CAPT PROC NEAR
ASSUME CS:CODIGO,SS: PILA, DS:DATOS
MOV AX,DATOS
MOV DS,AX
MOV AH,0AH
MOV DX,OFFSET NUMERO_ASCII
INT 21H
MOV DI,OFFSET NUMERO_ASCII + 1
MOV CX,[DI]
MOV SI,OFFSET NUMERO_ASCII + 2
XOR CH,CH
MOV DI,OFFSET POTENCIA
DEC SI
ADD SI,CX
XOR BX,BX
STD
CICLO:
LODSB
SUB AL,30H
CBW
MOV DX,[DI]
MUL DX
ADD DI,2
ADD BX,AX
LOOP CICLO
MOV NUMERO_BINARIO,BX
LEA DX,M_ENCABEZADO
CALL ESCRIBE
LEA DX,M_ASCII_ASCII
CALL ESCRIBE
LEA DX,NUMERO_ASCII-1
CALL ESCRIBE
LEA DX,M_BINARIO_ASCII
CALL ESCRIBE
LEA DX,NUMERO_BINARIO
CALL ESCRIBE
LEA DX,M_ESPACIO
CALL ESCRIBE
CALL SALIR
CAPT ENDP
ESCRIBE PROC
MOV AH,IMPRIMIR
INT DOS
RET
ESCRIBE ENDP
SALIR PROC NEAR
MOV AX,FIN
INT DOS
SALIR ENDP
CODGIO ENDS
END CAPT
