documentacion de FACT41

13
Proyecto Final de Informática Básica Trimestre: Invierno 2008 1 PROGRAMA PARA CALCULAR EL FACTORIAL DE UN NÚMERO El programa está desarrollado y programado totalmente en lenguaje ensamblador 8086. Fue ensamblado usando el ensamblador “Turbo Assembler” (TASM) y enlazado con el “Turbo Linker” (TLINK) ambos de Borland. El Archivo de extensión .asm que contiene el código fuente tiene el nombre (fact41.asm), una vez ensamblado con el TASM se genero un archivo objeto (fact41.obj) a partir del cual se obtuvo el programa ejecutable (fact41.exe). Para ejecutar el programa basta llamarlo desde la ventana de símbolo del sistema (debidamente direccionada) dando doble clic sobre el icono de fact41.exe. El programa tiene incorporada la función de autentificación del usuario y contraseña, por lo que al momento de ejecutarlo en la ventana del programa se le pedirá que ingrese un usuario y contraseña válidos con el fin de ingresar al “sistema” en donde podrá hacer uso de la función de calcular factoriales: Se deberá de presionar la tecla de “ENTER” después de escribir el usuario para que el programa lo acepte. Enseguida el programa nos pedirá la contraseña, después de escribirla deberemos presionar también “ENTER”. Se dispone de tres intentos para ingresar al sistema, si se ingresaran datos incorrectos en los tres intentos el sistema de bloqueará y deberá volver a ejecutarlo para poder intentar nuevamente ingresar al sistema.

Transcript of documentacion de FACT41

Page 1: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

1

PROGRAMA PARA CALCULAR EL FACTORIAL DE UN NÚMERO

El programa está desarrollado y programado totalmente en lenguaje ensamblador 8086. Fue ensamblado usando el ensamblador “Turbo Assembler” (TASM) y enlazado con el “Turbo Linker” (TLINK) ambos de Borland. El Archivo de extensión .asm que contiene el código fuente tiene el nombre (fact41.asm), una vez ensamblado con el TASM se genero un archivo objeto (fact41.obj) a partir del cual se obtuvo el programa ejecutable (fact41.exe). Para ejecutar el programa basta llamarlo desde la ventana de símbolo del sistema (debidamente direccionada) dando doble clic sobre el icono de fact41.exe. El programa tiene incorporada la función de autentificación del usuario y contraseña, por lo que al momento de ejecutarlo en la ventana del programa se le pedirá que ingrese un usuario y contraseña válidos con el fin de ingresar al “sistema” en donde podrá hacer uso de la función de calcular factoriales:

Se deberá de presionar la tecla de “ENTER” después de escribir el usuario para que el programa lo acepte. Enseguida el programa nos pedirá la contraseña, después de escribirla deberemos presionar también “ENTER”. Se dispone de tres intentos para ingresar al sistema, si se ingresaran datos incorrectos en los tres intentos el sistema de bloqueará y deberá volver a ejecutarlo para poder intentar nuevamente ingresar al sistema.

Page 2: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

2

Si se ingresan datos incorrectos el programa avisará sobre el caso y se pedirá que intente nuevamente, se dispone de un contador que indicará los intentos aún disponibles:

Si el sistema se llegara a bloquear aparecerá un mensaje avisándonos de lo sucedido y pidiéndonos presionar una tecla para terminar, al hacerlo el programa se cerrará:

Si los datos en cambio fuesen correctos el programa nos avisará y podremos ingresar al “sistema”:

Nota: El nombre de usuario para poder entrar al sistema es: EXAMEN y la contraseña es FINAL, ambos deben de ser en mayúsculas.

Page 3: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

3

Si presionamos alguna tecla se mostrará enseguida la pantalla de presentación:

Tal como se nos indica, si presionamos la tecla ESC, el programa se cerrara y si presionamos cualquier otra pararemos a la siguiente pantalla donde se muestran las instrucciones generales:

Page 4: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

4

Nuevamente se tiene la opción de cerrar el programa presionando ESC. Presionando cualquier otra tecla pasaremos a la parte donde podemos hacer uso de la función para calcular factoriales:

