PAGE 60, 132
TITLE ALTAS, BAJAS Y CONSULTAS
;-------------------------------------------------------------------
;VARIABLES DIRECTAS
;
BIOS EQU 10H ;INTERRUPCION DEL BIOS
DOS EQU 21H ;INTERRUPCION DEL DOS
TEC1 EQU 49 ;DEFINICION DE LA TECLA '1'
TEC2 EQU 50 ;DEFINICION DE LA TECLA '2'
TEC3 EQU 51 ;DEFINICION DE LA TECLA '3'
ESKP EQU 27 ;DEFINICION DE LA TECLA 'ESC'
.MODEL SMALL
.STACK
.DATA
;-------------------------------------------------------------------
; MENSAJES DEL MENU (VARIABLES)
;
ARCHIVO DB 'datos.txt',0 ;NOMBRE DEL ARCHIVO
HANDLED DW ? ;PARA EL HANDLED DEL ARCHIVO
VARMENU DB 0AH,0DH,'1.- CONSULTA'
DB 0AH,0DH,'2.- ALTA'
DB 0AH,0DH,'3.- BUSQUEDA'
DB 0AH,0DH,''
DB 0AH,0DH,'TECLEA OPCION ','$'
DATOS LABEL BYTE
LONGMAX DB 20
NOMLONG DB ?
BUFFER DB 21 DUP (32)
MSGNOM DB 'Nombre: ','$'
MSGFERROR1 DB 'ERROR AL ABRIR ARCHIVO !!!','$'
MSGFERROR2 DB 'ERROR AL ESCRIBIR EN ARCHIVO !!!','$'
MSGFERROR3 DB 'ERROR AL CERRAR EL ARCHIVO !!!','$'
.CODE
;*******************************************************************
;* *
;* PROCEDIMIENTO PRINCIPAL *
;* *
;*******************************************************************
;-------------------------------------------------------------------
;PROCEDIMIENTO PRINCIPAL (FAR)
;
BEGIN PROC FAR
MOV AX, @DATA
MOV DS, AX
CALL FOPENH
INI:
CALL MENU
CALL FPUT
CALL FCLOSEH
;JMP INI
FIN:
MOV AH, 4CH
INT DOS
BEGIN ENDP
;*******************************************************************
;* *
;* PROCEDIMIENTOS PARA EL MANEJO DEL ARCHIVO *
;* *
;*******************************************************************
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA ABRIR UN ARCHIVO EMPLEANDO HANDLED
;
FOPENH PROC NEAR
LEA DX, ARCHIVO;NOMBRE DEL ARCHIVO
MOV AH, 3DH ;SERVICIO PARA ABRIR ARCHIVO
MOV AL, 01 ;TIPO DE PERMISO
;00 -> SOLO LECTURA
;01 -> SOLO ESCRITURA
;02 -> LECTURA YE ESCRITURA
INT DOS
JB FERROR1
MOV [HANDLED], AX ;GUARDAR HANDLE
RET
FOPENH ENDP
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA CERRAR UN ARCHIVO EMPLEADO HANDLED
;
FCLOSEH PROC NEAR
MOV AH, 3EH
MOV BX, [HANDLED]
INT DOS
JB FERROR3
RET
FCLOSEH ENDP
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA ESCRIBIR EN EL ARCHIVO EMPLEADO HANDLED
;
FPUT PROC NEAR
MOV AH, 40H ;SERVICIO PARA ESCRIBIR EN ARCHIVO
MOV BX, [HANDLED]
LEA CX, LONGMAX ;NUMERO DE BYTES A ESCRIBIR
LEA DX, BUFFER ;DATO A ESCRIBIR
INT DOS
JB FERROR2
RET
FPUT ENDP
;*******************************************************************
;* *
;* PROCEDIMIENTOS PARA EL MENU *
;* *
;* 1.- CONSULTA *
;* 2.- ALTA *
;* 3.- BUSQUEDA *
;* *
;* TECLEA OPCION *
;*******************************************************************
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA MOSTRAR MENU Y ESPERAR A QUE SELECCIONE
;EN CASO DE OPRIMIR 'ESC', SALDRA DEL PROGRAMA
;
MENU PROC NEAR
CALL CLR ;LIMPIAR PANTALLA
LEA DX, VARMENU;CARGAR MENSAJE DE MENU
MOV AH, 09H ;IMPRIME LO QUE ESTE EN DX
INT DOS
MOV AH, 07H ;LEER CARACTER SIN IMPRESION
INT DOS ;GUARDANDO EL CARACTER
CALL LEERCRC ;PROCEDIMIENTO PARA LEER CARACTER
RET
MENU ENDP
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA LEER LA OPCION
;
LEERCRC PROC NEAR
CMP AL, TEC2 ;Z SE ACTIVA SI EL RESULTADO ES CERO
JE ALT ;SI Z SE ACTIVA SE REALIZA EL SALTO
CMP AL, ESKP
JE FIN
ALT:
CALL CLR
CALL CUR
MOV AH, 09H
LEA DX, MSGNOM ;IMPRIMIR MENSAJE 'NOMBRE: '
INT DOS
MOV AH, 0AH ;ENTRADA DESDE TECLADO
LEA DX, DATOS
INT DOS
RET
LEERCRC ENDP
;*******************************************************************
;* *
;* PROCEDIMIENTOS PARA MENSAJES DE ERROR O EXITO *
;* *
;*******************************************************************
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA ERROR AL ABRIR ARCHIVO
;
FERROR1 PROC NEAR
CALL CLR
LEA DX, MSGFERROR1
MOV AH, 09H
INT DOS
RET
FERROR1 ENDP
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA ERROR AL ABRIR ARCHIVO
;
FERROR2 PROC NEAR
CALL CLR
LEA DX, MSGFERROR2
MOV AH, 09H
INT DOS
RET
FERROR2 ENDP
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA ERROR AL ABRIR ARCHIVO
;
FERROR3 PROC NEAR
CALL CLR
LEA DX, MSGFERROR3
MOV AH, 09H
INT DOS
RET
FERROR3 ENDP
;*******************************************************************
;* *
;* PROCEDIMIENTOS VARIOS *
;* *
;*******************************************************************
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA LIMPIAR PANTALLA
;
CLR PROC NEAR
MOV AH, 06H ;SERVICIO PARA RECORRER PANTALLA
MOV BH, 03H ;COLOR
MOV CX, 0000H ;POSICION INICIAL (DE - )
MOV DX, 184FH ;POSICION FINAL ( - A)
INT BIOS
RET
CLR ENDP
;-------------------------------------------------------------------
;PROCEDIMIENTO PARA POSICIONAR CURSOR AL PRINCIPIO
;
CUR PROC NEAR
MOV AH, 02H
MOV BH, 00
MOV DX, 0000
INT BIOS
RET
CUR ENDP
END BEGIN