lunes, 29 de abril de 2019

Programa 8 - Pide 3 Cadenas

TECLADO EQU 8
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
BIOS EQU 10H
TAB EQU 09H
BELL EQU 07H
CR EQU 13
LF EQU 10

DATOS SEGMENT
    NOMBRE DB 30 DUP(32),"$"
    DIR DB 30 DUP(32),"$"
    TLF DB 15 DUP(32),"$"
    MENS1 DB "NOMBRE: $"
    MENS2 DB "DIRECCION: $"
    MENS3 DB "TELEFONO: $"
    ENTERR DB CR,LF,"$"
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP("PILA")
PILA ENDS

CODIGO SEGMENT
    ASSUME CS:CODIGO, DS:DATOS, SS:PILA
    INICIO:
    MOV AX,DATOS
    MOV DS,AX
    CALL MODO_DE_VIDEO
   
    MOV DX,OFFSET MENS1
    CALL ESCRIBE
    MOV SI,OFFSET NOMBRE
    MOV CX,8
    CALL PEDIR
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET MENS2
    CALL ESCRIBE
    MOV SI,OFFSET DIR
    MOV CX,8
    CALL PEDIR
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET MENS3
    CALL ESCRIBE
    MOV SI,OFFSET TLF
    MOV CX,10
    CALL PEDIR
    CALL SALTO_DE_LINEA
   
    CALL ESCRIBE
    CALL ESCRIBE
    CALL ESCRIBE
    MOV DX,OFFSET NOMBRE
    CALL ESCRIBE
    CALL SALTO_DE_LINEA
    MOV DX,OFFSET DIR
    CALL ESCRIBE
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET TLF
    CALL ESCRIBE
    CALL SALTO_DE_LINEA
    CALL SALIR
   
    PEDIR PROC NEAR
    BUCLE:
    MOV AH,TECLADO
    INT DOS
    MOV[SI],AL
    MOV AH,2
    MOV DL,AL
    INT DOS
   
    INC SI
    LOOPNZ BUCLE
   
    RET
    PEDIR ENDP
   
    ESCRIBE PROC NEAR
    MOV AH,IMPRIMIR
    INT DOS
    RET
    ESCRIBE ENDP
   
    SALTO_DE_LINEA PROC NEAR
    MOV DX,OFFSET ENTERR
    CALL ESCRIBE
    RET
    SALTO_DE_LINEA ENDP
   
    MODO_DE_VIDEO PROC NEAR
    MOV AX,3
    INT BIOS
    RET
    MODO_DE_VIDEO ENDP
   
    SALIR PROC NEAR
    MOV AX,FIN
    INT DOS
    RET
    SALIR ENDP
CODIGO ENDS
END INICIO

No hay comentarios:

Publicar un comentario