domingo, 23 de mayo de 2010

Digitales III – Nando Vitti – 2ª Evaluación

Revisar la declaracion del segmento de datos para conocer la funcionalidad de la aplicación

   1:                  .MODEL SMALL


   2:                  .STACK 64H


   3:                  .DATA


   4:  CONTADOR        DW ?


   5:  TABLA           DB 40 DUP (?)


   6:  TABLAHEX        DB 20 DUP (?)


   7:  TABLAHEX2       DB 20 DUP (?)


   8:  PANTALLA3       DB "            EL PROMEDIO DE LOS NUMEROS INTRODUCIDOS ES "


   9:  PROMEDIO        DB 0,0


  10:                  DB 24H


  11:  TABLAORD        DB 80 DUP (?)


  12:                  DB 24H


  13:  LINEA1          DB " ******** INTRODUCE LOS NUMEROS Y PRESIONE ENTER PARA FINALIZAR ******** ",24H


  14:  PANTALLA1       DB 79 DUP ("="),10,13


  15:                  DB 79 DUP ("="),10,13


  16:                  DB "******** PRACTICA N¦ 2. MANEJO DE INSTRUCCIONES, TECLADO Y PANTALLA ********",10,13


  17:                  DB 10,13


  18:                  DB 10,13,24H


  19:  PANTALLA2       DB "                    1. INTRODUCIR NUMEROS",10,13


  20:                  DB "                    2. ORDENAR NUMEROS",10,13


  21:                  DB "                    3. PROMEDIAR",10,13


  22:                  DB 10,13


  23:                  DB 10,13


  24:                  DB "                    INDIQUE LA OPCION: ",24H


  25:                  


  26:                  


  27:   


  28:   


  29:                  .CODE


  30:                  MOV AX,@DATA


  31:                  MOV DS,AX


  32:                  MOV ES,AX


  33:                  CALL MODO


  34:                  MOV AL,25


  35:                  MOV CX,0


  36:                  CALL SCREEN


  37:                  LEA DX,PANTALLA1


  38:                  MOV AH,9


  39:                  INT 21H


  40:  OPCIONES:       MOV DH,7


  41:                  MOV DL,0


  42:                  CALL CURSOR


  43:                  LEA DX,PANTALLA2


  44:                  MOV AH,9


  45:                  INT 21H


  46:                  MOV AH,0


  47:                  INT 16H


  48:                  CMP AL,"1"


  49:                  JE OPCION1


  50:                  CMP AL,"2"


  51:                  JE OPCION2


  52:                  CMP AL,"3"


  53:                  JE OPCION3


  54:                  CMP AL,1BH


  55:                  JE SALIR


  56:                  JMP OPCIONES


  57:   


  58:  OPCION1:        CALL LIMPIAR


  59:                  CALL INTRODUCIR


  60:                  CALL ASC2HEX


  61:                  CALL LIMPIAR


  62:                  JMP OPCIONES


  63:   


  64:  OPCION2:        CALL LIMPIAR


  65:                  CALL ORDENAR


  66:                  CALL LIMPIAR


  67:                  JMP OPCIONES


  68:   


  69:  OPCION3:        CALL LIMPIAR


  70:                  CALL PROMEDIAR


  71:                  CALL LIMPIAR


  72:                  JMP OPCIONES


  73:   


  74:  SALIR:          CALL MODO


  75:                  .EXIT(0)


  76:   


  77:  INTRODUCIR PROC NEAR


  78:                  MOV CONTADOR,0


  79:                  MOV DH,10


  80:                  MOV DL,0


  81:                  CALL CURSOR


  82:                  LEA DX,LINEA1


  83:                  MOV AH,9


  84:                  INT 21H


  85:                  MOV DH,12


  86:                  MOV DL,0


  87:                  CALL CURSOR


  88:                  LEA SI,TABLA


  89:                  MOV CX,20


  90:  LAZO1:          MOV AH,0


  91:                  INT 16H


  92:                  CMP AL,13


  93:                  JE SALIR1


  94:                  CMP AL,30H


  95:                  JC LAZO1


  96:                  CMP AL,3AH


  97:                  JNC LAZO1


  98:                  MOV [SI],AL


  99:                  INC SI


 100:                  MOV DL,AL


 101:                  MOV AH,2


 102:                  INT 21H


 103:  LAZO2:          MOV AH,0


 104:                  INT 16H


 105:                  CMP AL,30H


 106:                  JC LAZO2


 107:                  CMP AL,47H


 108:                  JNC LAZO2


 109:                  MOV [SI],AL


 110:                  INC SI


 111:                  MOV DL,AL


 112:                  MOV AH,2


 113:                  INT 21H


 114:                  INC CONTADOR


 115:                  MOV DL,20H


 116:                  MOV AH,2


 117:                  INT 21H


 118:                  LOOP LAZO1


 119:  SALIR1:         RETN


 120:  INTRODUCIR ENDP


 121:   


 122:  ASC2HEX PROC NEAR


 123:                  LEA DI,TABLAHEX


 124:                  LEA SI,TABLA


 125:                  MOV CX,CONTADOR


 126:  LAZO3:          MOV BH,[SI]


 127:                  MOV BL,[SI+1]


 128:                  CMP BH,3AH


 129:                  JB NUMERO1


 130:                  SUB BH,7


 131:  NUMERO1:        SUB BH,30H


 132:                  ROL BH,4


 133:                  CMP BL,3AH


 134:                  JB NUMERO2


 135:                  SUB BL,7


 136:  NUMERO2:        SUB BL,30H


 137:                  OR BH,BL


 138:                  MOV [DI],BH


 139:                  INC DI


 140:                  ADD SI,2


 141:                  LOOP LAZO3


 142:                  RETN


 143:  ASC2HEX ENDP


 144:   


 145:  BURBUJA PROC NEAR


 146:                  MOV CX,CONTADOR


 147:                  DEC CX


 148:  SALTO3:         LEA SI,TABLAHEX


 149:                  MOV BL,0


 150:  SALTO2:         MOV AL,[SI]


 151:                  CMP AL,[SI+1]


 152:                  JC SALTO1


 153:                  MOV BH,[SI+1]


 154:                  MOV [SI],BH


 155:                  MOV [SI+1],AL


 156:  SALTO1:         INC SI


 157:                  INC BL


 158:                  CMP BL,CL


 159:                  JNE SALTO2


 160:                  LOOP SALTO3


 161:                  RETN


 162:  BURBUJA ENDP


 163:   


 164:  ORDENAR PROC NEAR


 165:   


 166:                  MOV DH,13


 167:                  MOV DL,0


 168:                  CALL CURSOR


 169:                  CALL BURBUJA


 170:                  MOV CX,CONTADOR


 171:                  LEA DI,TABLAORD


 172:                  LEA SI,TABLAHEX


 173:  LAZO5:          MOV AL,[SI]


 174:                  CALL HEX2ASC


 175:                  MOV BYTE PTR [DI],BH


 176:                  MOV BYTE PTR [DI+1],BL


 177:                  MOV BYTE PTR [DI+3],20H


 178:                  ADD DI,3


 179:                  INC SI


 180:                  LOOP LAZO5


 181:                  LEA SI,TABLAORD


 182:                  MOV CX,CONTADOR


 183:  LAZO7:          MOV DL,[SI]


 184:                  MOV AH,2


 185:                  INT 21H


 186:                  INC SI


 187:                  MOV DL,[SI]


 188:                  MOV AH,2


 189:                  INT 21H


 190:                  INC SI


 191:                  MOV DL,[SI]


 192:                  MOV AH,2


 193:                  INT 21H


 194:                  INC SI


 195:  LAZO6:          MOV AH,0


 196:                  INT 16H


 197:                  CMP AL,13


 198:                  JE SIGUIENTE


 199:                  CMP AL,20H


 200:                  JE TODO


 201:                  JMP LAZO6


 202:  SIGUIENTE:      LOOP LAZO7


 203:                  MOV AH,0


 204:                  INT 16H


 205:                  RET


 206:  TODO:           MOV DH,13


 207:                  MOV DL,0


 208:                  CALL CURSOR


 209:                  LEA DX,TABLAORD


 210:                  MOV AH,9


 211:                  INT 21H


 212:                  MOV AH,0


 213:                  INT 16H


 214:                  RET


 215:  ORDENAR ENDP


 216:   


 217:  HEX2ASC PROC NEAR


 218:                  MOV BH,AL


 219:                  MOV BL,AL


 220:                  ROL BH,4


 221:                  AND BH,0FH


 222:                  CMP BH,0AH


 223:                  JC NUMERO3


 224:                  ADD BH,7


 225:  NUMERO3:        ADD BH,30H


 226:                  AND BL,0FH


 227:                  CMP BL,0AH


 228:                  CMP BL,0AH


 229:                  JC NUMERO4


 230:                  ADD BL,7


 231:  NUMERO4:        ADD BL,30H


 232:                  RETN


 233:  HEX2ASC ENDP


 234:   


 235:  PROMEDIAR PROC NEAR


 236:                  CALL NUMERO


 237:                  LEA SI,TABLAHEX2


 238:                  MOV CX,CONTADOR


 239:                  MOV AX,0


 240:                  MOV BX,0


 241:  LAZO4:          MOV BL,[SI]


 242:                  ADD AX,BX


 243:                  INC SI


 244:                  LOOP LAZO4


 245:                  MOV DX,CONTADOR


 246:                  DIV DL


 247:                  CALL NUMEROS


 248:                  CALL HEX2ASC


 249:                  MOV [PROMEDIO],BH


 250:                  MOV [PROMEDIO+1],BL


 251:                  MOV DH,13


 252:                  MOV DL,0


 253:                  CALL CURSOR


 254:                  LEA DX,PANTALLA3


 255:                  MOV AH,9


 256:                  INT 21H


 257:                  MOV AH,0


 258:                  INT 16H


 259:                  RETN


 260:  PROMEDIAR ENDP


 261:   


 262:  MODO PROC NEAR


 263:                  MOV AH,0


 264:                  MOV AL,3


 265:                  INT 10H


 266:                  RETN


 267:  MODO ENDP


 268:   


 269:  SCREEN PROC NEAR


 270:                  MOV AH,6


 271:                  MOV BH,71H


 272:                  MOV DX,184FH


 273:                  INT 10H


 274:                  RETN


 275:  SCREEN ENDP


 276:   


 277:  CURSOR PROC NEAR


 278:                  MOV AH,2


 279:                  MOV BH,0


 280:                  INT 10H


 281:                  RETN


 282:  CURSOR ENDP


 283:   


 284:  LIMPIAR PROC NEAR


 285:                  MOV AL,15


 286:                  MOV CH,7


 287:                  MOV CL,0


 288:                  CALL SCREEN


 289:                  RETN


 290:  LIMPIAR ENDP


 291:   


 292:   


 293:  NUMERO PROC NEAR


 294:                  PUSH DX


 295:                  PUSH BX


 296:                  LEA SI,TABLAHEX


 297:                  LEA DI,TABLAHEX2


 298:                  MOV CX,CONTADOR


 299:  num1:           mov al,[si]


 300:                  and al,0fh


 301:                  mov dl,al


 302:                  mov al,[si]


 303:                  and al,0f0h


 304:                  rol al,4


 305:                  mov dh,al


 306:                  mov bh,0


 307:  num22:          dec dl


 308:                  jnz num2


 309:                  inc bh


 310:                  mov dl,9


 311:                  dec dh


 312:                  cmp dh,0ffh


 313:                  je num23


 314:  num2:           inc bh


 315:                  jmp num22


 316:  num23:          mov byte ptr [DI],bh


 317:                  inc di


 318:                  inc si


 319:                  loop num1


 320:   


 321:                  POP BX


 322:                  POP DX


 323:                  RETN


 324:  NUMERO ENDP


 325:   


 326:  NUMEROS PROC NEAR


 327:                  MOV CH,0


 328:                  MOV CL,AL


 329:                  MOV AX,0


 330:  NUME:           INC AL


 331:                  DAA


 332:                  LOOP NUME


 333:                  RETN


 334:   


 335:   


 336:  NUMEROS ENDP


 337:                  


 338:   


 339:   


 340:   


 341:                  END


No hay comentarios:

Publicar un comentario