miércoles, 8 de mayo de 2019

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