Se deberá presionar ENTER después de teclear el numero para que el programa lo acepte, momento en el cual (si el numero ingresado se encuentra dentro del rango y no se han presionado caracteres inválidos) se nos devolverá el factorial y se nos dará un aviso de que debemos hacer si queremos calcular otro factorial o si queremos salir del programa:

Page 5: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

5

Si presionaremos ESC el programa se cerrará, si presionamos alguna otra tecla se nos pedirá nuevamente un número. Si en algún momento ingresaremos un número que se encuentre fuera del rango o si hubiésemos tecleado otros caracteres se nos dará un aviso de error:

Page 6: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

6

Page 7: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

7

Listado del código fuente del archivo fact41.asm:

;PROYECTO FINAL: PROGRAMA QUE CALCULA EL FACTORIAL DE UN NUMERO ;ALUMNOS: ;Alumno1 ;Alumno2 ;FECHA DE INICIO: 28 DE FEBRERO DEL 2008 ;FECHA DE ENTREGA: 2 DE ABRIL DEL 2008 ;PROFESOR: ;ING. .MODEL SMALL INCLUDE MACROS.INC .STACK .DATA N DB 2 DUP (0) M DB 14 DUP (0) F DB 14 DUP (0) A DB 14 DUP (0) MSGP DB 'ÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉ' DB 10,13,'ÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈ ÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË UNIVERSIDAD DE GUANAJUATO ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË FACULTAD DE INGENIERIA MECANIC A, ELECTRICA Y ELECTRONICA ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË INFORMATICA B ASICA ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË PROYECTO FI NAL: ÊËÈÉ' DB 10,13,'ÈÉÊË PROGRAMA PARA CAL CULAR EL FACTORIAL DE UN NUMERO ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË MAESTRO: NOMBRE DEL M AESTRO ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË ALUMNOS: ALUMNO1 ÊËÈÉ' DB 10,13,'ÈÉÊË ALUMNO2 ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË <<-PRESIONE UNA TECLA PARA CONTINU AR, PRESIONE ESC PARA SALIR-->>ÊËÈÉ' DB 10,13,'ÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉ' DB 10,13,'ÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉ$' MSGI DB 'ÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉ' DB 10,13,'ÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈ ÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉ' DB 10,13,'ÈÉÊË BIENVEN IDO!!! ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ'

Page 8: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

8

DB 10,13,'ÈÉÊË ESTE PROGRAMA PUEDE CALCULAR EL FACTORIAL DE UN NUMERO ÊËÈÉ' DB 10,13,'ÈÉÊË DENTRO DEL RA NGO DE 0 A 16. ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË RECUERDE QUE EL NUMERO INGRESAD O DEBE SE ENTERO Y POSITIVO. ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË DESPUES DE TECLEAR EL NUMERO PRESIONE ENTER PARA QUE EL ÊËÈÉ' DB 10,13,'ÈÉÊË PROGRAMA LO ACEPTE. ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË POR EJEMPLO PARA CALCULAR 9! TECLEE 9 ÊËÈÉ' DB 10,13,'ÈÉÊË PARA CALCULAR 12! TECLEE 12 ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË ÊËÈÉ' DB 10,13,'ÈÉÊË <<-PRESIONE UNA TECLA PARA CONTINU AR, PRESIONE ESC PARA SALIR-->>ÊËÈÉ' DB 10,13,'ÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉ' DB 10,13,'ÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉÊËÈÉ$' MSGE DB '*************************************** ***********************************' DB 10,13,'********************************* *****************************************' DB 10,13,'**** ****' DB 10,13,'**** ****' DB 10,13,'**** SE HA PROVOCADO UN ERROR, EL NUME RO QUE INGRESO NO ESTA DENTRO ****' DB 10,13,'**** DEL RANGO PERMITIDO (0 A 16) O BIEN HA TECLEADO ****' DB 10,13,'**** CARACTERES INVALIDOS. VU ELVA A INTERNTARLO... ****' DB 10,13,'**** ****' DB 10,13,'**** <<-PRESIONE UNA TECLA PARA CONTINU AR, PRESIONE ESC PARA SALIR-->>****' DB 10,13,'*************************************** ***********************************' DB 10,13,'*************************************** ***********************************$' MSGC DB 10,13,'--------------------------------- -----------------------------------------' DB 10,13,'--------------------------------- -----------------------------------------' DB 10,13,'---- ----' DB 10,13,'---- ----' DB 10,13,'---- SI DESEA PROBAR CON OTRO NUMERO P RESIONE UNA TECLA ----' DB 10,13,'---- ----' DB 10,13,'---- ----' DB 10,13,'---- ----' DB 10,13,'---- <<-PRESIONE ESC PARA SALIR-->>----' DB 10,13,'--------------------------------------- -----------------------------------' DB 10,13,'--------------------------------------- -----------------------------------$' MSGN DB 'INGRESE UN NUMERO: $' MSGF DB 'EL FACTORIAL ES: $' .CODE INICIO: ;CARGAMOS EL SEGMENTO DE DATOS MOV AX,@DATA MOV DS,AX ;LLAMAR A LA MACRO QUE CONTIENE LAS FUNCIONES NECESARIAS PARA VALIDAR EL USURIO Y SU CONTRASEÑA password ;LLAMAMOS A LA MACRO PARA LIMPIAR LA PANTALLA LIMPIAR_PANTALLA ;PONEMOS LA PRESENTACION DEL PROGRAMA DEL PROGRAMA IMPRIMIR_CAD MSGP ;HACEMOS UNA PAUSA HASTA QUE SE PREIONE UNA TECLA LEER_SIN_ECO CMP AL,1BH ;IDENTIFICAMOS SI LA TECLA PREIONADA FUE ESC JE SALIROP ;HACEMOS UNA PAUSA HASTA QUE SE PRESIONE UNA TECLA LIMPIAR_PANTALLA ;PONEMOS LAS INSTRUCCIONES DEL PROGRAMA IMPRIMIR_CAD MSGI LEER_SIN_ECO CMP AL,1BH ;IDENTIFICAMOS SI LA TECLA PREIONADA FUE ESC JE SALIROP PREPARAR: XOR DI,DI CICLO_LIMPIAR:

