domingo, 2 de abril de 2017

programa 8(11) Datos 1 Con Terminacion

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

DATOS SEGMENT
    NOMBRE DB 30 DUP(32), '$'
    DIR DB 30 DUP(32),'$'
    TLF DB 15 DUP(30),'$'
    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
    EJ7:
   
    MOV AX,DATOS
    MOV DS,AX
   
    CALL MODO_DE_VIDEO
   
    MOV DX,OFFSET MENS1
    CALL ESCRIBE
   
    MOV SI,OFFSET NOMBRE
    MOV CX,30
    CALL PEDIR
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET MENS2
    CALL ESCRIBE
   
    MOV SI,OFFSET DIR
    MOV CX,30
    CALL PEDIR
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET MENS3
    CALL ESCRIBE
   
    MOV SI,OFFSET TLF
    MOV CX,15
    CALL PEDIR
   
    MOV DX, OFFSET ENTERR
    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 EJ7


No hay comentarios.:

Publicar un comentario