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