Page 9: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

9

MOV F[DI],00H MOV M[DI],00H MOV N[DI],00H INC DI CMP DI,14 JBE CICLO_LIMPIAR LIMPIAR_PANTALLA GOTOXY 8,5 ;LLAMAMOS A LA MACRO QUE IMPRIME LOS MENSAJES, PIDI ENDOLE QUE IMPRIMA EL MENSAJE PIDIENDO UN ;NUMERO IMPRIMIR_CAD MSGN XOR DI,DI ;LEEMOS EL NUMERO INGRESADO, LE RESTAMOS 30H Y LO G UARDAMOS EN N[DI] CICLO_LEER: LEER_ECO CMP AL,0DH ;IDENTIFICAR TECLA E NTER JE INICIALIZACION SUB AL,30H MOV N[DI],AL INC DI JMP CICLO_LEER INICIALIZACION: ;SE COMPROBARA QUE EL NUMERO INGRESADO NO TENGA MAS DE DOS DIGITOS, DE SER ASI SE MANDARA EL ;MENSAJE DE ERROR, SI TIENE 1 DIGITO O 2 SE COMPROB ARA QUE ESTEN EN EL RANGO VALIDO CMP DI,02H JA ERROR JE DOS_DIGITOS CMP DI,00H JE ERROR UN_DIGITO: CMP DI,09H JA ERROR JMP FACTORIAL SALIROP: JMP SALIR DOS_DIGITOS: CMP N[0],01H JA ERROR CMP N[1],06H JA ERROR XOR AX,AX XOR BX,BX ;HACEMOS UN AJUSTE CON EL FIN DE "CONVERTIR" EL NUM ERO DECIMAL DE DOS DIGITOS INGRESADO EN UNO ;HEXADECIMAL DE UN SOLO DIGITO MOV AL,N[0] MOV BL,0AH MUL BL ADD N[1],AL MOV AL,N[1] MOV N[0],AL JMP FACTORIAL ;EL PROGRAMA LLEGARA A LA ETIQUETA DE ERROR SI ES Q UE EL NUMERO INGRESADO ESTA FUERA DEL RANGO ;O SI LO QUE SE TECLEO SON CARACTERES INVALIDOS ERROR: LIMPIAR_PANTALLA IMPRIMIR_CAD MSGE LEER_SIN_ECO CMP AL,1BH JE SALIROP JMP PREPARAR FACTORIAL: ;CL ES EN CONTADOR QUE SE VA INCREMENTANDO EN 1 PAR A HACER EL FACTORIAL MOV CL,01H MOV M[0],01H XOR BX,BX XOR AX,AX XOR SI,SI XOR DI,DI

