lunes, 31 de mayo de 2010

Digitales III – Prof. Nando Vitti – 2ª evaluacion

Revisar definicion del segmento de datos para conocer la funcionalidad, basicamente era introducir una lista de numeros, los podias ordenar y sacar el promedio de los numeros que escribiste.

   1:                  .MODEL SMALL


   2:                  .STACK 64H


   3:                  .DATA


   4:  SWITCHE         DB 0


   5:  CONTADOR        DW ?


   6:  TABLA           DB 40 DUP (?)


   7:  TABLAHEX        DB 20 DUP (?)


   8:  TABLAHEX2       DB 20 DUP (?)


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


  10:  PROMEDIO        DB 0,0


  11:                  DB 24H


  12:  TABLAORD        DB 80 DUP (?)


  13:                  DB 24H


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


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


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


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


  18:                  DB 10,13


  19:                  DB 10,13,24H


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


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


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


  23:                  DB 10,13


  24:                  DB 10,13


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


  26:                  


  27:                  


  28:   


  29:   


  30:                  .CODE


  31:                  MOV AX,@DATA


  32:                  MOV DS,AX


  33:                  MOV ES,AX


  34:                  CALL MODO


  35:                  MOV AL,25


  36:                  MOV CX,0


  37:                  CALL SCREEN


  38:                  LEA DX,PANTALLA1


  39:                  MOV AH,9


  40:                  INT 21H


  41:  OPCIONES:       MOV DH,7


  42:                  MOV DL,0


  43:                  CALL CURSOR


  44:                  LEA DX,PANTALLA2


  45:                  MOV AH,9


  46:                  INT 21H


  47:                  MOV AH,0


  48:                  INT 16H


  49:                  CMP AL,"1"


  50:                  JE OPCION1


  51:                  CMP AL,"2"


  52:                  JE OPCION2


  53:                  CMP AL,"3"


  54:                  JE OPCION3


  55:                  CMP AL,1BH


  56:                  JE SALIR


  57:                  JMP OPCIONES


  58:   


  59:  OPCION1:        MOV SWITCHE,1


  60:                  CALL LIMPIAR


  61:                  CALL INTRODUCIR


  62:                  CALL ASC2HEX


  63:                  CALL LIMPIAR


  64:                  JMP OPCIONES


  65:   


  66:  OPCION2:        CMP SWITCHE,0


  67:                  JE SALTA


  68:                  CALL LIMPIAR


  69:                  CALL ORDENAR


  70:                  CALL LIMPIAR


  71:  SALTA:          JMP OPCIONES


  72:   


  73:  OPCION3:        CMP SWITCHE,0


  74:                  JE SALTA


  75:                  CALL LIMPIAR


  76:                  CALL PROMEDIAR


  77:                  CALL LIMPIAR


  78:                  JMP OPCIONES


  79:   


  80:  SALIR:          CALL MODO


  81:                  .EXIT(0)


  82:   


  83:  INTRODUCIR PROC NEAR


  84:                  MOV CONTADOR,0


  85:                  MOV DH,10


  86:                  MOV DL,0


  87:                  CALL CURSOR


  88:                  LEA DX,LINEA1


  89:                  MOV AH,9


  90:                  INT 21H


  91:                  MOV DH,12


  92:                  MOV DL,0


  93:                  CALL CURSOR


  94:                  LEA SI,TABLA


  95:   


  96:   


  97:   


  98:  ; revisar q ahora son 10


  99:                  MOV CX,10


 100:  LAZO1:          MOV AH,0


 101:                  INT 16H


 102:                  CMP AL,13


 103:                  JE SALIR1


 104:                  CMP AL,30H


 105:                  JC LAZO1


 106:                  CMP AL,3AH


 107:                  JNC LAZO1


 108:                  MOV [SI],AL


 109:                  INC SI


 110:                  MOV DL,AL


 111:                  MOV AH,2


 112:                  INT 21H


 113:  LAZO2:          MOV AH,0


 114:                  INT 16H


 115:                  CMP AL,30H


 116:                  JC LAZO2


 117:                  CMP AL,47H


 118:                  JNC LAZO2


 119:                  MOV [SI],AL


 120:                  INC SI


 121:                  MOV DL,AL


 122:                  MOV AH,2


 123:                  INT 21H


 124:                  INC CONTADOR


 125:                  MOV DL,20H


 126:                  MOV AH,2


 127:                  INT 21H


 128:                  LOOP LAZO1


 129:  SALIR1:         RETN


 130:  INTRODUCIR ENDP


 131:   


 132:  ASC2HEX PROC NEAR


 133:                  LEA DI,TABLAHEX


 134:                  LEA SI,TABLA


 135:                  MOV CX,CONTADOR


 136:  LAZO3:          MOV BH,[SI]


 137:                  MOV BL,[SI+1]


 138:                  CMP BH,3AH


 139:                  JB NUMERO1


 140:                  SUB BH,7


 141:  NUMERO1:        SUB BH,30H


 142:                  ROL BH,4


 143:                  CMP BL,3AH


 144:                  JB NUMERO2


 145:                  SUB BL,7


 146:  NUMERO2:        SUB BL,30H


 147:                  OR BH,BL


 148:                  MOV [DI],BH


 149:                  INC DI


 150:                  ADD SI,2


 151:                  LOOP LAZO3


 152:                  RETN


 153:  ASC2HEX ENDP


 154:   


 155:  BURBUJA PROC NEAR


 156:                  MOV CX,CONTADOR


 157:                  DEC CX


 158:  SALTO3:         LEA SI,TABLAHEX


 159:                  MOV BL,0


 160:  SALTO2:         MOV AL,[SI]


 161:                  CMP AL,[SI+1]


 162:                  JC SALTO1


 163:                  MOV BH,[SI+1]


 164:                  MOV [SI],BH


 165:                  MOV [SI+1],AL


 166:  SALTO1:         INC SI


 167:                  INC BL


 168:                  CMP BL,CL


 169:                  JNE SALTO2


 170:                  LOOP SALTO3


 171:                  RETN


 172:  BURBUJA ENDP


 173:   


 174:  ORDENAR PROC NEAR


 175:   


 176:                  MOV DH,13


 177:                  MOV DL,0


 178:                  CALL CURSOR


 179:                  CALL BURBUJA


 180:                  MOV CX,CONTADOR


 181:                  LEA DI,TABLAORD


 182:                  LEA SI,TABLAHEX


 183:  LAZO5:          MOV AL,[SI]


 184:                  CALL HEX2ASC


 185:                  MOV BYTE PTR [DI],BH


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


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


 188:                  ADD DI,3


 189:                  INC SI


 190:                  LOOP LAZO5


 191:                  LEA SI,TABLAORD


 192:                  MOV CX,CONTADOR


 193:  LAZO7:          MOV DL,[SI]


 194:                  MOV AH,2


 195:                  INT 21H


 196:                  INC SI


 197:                  MOV DL,[SI]


 198:                  MOV AH,2


 199:                  INT 21H


 200:                  INC SI


 201:                  MOV DL,[SI]


 202:                  MOV AH,2


 203:                  INT 21H


 204:                  INC SI


 205:  LAZO6:          MOV AH,0


 206:                  INT 16H


 207:                  CMP AL,13


 208:                  JE SIGUIENTE


 209:                  CMP AL,20H


 210:                  JE TODO


 211:                  JMP LAZO6


 212:  SIGUIENTE:      LOOP LAZO7


 213:                  MOV AH,0


 214:                  INT 16H


 215:                  RET


 216:  TODO:           MOV DH,13


 217:                  MOV DL,0


 218:                  CALL CURSOR


 219:                  LEA DX,TABLAORD


 220:                  MOV AH,9


 221:                  INT 21H


 222:                  MOV AH,0


 223:                  INT 16H


 224:                  RET


 225:  ORDENAR ENDP


 226:   


 227:  HEX2ASC PROC NEAR


 228:                  MOV BH,AL


 229:                  MOV BL,AL


 230:                  ROL BH,4


 231:                  AND BH,0FH


 232:                  CMP BH,0AH


 233:                  JC NUMERO3


 234:                  ADD BH,7


 235:  NUMERO3:        ADD BH,30H


 236:                  AND BL,0FH


 237:                  CMP BL,0AH


 238:                  CMP BL,0AH


 239:                  JC NUMERO4


 240:                  ADD BL,7


 241:  NUMERO4:        ADD BL,30H


 242:                  RETN


 243:  HEX2ASC ENDP


 244:   


 245:  PROMEDIAR PROC NEAR


 246:                  CALL NUMERO


 247:                  LEA SI,TABLAHEX2


 248:                  MOV CX,CONTADOR


 249:                  MOV AX,0


 250:                  MOV BX,0


 251:  LAZO4:          MOV BL,[SI]


 252:                  ADD AX,BX


 253:                  INC SI


 254:                  LOOP LAZO4


 255:                  MOV DX,CONTADOR


 256:                  DIV DL


 257:                  CALL NUMEROS


 258:                  CALL HEX2ASC


 259:                  MOV [PROMEDIO],BH


 260:                  MOV [PROMEDIO+1],BL


 261:                  MOV DH,13


 262:                  MOV DL,0


 263:                  CALL CURSOR


 264:                  LEA DX,PANTALLA3


 265:                  MOV AH,9


 266:                  INT 21H


 267:                  MOV AH,0


 268:                  INT 16H


 269:                  RETN


 270:  PROMEDIAR ENDP


 271:   


 272:  MODO PROC NEAR


 273:                  MOV AH,0


 274:                  MOV AL,3


 275:                  INT 10H


 276:                  RETN


 277:  MODO ENDP


 278:   


 279:  SCREEN PROC NEAR


 280:                  MOV AH,6


 281:                  MOV BH,17H


 282:                  MOV DX,184FH


 283:                  INT 10H


 284:                  RETN


 285:  SCREEN ENDP


 286:   


 287:  CURSOR PROC NEAR


 288:                  MOV AH,2


 289:                  MOV BH,0


 290:                  INT 10H


 291:                  RETN


 292:  CURSOR ENDP


 293:   


 294:  LIMPIAR PROC NEAR


 295:                  MOV AL,15


 296:                  MOV CH,7


 297:                  MOV CL,0


 298:                  CALL SCREEN


 299:                  RETN


 300:  LIMPIAR ENDP


 301:   


 302:   


 303:  NUMERO PROC NEAR


 304:                  PUSH DX


 305:                  PUSH BX


 306:                  LEA SI,TABLAHEX


 307:                  LEA DI,TABLAHEX2


 308:                  MOV CX,CONTADOR


 309:  num1:           mov al,[si]


 310:                  and al,0fh


 311:                  mov dl,al


 312:                  mov al,[si]


 313:                  and al,0f0h


 314:                  rol al,4


 315:                  mov dh,al


 316:                  mov bh,0


 317:  num22:          dec dl


 318:                  jnz num2


 319:                  inc bh


 320:                  mov dl,9


 321:                  dec dh


 322:                  cmp dh,0ffh


 323:                  je num23


 324:  num2:           inc bh


 325:                  jmp num22


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


 327:                  inc di


 328:                  inc si


 329:                  loop num1


 330:   


 331:                  POP BX


 332:                  POP DX


 333:                  RETN


 334:  NUMERO ENDP


 335:   


 336:  NUMEROS PROC NEAR


 337:                  MOV CH,0


 338:                  MOV CL,AL


 339:                  MOV AX,0


 340:  NUME:           INC AL


 341:                  DAA


 342:                  LOOP NUME


 343:                  RETN


 344:   


 345:   


 346:  NUMEROS ENDP


 347:                  


 348:   


 349:   


 350:   


 351:                  END


No hay comentarios:

Publicar un comentario