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

No hay comentarios:

Publicar un comentario