Page 10: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

10

;EN ESTE CICLO SE MULTIPLICA CL POR CADA UNO DE LOS DIGITOS DE M,ES DECIR MULTIPLICA CL POR EL ;NUMERO DE ;14 DIGITOS M, EL RESULTADO SE VA GUARDANDO EN A, E N A[SI] LA PRIMERA CIFRA DEL RESULTADO DE LA ;MULTIPLICACION DE M[SI] Y EN A[SI+1] LA SEGUNDA CI FRA, POR LO QUE A[SI+1] ES UNA ESPECIE DE ;ACARREADOR. ;LUEGO EL RESULTADO TOTAL, YA CONDIREANDO LOS ACARREOS SE PASA A F MEDIANTE SUMAS, SE HACE UN ;AJUSTE EN LAS SUMAS Y F[SI+1] SE CONVIERTE EN UN A CARREADOR PARA ESAS SUMAS. CICLO1: MOV AL,CL MUL M[SI] AAM MOV A[SI],AL MOV A[SI+1],AH XOR AX,AX MOV AL,A[SI] ADD AL,F[SI] AAA MOV F[SI],AL ADD A[SI+01H],AH MOV AL,A[SI+01H] ADD F[SI+01H],AL INC SI INC BL CMP BL,0DH JBE CICLO1 MOV SI,00H MOV BL,00H ;LUEGO DEL PRIMER CICLO SE PASA A ESTE EN DONDE SE TRANSFIRE TODO EL VALOR DE F A M, TAMBIEN SE VA ;LIMPIANDO M VOLVIENDO A PONER TODOS SUS DIGITOS EN CERO. CICLO2: MOV AL,F[SI] MOV M[SI],AL MOV AL,00H MOV F[SI],AL INC SI INC BL CMP BL,0DH JBE CICLO2 MOV SI,00H MOV BL,00H INC CL CMP CL,N[DI] JBE CICLO1 JMP RESULTADO PREPARAROP: JMP PREPARAR RESULTADO: GOTOXY 8,6 ;LLAMAMOS A LA MACRO PARA IMPRIMIR EL MENSAJE DE RE SULTADO IMPRIMIR_CAD MSGF ;IMPRIMIMOS EL FACTORIAL MOV SI,0EH ;EL RESULTADO DEL FACTORIAL QUEDA AL ULTIMO ALMACENADO EN M, ESTE CICLO SIRVE PARA IMPRIMIR TODOS

Page 11: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

11

;LOS DIGITOS DE M. CICLO_RESULTADO: DEC SI IMPRIMIR_CAR M[SI] CMP SI,00H JNE CICLO_RESULTADO ;EN ESTA ETIQUETA SE HACE QUE EL PROGRAMA IMPRIMA E L LETRERO DE QUE HACER SI SE DESEA CALCULAR ;OTRO FACTORIAL O SI SE DESEA SALIR. CONTINUAR: IMPRIMIR_CAD MSGC LEER_SIN_ECO CMP AL,1BH ;IDENTIFICAMOS SI L A TECLA PREIONADA FUE ESC JNE PREPARAROP SALIR: MOV AH,4CH INT 21H END INICIO

El programa hace uso de un archivo llamado MACROS.INC, en el cual se encuentran definidas las macros necesarias para el funcionamiento, esto se ha hecho con el fin de que el código fuente sea lo más corto posible. El listado de archivo MACROS.INC es el siguiente:

