jueves, 27 de mayo de 2010

Digitales III – Prof. Mendoza – 2ª evaluación del Semetre 2006-i

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