Esta aplicación tenia como finalidad calcular si era posible una inmersion, al suministrarle el tiempo y la profundidad, esto para la practica de SCUBA Diving
1: .MODEL SMALL 2: .STACK 64H 3: .DATA4: MIN1 DB 0,0," MINUTOS A 30 METROS$"
5: MIN2 DB 0,0," MINUTOS A 20 METROS$"
6: MIN3 DB 0,0," MINUTOS A 10 METROS$"
7: TABLA70 DB 100,"000033"
8: DB 110,"000241"
9: DB 120,"000447"
10: DB 130,"000652"
11: TABLA80 DB 100,"001146"
12: DB 110,"001353"
13: DB 120,"001756"
14: DB 130,"001963"
15: TABLA90 DB 100,"002154"
16: DB 110,"002461"
17: DB 120,"003268"
18: DB 130,"053674"
19: LINEA1 DB " ***** NO SE SUMERJA SIN LOS CONOCIMIENTOS APROPIADOS ***** $"
20: LINEA2 DB " OPCION NO VALIDA, PRESIONE CUALQUIER TECLA PARA VOLVER AL MENU ",24H
21: LINEA3 DB " INTRODUCE LA PROFUNDIDAD (METROS) ",24H
22: LINEA4 DB " INTRODUCE TIEMPO EN EL FONDO (MINUTOS) ",24H
23: LINEA5 DB " EL VALOR DADO PARA LA PROFUNDIDAD EN METROS NO ES PERMITIDO ",24H
24: LINEA6 DB " EL VALOR DADO PARA EL TIEMPO EN FONDO NO ES PERMITIDO ",24H
25: LINEA7 DB " AMBOS VALORES DADOS NO SON PERMITIDOS ",24H
26: LINEA8 DB " ======== PAUSAS PARA DESCOMPRESION ========= ",24H
27: LINEA9 DB " PARA UNA INMERSION DE "
28: MIN4 DB 0,0," METROS DURANTE "
29: MIN5 DB 0,0,0," MINUTOS SE REQUIERE ",24H
30: MENU DB 15 DUP (20H)," MENU DE OPCIONES",10,13
31: DB 15 DUP (20H)," ================",10,13
32: DB 15 DUP (20H),10,13 33: DB 15 DUP (20H),10,1334: DB 15 DUP (20H),"1. INTRODUCIR DATOS DE ENTRADA",10,13
35: DB 15 DUP (20H),"2. PROCESAR INFORMACION PARA UNA INMERSION",10,13
36: DB 15 DUP (20H),"S. SALIR DEL SISTEMA",24H
37: MAX1 DB 3 38: REAL1 DB ? 39: BUFFER1 DB 5 DUP(?) 40: MAX2 DB 4 41: REAL2 DB ? 42: BUFFER2 DB 5 DUP(?) 43: PROFUN DB ? 44: TIEMPO DB ?45: ERROR DB 1
46: 47: .CODE 48: MOV AX,@DATA 49: MOV ES,AX 50: MOV DS,AX51: CALL MODO
52: MENUP: CALL CLS
53: MOV DH,5 54: MOV DL,055: CALL CURSOR
56: LEA DX,MENU 57: MOV AH,9 58: INT 21H 59: MOV AH,0 60: INT 16H61: CMP AL,"s"
62: JE SALIR63: CMP AL,"S"
64: JE SALIR 65: CMP AL,31H 66: JE INTROD 67: CMP AL,32H 68: JE PROCES 69: JMP INVALIDO 70: 71: SALIR: CALL MODO
72: MOV AX,4C00H 73: INT 21H 74: INTROD: JMP INTRODUCIR 75: PROCES: JMP PROCESAR 76: 77: INVALIDO: MOV DH,15 78: MOV DL,079: CALL CURSOR
80: MOV AH,9 81: LEA DX,LINEA2 82: INT 21H 83: MOV AH,0 84: INT 16H 85: JMP MENUP 86: ; PARA RECIBIR LOS DATOS SE PROCEDE A USAR EL SERVICIO 0AH 87: ; DE LA INTERRUPCION 21H, LUEGO SE TRANSFORMA ESOS DATOS DE ASCII 88: ; A HEXA Y SE COMPARA A VER SI SON DATOS VALIDOS, DE NO SER VALIDOS 89: ; SE IMPRIME POR LA PANTALLA EL MENSAJE CORRESPONDIENTE90: INTRODUCIR: CALL CLS
91: MOV ERROR,0
92: MOV DH,10 93: MOV DL,594: CALL CURSOR
95: MOV AH,9 96: LEA DX,LINEA3 97: INT 21H 98: MOV AH,0AH 99: LEA DX,MAX1 100: INT 21H101: XOR AX,AX
102: XOR DX,DX
103: MOV PROFUN,0 104: LEA BX,BUFFER1 105: MOV DL,10 106: MOV AL,[BX]107: AND AL,0FH
108: MUL DL 109: ADD PROFUN,AL 110: INC BX 111: MOV AL,[BX]112: AND AL,0FH
113: ADD PROFUN,AL 114: MOV DH,12 115: MOV DL,5116: CALL CURSOR
117: MOV AH,9 118: LEA DX,LINEA4 119: INT 21H 120: MOV AH,0AH 121: LEA DX,MAX2 122: INT 21H123: XOR AX,AX
124: XOR DX,DX
125: MOV TIEMPO,0 126: LEA BX,BUFFER2 127: MOV DL,100 128: MOV AL,[BX]129: AND AL,0FH
130: MUL DL 131: ADD TIEMPO,AL 132: INC BX 133: MOV AL,[BX]134: AND AL,0FH
135: MOV DL,10 136: MUL DL 137: ADD TIEMPO,AL 138: INC BX 139: MOV AL,[BX]140: AND AL,0FH
141: ADD TIEMPO,AL 142: CMP PROFUN,70 143: JE BIEN 144: CMP PROFUN,80 145: JE BIEN 146: CMP PROFUN,90 147: JE BIEN148: INC ERROR
149: BIEN: CMP TIEMPO,100 150: JE BIEN2 151: CMP TIEMPO,110 152: JE BIEN2 153: CMP TIEMPO,120 154: JE BIEN2 155: CMP TIEMPO,130 156: JE BIEN2157: ADD ERROR,10H
158: BIEN2: CMP ERROR,1
159: JNE BIEN3 160: MOV DH,16 161: MOV DL,5162: CALL CURSOR
163: MOV AH,9 164: LEA DX,LINEA5 165: INT 21H 166: MOV AH,0 167: INT 16H 168: JMP MENUP169: BIEN3: CMP ERROR,10H
170: JNE BIEN4 171: MOV DH,16 172: MOV DL,5173: CALL CURSOR
174: MOV AH,9 175: LEA DX,LINEA6 176: INT 21H 177: MOV AH,0 178: INT 16H 179: JMP MENUP180: BIEN4: CMP ERROR,11H
181: JNE BIEN5 182: MOV DH,16 183: MOV DL,5184: CALL CURSOR
185: MOV AH,9 186: LEA DX,LINEA7 187: INT 21H 188: MOV AH,0 189: INT 16H 190: BIEN5: JMP MENUP 191: ; PARA PROCESAR LOS DATOS SE COMPARA EL RESULTADO DE LA VARIABLE PROFUN 192: ; CON LOS VALORES VALIDOS PARA SABER QUE TABLA SE VA A UTILIZAR 193: ; LUEGO SE COMPARA EL VALOR DE LA VARIABLES TIEMPO CON LOS VALORES 194: ; CONOCIDOS PARA SABER CUALES DATOS UTILIZAR PARA IMPRIMIRLOS POR 195: ; PANTALLA196: PROCESAR: CMP ERROR,0
197: JNZ BIEN5198: CALL CLS
199: CMP PROFUN,70 200: JNE BIEN6 201: LEA SI,TABLA70 202: JMP BUSCART 203: BIEN6: CMP PROFUN,80 204: JNE BIEN7 205: LEA SI,TABLA80 206: JMP BUSCART 207: BIEN7: LEA SI,TABLA90 208: BUSCART: CMP TIEMPO,100 209: JNE BIEN8 210: JMP IMPRIMIR 211: BIEN8: ADD SI,7 212: CMP TIEMPO,110 213: JNE BIEN9 214: JMP IMPRIMIR 215: BIEN9: ADD SI,7 216: CMP TIEMPO,120 217: JNE BIEN10 218: JMP IMPRIMIR 219: BIEN10: ADD SI,7 220: IMPRIMIR: INC SI 221: LEA DI,MIN1 222: MOVSB 223: MOVSB 224: LEA DI,MIN2 225: MOVSB 226: MOVSB 227: LEA DI,MIN3 228: MOVSB 229: MOVSB 230: LEA SI,BUFFER1 231: LEA DI,MIN4 232: MOVSB 233: MOVSB 234: LEA SI,BUFFER2 235: LEA DI,MIN5 236: MOVSB 237: MOVSB 238: MOVSB 239: ; PARA IMPRIMIR SE UBICA EL CURSOR Y SE USA EL SERVICIO 09H DE LA 240: ; INTERRUPCION 21H APUNTANDO CON DX EL MENSAJE DESEADO 241: MOV DH,4 242: MOV DL,5243: CALL CURSOR
244: LEA DX,LINEA9 245: MOV AH,9 246: INT 21H 247: MOV DH,6 248: MOV DL,10249: CALL CURSOR
250: LEA DX,LINEA8 251: MOV AH,9 252: INT 21H 253: MOV DH,9 254: MOV DL,15255: CALL CURSOR
256: LEA DX,MIN1 257: MOV AH,9 258: INT 21H 259: MOV DH,11 260: MOV DL,15261: CALL CURSOR
262: LEA DX,MIN2 263: MOV AH,9 264: INT 21H 265: MOV DH,13 266: MOV DL,15267: CALL CURSOR
268: LEA DX,MIN3 269: MOV AH,9 270: INT 21H 271: MOV DH,16 272: MOV DL,10273: CALL CURSOR
274: LEA DX,LINEA1 275: MOV AH,9 276: INT 21H 277: MOV AH,0 278: INT 16H 279: JMP MENUP 280: 281: CLS: MOV AH,06 282: MOV AL,0 283: MOV CX,0 284: MOV DX,184FH 285: MOV BH,71H 286: INT 10H 287: RET 288: MODO: MOV AH,0 289: MOV AL,3 290: INT 10H 291: RET 292: CURSOR: MOV AH,2 293: MOV BH,0 294: INT 10H 295: RET296: END
No hay comentarios:
Publicar un comentario