;SE INCLUYEN DISTINTAS MACROS UTILES PARA DIVERSOS PROGRAMAS ;IMPRIMIR UNA CADENA IMPRIMIR_CAD MACRO CADENA MOV DX,OFFSET CADENA MOV AH,09H INT 21H ENDM ;IMPRIMIR UN CARACTER, INCLUYE EL AJUSTE ASCII IMPRIMIR_CAR MACRO CARACTER MOV DL,CARACTER ADD DL,30H MOV AH,02H INT 21H ENDM ;LIMPIAR PANTALLA (VERSION SIMPLE) LIMPIAR_PANTALLA MACRO MOV AH,00H MOV AL,03H INT 10H ENDM ;LIMPIAR PANTALLA (SEGUNDA VERSION) LIMPIAR_PANTALLA2 MACRO MOV AX,0600H MOV BH,17H MOV CX,0000H MOV DX,1484FH INT 10H ENDM COLOR_PANTALLA MACRO COLOR MOV AH,00 ;INICIALIZA COLOR DE FO NDO MOV BL,COLOR ;LO INICIALIZA EN EL COLOR PEDIDO INT 10H ENDM

Page 12: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

12

;LEER UNA TECLA CON ECO LEER_ECO MACRO MOV AH,01H INT 21H ENDM ;LEER UNA TECLA SIN ECO, PUEDE EMPLEARSE PARA SIMUL AR EL INGRESO DE CONTRASEÑAS O PARA HACER UNA PAUSA EN EL PROGRAMA LEER_SIN_ECO MACRO MOV AH,07H INT 21H ENDM ;POSICIONAR EL PROMPT EN LAS COORDENADAS (X,Y) GOTOXY MACRO X,Y XOR BH,BH MOV DL,X MOV DH,Y MOV AH,02H INT 10H ENDM ;LA COMPONENTE DEL PROGRAMA QUE VALIDA EL USUARIO Y CONTRASEÑA DEFINIDA COMO UNA MACRO password macro .data msgtitulo db '*** INGRESO AL SISTEMA ***',13,1 0,'' db 10,13,'PARA ENTRAR AL SISTEMA INGRESE UN NOM BRE DE USUARIO Y CONTRASENNA VALIDOS' db 10,13,'ADVERTENCIA: AL HACER 3 INTENTOS ERRO NEOS EL SISTEMA SE BLOQUEARA',13,10,'$' msgusuario db 10,13,'INGRESE EL NOMBRE DE USUARIO: $' msgcontra db 10,13,'INGRESE LA CONTRASENA: $' msgcorrecto db 10,13,'<<<DATOS CORRECTOS, AHORA ES TA DENTRO DEL SISTEMA>>>$' msgincorrecto db 10,13,'DATOS INCORRECTOS$' msgnuevamente db ', INTENTE NUEVAMENTE. <>INTENTOS SOBRANTES: $' msgbloq db 10,13,'<<<EL SISTEMA SE HA BLOQUEADO>>> $' msgpausa db 10,13,'PRESIONE UNA TECLA PARA CONTINU AR$' msgsalir db 10,13,'PREIONE UNA TECLA PARA TERMINAR $' datosok db 'E','X','A','M','E','N','F','I','N','A' ,'L' t db ? y db ? .code main: mov ax,@data mov ds,ax mov t,3 limpiar_pantalla xor si,si xor ax,ax gotoxy 24,1 imprimir_cad msgtitulo inic: Imprimir_cad msgusuario Usuario: leer_eco cmp al,0dh ;Identificar tecla "enter" je Ready mov y[si],al inc si jmp Usuario Ready: Imprimir_cad msgcontra Contrasena: leer_sin_eco cmp al,0dh ;Identificar tecla "enter" je inic_checar

Page 13: documentacion de FACT41

Proyecto Final de Informática Básica Trimestre: Invierno 2008

13

mov y[si],al mov al, '*' sub al,30h imprimir_car al inc si jmp contrasena inic_checar: xor si,si xor cl,cl Ciclo_checar: mov al,datosok[si] cmp y[si], al jne invalido inc si inc cl cmp cl,0ah jbe ciclo_checar jmp correcto INIC2: imprimir_cad msgnuevamente imprimir_car t imprimir_cad msgpausa leer_sin_eco limpiar_pantalla JMP INIC invalido: Imprimir_cad msgincorrecto dec t cmp t, 0 ja inic2 Imprimir_cad msgbloq imprimir_cad msgsalir leer_sin_eco jmp salir correcto: Imprimir_cad msgcorrecto imprimir_cad msgpausa leer_sin_eco ende

La función del programa para validar el usuario y contraseña esta definida como una macro y contenida en el archivo MACROS.INC