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: .DATA
4: 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,13
34: 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,AX
51: CALL MODO
52: MENUP: CALL CLS
53: MOV DH,5
54: MOV DL,0
55: CALL CURSOR
56: LEA DX,MENU
57: MOV AH,9
58: INT 21H
59: MOV AH,0
60: INT 16H
61: CMP AL,"s"
62: JE SALIR
63: 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,0
79: 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 CORRESPONDIENTE
90: INTRODUCIR: CALL CLS
91: MOV ERROR,0
92: MOV DH,10
93: MOV DL,5
94: CALL CURSOR
95: MOV AH,9
96: LEA DX,LINEA3
97: INT 21H
98: MOV AH,0AH
99: LEA DX,MAX1
100: INT 21H
101: 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,5
116: CALL CURSOR
117: MOV AH,9
118: LEA DX,LINEA4
119: INT 21H
120: MOV AH,0AH
121: LEA DX,MAX2
122: INT 21H
123: 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 BIEN
148: 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 BIEN2
157: ADD ERROR,10H
158: BIEN2: CMP ERROR,1
159: JNE BIEN3
160: MOV DH,16
161: MOV DL,5
162: CALL CURSOR
163: MOV AH,9
164: LEA DX,LINEA5
165: INT 21H
166: MOV AH,0
167: INT 16H
168: JMP MENUP
169: BIEN3: CMP ERROR,10H
170: JNE BIEN4
171: MOV DH,16
172: MOV DL,5
173: CALL CURSOR
174: MOV AH,9
175: LEA DX,LINEA6
176: INT 21H
177: MOV AH,0
178: INT 16H
179: JMP MENUP
180: BIEN4: CMP ERROR,11H
181: JNE BIEN5
182: MOV DH,16
183: MOV DL,5
184: 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: ; PANTALLA
196: PROCESAR: CMP ERROR,0
197: JNZ BIEN5
198: 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,5
243: CALL CURSOR
244: LEA DX,LINEA9
245: MOV AH,9
246: INT 21H
247: MOV DH,6
248: MOV DL,10
249: CALL CURSOR
250: LEA DX,LINEA8
251: MOV AH,9
252: INT 21H
253: MOV DH,9
254: MOV DL,15
255: CALL CURSOR
256: LEA DX,MIN1
257: MOV AH,9
258: INT 21H
259: MOV DH,11
260: MOV DL,15
261: CALL CURSOR
262: LEA DX,MIN2
263: MOV AH,9
264: INT 21H
265: MOV DH,13
266: MOV DL,15
267: CALL CURSOR
268: LEA DX,MIN3
269: MOV AH,9
270: INT 21H
271: MOV DH,16
272: MOV DL,10
273: 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: RET
296: END
No hay comentarios:
Publicar un comentario