viernes, 21 de mayo de 2010

Digitales II – Prof. Mendoza

Esta evaluación constaba de hacer una especie de banner en el sistema de desarrollo, donde se mostrara un mensaje en las cuatro lineas de la computadora, y fuesen rotando

   1:  ; defseg teste,start=0000h,absolute;


   2:  ; seg teste;


   3:   


   4:          ORG 2000H


   5:          LD SP,3DFFH


   6:  INICIO:


   7:          CALL BORRAR_PAN


   8:          CALL LIMPIAR


   9:          CALL LIMP_SEC


  10:          LD B,64


  11:          LD IY,MENSAJE1


  12:   


  13:          LD IX,LINEA1


  14:          LD A,1


  15:          CALL ENVIAR_MEN


  16:  ESPL1:


  17:  ; SE RECOGE LA TECLA PULSADA Y SE GUARDA EN LA POSICION


  18:  ; APUNTADA POR IY Y SE IMPRIME PARA QUE SE VEA POR PANTALLA


  19:  ; SE ACEPTAN DATOS HASTA Q SE PULSE ENTER O LA BARRA ESPACIADORA


  20:          CALL SCAN


  21:          CP 20H


  22:          CALL Z,ENTER


  23:          LD (IY),A


  24:          INC IY


  25:   


  26:          LD IX,LINEA1


  27:          LD A,1


  28:          CALL ENVIAR_MEN


  29:          DJNZ ESPL1


  30:   


  31:          LD B,64


  32:          LD IY,MENSAJE2


  33:   


  34:          LD IX,LINEA2


  35:          LD A,2


  36:          CALL ENVIAR_MEN


  37:  ESPL2:


  38:          CALL SCAN


  39:          CP 20H


  40:          CALL Z,ENTER


  41:          LD (IY),A


  42:          INC IY


  43:          LD IX,LINEA2


  44:          LD A,2


  45:          CALL ENVIAR_MEN


  46:          DJNZ ESPL2


  47:   


  48:          LD B,64


  49:          LD IY,MENSAJE3


  50:   


  51:          LD IX,LINEA3


  52:          LD A,3


  53:          CALL ENVIAR_MEN


  54:   


  55:  ; SE COMPARA CON 20H, EL CUAL ES EL RESULTADO DE PRESIONAR LA TECLA


  56:  ; ENTER O LA BARRA ESPACIADORA, ADEMAS SE FILTRA QUE SOLO SE PRESIONE


  57:  ; NUMERO ENTRE 0 Y 5


  58:  ; SI EL NUMERO ES MENOR A 0 NO SE ACEPTA Y SE VUELVE A PREGUNTAR POR 


  59:  ; LA PROXIMA TECLA


  60:  ; SI EL NUMERO ES MAYOR O IGUAL A 6 NO SE ACEPTA Y SE VUELVE A PREGUNTAR


  61:  ; POR LA PROXIMA TECLA


  62:   


  63:  ESPL3:


  64:          CALL SCAN


  65:          CP 20H


  66:          CALL Z,ENTER


  67:          CP 30H


  68:          JP C,ESPL3


  69:          CP 36H


  70:          JP NC,ESPL3


  71:          LD (IY),A


  72:          INC IY


  73:          LD (IY),","


  74:          INC IY


  75:          LD IX,LINEA3


  76:          LD A,3


  77:          CALL ENVIAR_MEN


  78:          DJNZ ESPL3


  79:   


  80:          CALL BORRAR_PAN


  81:   


  82:  ; COPIO LOS MENSAJES A LAS LINEAS AUXILIARES PARA NO PERDER 


  83:  ; LOS MENSAJES ORIGINALES


  84:          


  85:          LD IY,MENSAJE3


  86:          PUSH IY


  87:  ESPOP:


  88:          LD IX,MENSAJE1


  89:          LD IY,LAUX1


  90:          CALL AUX


  91:   


  92:          LD IX,MENSAJE2


  93:          LD IY,LAUX2


  94:          CALL AUX


  95:          


  96:          POP IY


  97:          LD A,(IY)


  98:          INC IY


  99:   


 100:  ; SE COMPARA CON LOS NUMEROS PARA SABER QUE EFECTO SE VERA


 101:  ; DEPENDIENDO DE LO INTRODUCIDO POR TECLADO


 102:      


 103:          CP 31H


 104:          JP Z,OPC1


 105:          CP 32H


 106:          JP Z,OPC2


 107:          CP 32H


 108:          JP Z,OPC3


 109:          CP 34H


 110:          JP Z,OPC4


 111:          CP 35H


 112:          JP Z,OPC5


 113:   


 114:          JP INICIO


 115:  OPC1:


 116:      


 117:  ; RESGUARDO LA POSICION DE LA SECUENCIA PARA SABER


 118:  ; EN QUE SECUENCIA SE QUEDO EL BANNER


 119:          PUSH IY


 120:          LD D,64


 121:  OPC1_1:


 122:          ; DE IZQUIERDA A DERECHA


 123:          LD IX,LAUX1


 124:          LD A,1


 125:          CALL ENVIAR_MEN


 126:   


 127:          LD IX,LAUX2


 128:          LD A,2


 129:          CALL ENVIAR_MEN


 130:   


 131:          LD IX,LAUX1


 132:          CALL DERE


 133:   


 134:          LD IX,LAUX2


 135:          CALL DERE


 136:   


 137:          CALL RETRASO


 138:          LD A,E


 139:          CP "K"


 140:          JP Z,INICIO


 141:          CP "k"


 142:          JP Z,INICIO


 143:          CP "S"


 144:          JP Z,SALIR


 145:          CP "s"


 146:          JP Z,SALIR


 147:          DEC D


 148:          JP NZ,OPC1_1


 149:   


 150:          CALL BORRAR_PAN    


 151:          JP ESPOP


 152:   


 153:  OPC2:


 154:          ; RESGUARDO LA POSICION DE LA SECUENCIA


 155:          PUSH IY


 156:          ; DE DERECHA A IZQUIERDA


 157:   


 158:          LD D,64


 159:  OPC2_1:


 160:          LD IX,LAUX1


 161:          LD A,1


 162:          CALL ENVIAR_MEN


 163:   


 164:          LD IX,LAUX2


 165:          LD A,2


 166:          CALL ENVIAR_MEN


 167:   


 168:          LD IX,LAUX1


 169:          CALL IZQUI


 170:   


 171:          LD IX,LAUX2


 172:          CALL IZQUI


 173:  ;RETRASO


 174:          CALL RETRASO


 175:          LD A,E


 176:          CP "K"


 177:          JP Z,INICIO


 178:          CP "k"


 179:          JP Z,INICIO


 180:          CP "S"


 181:          JP Z,SALIR


 182:          CP "s"


 183:          JP Z,SALIR


 184:          DEC D


 185:          JP NZ,OPC2_1


 186:   


 187:          CALL BORRAR_PAN


 188:          JP ESPOP


 189:   


 190:   


 191:  OPC3:        


 192:          ; RESGUARDO LA POSICION DE LA SECUENCIA


 193:          PUSH IY


 194:          CALL BORRAR_PAN


 195:          LD IX,LAUX1


 196:          LD A,1


 197:          CALL ENVIAR_MEN


 198:   


 199:          LD IX,LAUX2


 200:          LD A,2


 201:          CALL ENVIAR_MEN


 202:   


 203:          LD IX,LAUX3


 204:          LD A,3


 205:          CALL ENVIAR_MEN


 206:   


 207:          LD IX,LAUX3


 208:          LD A,4


 209:          CALL ENVIAR_MEN


 210:   


 211:  ;RETRASO


 212:          CALL RETRASO


 213:          LD A,E


 214:          CP "K"


 215:          JP Z,INICIO


 216:          CP "k"


 217:          JP Z,INICIO


 218:          CP "S"


 219:          JP Z,SALIR


 220:          CP "s"


 221:          JP Z,SALIR


 222:   


 223:          CALL BORRAR_PAN


 224:          LD IX,LAUX3


 225:          LD A,1


 226:          CALL ENVIAR_MEN


 227:   


 228:          LD IX,LAUX1


 229:          LD A,2


 230:          CALL ENVIAR_MEN


 231:   


 232:          LD IX,LAUX2


 233:          LD A,3


 234:          CALL ENVIAR_MEN


 235:   


 236:          LD IX,LAUX3


 237:          LD A,4


 238:          CALL ENVIAR_MEN


 239:   


 240:  ;RETRASO


 241:          CALL RETRASO


 242:          LD A,E


 243:          CP "K"


 244:          JP Z,INICIO


 245:          CP "k"


 246:          JP Z,INICIO


 247:          CP "S"


 248:          JP Z,SALIR


 249:          CP "s"


 250:          JP Z,SALIR


 251:   


 252:          CALL BORRAR_PAN


 253:          LD IX,LAUX3


 254:          LD A,1


 255:          CALL ENVIAR_MEN


 256:   


 257:          LD IX,LAUX3


 258:          LD A,2


 259:          CALL ENVIAR_MEN


 260:   


 261:          LD IX,LAUX1


 262:          LD A,3


 263:          CALL ENVIAR_MEN


 264:   


 265:          LD IX,LAUX2


 266:          LD A,4


 267:          CALL ENVIAR_MEN


 268:   


 269:  ; RETRASO


 270:          CALL RETRASO


 271:          LD A,E


 272:          CP "K"


 273:          JP Z,INICIO


 274:          CP "k"


 275:          JP Z,INICIO


 276:          CP "S"


 277:          JP Z,SALIR


 278:          CP "s"


 279:          JP Z,SALIR


 280:   


 281:          CALL BORRAR_PAN


 282:          LD IX,LAUX2


 283:          LD A,1


 284:          CALL ENVIAR_MEN


 285:   


 286:          LD IX,LAUX3


 287:          LD A,2


 288:          CALL ENVIAR_MEN


 289:   


 290:          LD IX,LAUX3


 291:          LD A,3


 292:          CALL ENVIAR_MEN


 293:   


 294:          LD IX,LAUX1


 295:          LD A,4


 296:          CALL ENVIAR_MEN


 297:   


 298:          CALL RETRASO


 299:          LD A,E    


 300:          CP "K"


 301:          JP Z,INICIO


 302:          CP "k"


 303:          JP Z,INICIO


 304:          CP "S"


 305:          JP Z,SALIR


 306:          CP "s"


 307:          JP Z,SALIR


 308:   


 309:          CALL BORRAR_PAN


 310:          JP ESPOP


 311:   


 312:  OPC4:


 313:   


 314:  ; PARA IMPRIMIR DE ARRIBA HACIA ABAJO LO QUE SE HACE ES CAMBIAR LA 


 315:  ; PANTALLA LINEA POR LINEA


 316:          ; RESGUARDO LA POSICION DE LA SECUENCIA


 317:          PUSH IY


 318:          CALL BORRAR_PAN


 319:          LD IX,LAUX1


 320:          LD A,1


 321:          CALL ENVIAR_MEN


 322:   


 323:          LD IX,LAUX2


 324:          LD A,2


 325:          CALL ENVIAR_MEN


 326:   


 327:          LD IX,LAUX3


 328:          LD A,3


 329:          CALL ENVIAR_MEN


 330:   


 331:          LD IX,LAUX3


 332:          LD A,4


 333:          CALL ENVIAR_MEN


 334:   


 335:  ;RETRASO


 336:          CALL RETRASO


 337:          LD A,E


 338:          CP "K"


 339:          JP Z,INICIO


 340:          CP "k"


 341:          JP Z,INICIO


 342:          CP "S"


 343:          JP Z,SALIR


 344:          CP "s"


 345:          JP Z,SALIR


 346:   


 347:          CALL BORRAR_PAN


 348:          LD IX,LAUX2


 349:          LD A,1


 350:          CALL ENVIAR_MEN


 351:   


 352:          LD IX,LAUX3


 353:          LD A,2


 354:          CALL ENVIAR_MEN


 355:   


 356:          LD IX,LAUX3


 357:          LD A,3


 358:          CALL ENVIAR_MEN


 359:   


 360:          LD IX,LAUX1


 361:          LD A,4


 362:          CALL ENVIAR_MEN


 363:   


 364:  ;RETRASO


 365:          CALL RETRASO


 366:          LD A,E


 367:          CP "K"


 368:          JP Z,INICIO


 369:          CP "k"


 370:          JP Z,INICIO


 371:          CP "S"


 372:          JP Z,SALIR


 373:          CP "s"


 374:          JP Z,SALIR


 375:   


 376:          CALL BORRAR_PAN


 377:          LD IX,LAUX3


 378:          LD A,1


 379:          CALL ENVIAR_MEN


 380:   


 381:          LD IX,LAUX3


 382:          LD A,2


 383:          CALL ENVIAR_MEN


 384:   


 385:          LD IX,LAUX1


 386:          LD A,3


 387:          CALL ENVIAR_MEN


 388:   


 389:          LD IX,LAUX2


 390:          LD A,4


 391:          CALL ENVIAR_MEN


 392:   


 393:  ;RETRASO


 394:          CALL RETRASO


 395:          LD A,E


 396:          CP "K"


 397:          JP Z,INICIO


 398:          CP "k"


 399:          JP Z,INICIO


 400:          CP "S"


 401:          JP Z,SALIR


 402:          CP "s"


 403:          JP Z,SALIR


 404:   


 405:          CALL BORRAR_PAN


 406:          LD IX,LAUX3


 407:          LD A,1


 408:          CALL ENVIAR_MEN


 409:   


 410:          LD IX,LAUX1


 411:          LD A,2


 412:          CALL ENVIAR_MEN


 413:   


 414:          LD IX,LAUX2


 415:          LD A,3


 416:          CALL ENVIAR_MEN


 417:   


 418:          LD IX,LAUX3


 419:          LD A,4


 420:          CALL ENVIAR_MEN


 421:   


 422:          CALL RETRASO


 423:          LD A,E


 424:          CP "K"


 425:          JP Z,INICIO


 426:          CP "k"


 427:          JP Z,INICIO


 428:          CP "S"


 429:          JP Z,SALIR


 430:          CP "s"


 431:          JP Z,SALIR


 432:   


 433:          CALL BORRAR_PAN


 434:          JP ESPOP


 435:   


 436:  ; OPCION 5, SE DESPLAZA A LA DERECHA EL MENSAJE PARA QUE SE VEA EN


 437:  ; FORMA DIAGONAL


 438:  OPC5:


 439:          ; RESGUARDO LA POSICION DE LA SECUENCIA


 440:          PUSH IY


 441:   


 442:          LD IX,LAUX1


 443:          LD A,1


 444:          CALL ENVIAR_MEN


 445:   


 446:          LD IX,LAUX2


 447:          LD A,2


 448:   


 449:          LD B,10


 450:  OPC5_1:        


 451:          DEC IX


 452:          DJNZ OPC5_1


 453:          CALL ENVIAR_MEN


 454:   


 455:          ;RETRASO


 456:          CALL RETRASO


 457:          LD A,E


 458:   


 459:          LD A,1


 460:          LD IX,LAUX3


 461:          CALL ENVIAR_MEN


 462:   


 463:          LD IX,LAUX1


 464:          LD A,3


 465:   


 466:          LD B,20


 467:  OPC5_2:        


 468:          DEC IX


 469:          DJNZ OPC5_2


 470:          CALL ENVIAR_MEN


 471:   


 472:          ;RETRASO


 473:          CALL RETRASO


 474:          LD A,E


 475:   


 476:          LD A,2


 477:          LD IX,LAUX3


 478:          CALL ENVIAR_MEN


 479:   


 480:          LD IX,LAUX2


 481:          LD A,4


 482:   


 483:          LD B,30


 484:  OPC5_3:        


 485:          DEC IX


 486:          DJNZ OPC5_3


 487:          CALL ENVIAR_MEN


 488:   


 489:          ;RETRASO


 490:          CALL RETRASO


 491:          LD A,E


 492:   


 493:          CALL BORRAR_PAN


 494:          JP ESPOP


 495:   


 496:  ; CON ESTA RUTINA SE LIMPIAN LOS MENSAJES CARGANDOLO CON 0


 497:  ; Y REINICIANDO TODO


 498:  LIMPIAR:


 499:          LD IY,MENSAJE1


 500:          LD IX,MENSAJE2


 501:          LD HL,LAUX3


 502:          LD B,64


 503:  LIMPIO:


 504:          LD (IY),0


 505:          LD (IX),0


 506:          LD (HL),20H


 507:          INC IX


 508:          INC IY


 509:          INC HL


 510:          DJNZ LIMPIO


 511:          RET


 512:   


 513:  LIMP_SEC:


 514:          LD IY,MENSAJE3


 515:          LD B,64


 516:  LI_2:        


 517:          LD (IY),0


 518:          INC IY


 519:          DJNZ LI_2


 520:          RET


 521:   


 522:  ; SE UTILIZA PARA COPIAR 64 POSICIONES DE MEMORIA DESDE LA 


 523:  ; DIRECCION APUNTADA POR IX A LA POSICION APUNTADA POR IY


 524:  AUX:


 525:          LD B,64


 526:  AUX1:


 527:          LD A,(IX)


 528:          LD (IY),A


 529:          INC IY


 530:          INC IX


 531:          DJNZ AUX1


 532:          RET


 533:   


 534:  ENTER:


 535:          LD B,1


 536:          RET


 537:   


 538:  ; EN IX DEBE ESTAR LA LINEA A ROTAR PARA DESPLAZAR UN CARACTER


 539:  ; A LA IZQUIERDA


 540:  IZQUI:


 541:          LD B,63


 542:          LD C,(IX)


 543:  LEFT:


 544:          LD A,(IX+1)


 545:          LD (IX),A


 546:          INC IX


 547:          DJNZ LEFT


 548:          LD (IX),C


 549:          RET


 550:   


 551:  ; EN IX DEBE ESTAR LA LINEA A ROTAR PARA DESPLAZAR UN CARACTER A LA 


 552:  ; DERECHA


 553:  DERE:


 554:          LD B,63


 555:          LD C,(IX+63)


 556:  RIGHT:


 557:          LD A,(IX+62)


 558:          LD (IX+63),A


 559:          DEC IX


 560:          DJNZ RIGHT


 561:          LD (IX+63),C


 562:          RET


 563:   


 564:  SALIR:


 565:          RST 38H


 566:   


 567:  ; SE USA LA FUNCION DEL SISTEMA DE DESARROLLO SCAN1 LA CUAL DURA 


 568:  ; ALREDEDOR DE 30 MSEG Y RECOGE SI SE PRESIONA UNA TECLA DURANTE 


 569:  ; SU EJECUCION, PARA AUMENTAR LA DURACION SE DEBEN AGREGAR MAS SCAN1


 570:  RETRASO:    


 571:          CALL SCAN1


 572:          CP 0


 573:          CALL NZ,TVAL


 574:          CALL SCAN1


 575:          CP 0


 576:          CALL NZ,TVAL


 577:          CALL SCAN1


 578:          CP 0


 579:          CALL NZ,TVAL


 580:          CALL SCAN1


 581:          CP 0


 582:          CALL NZ,TVAL


 583:          CALL SCAN1


 584:          CP 0


 585:          CALL NZ,TVAL


 586:          CALL SCAN1


 587:          CP 0


 588:          CALL NZ,TVAL


 589:          CALL SCAN1


 590:          CP 0


 591:          CALL NZ,TVAL


 592:          CALL SCAN1


 593:          CP 0


 594:          CALL NZ,TVAL


 595:          CALL SCAN1


 596:          CP 0


 597:          CALL NZ,TVAL


 598:          RET


 599:  TVAL:


 600:          LD E,A


 601:          RET


 602:   


 603:   


 604:   


 605:          ORG 3000H


 606:  LINEA1        DB "INTRODUCE cARACTERES DE LINEA1:    "


 607:  MENSAJE1    DS 64


 608:          DB 24H


 609:  LINEA2        DB "INTRODUCE cARACTERES DE LINEA2:    "


 610:  MENSAJE2    DS 64


 611:          DB 24H


 612:  LINEA3        DB "INTRODUCE SECUENCIA:    "


 613:  MENSAJE3    DS 64H


 614:          DB 24H


 615:  LAUX3        DS 64


 616:          DB 24H


 617:  LAUX1        DS 64


 618:          DB 24H


 619:  LAUX4        DB "                                             "


 620:          DB "                                             "


 621:          DB 24H


 622:  LAUX2        DS 64


 623:          DB 24H


 624:  TECLA        DB 0


 625:   


 626:  SCAN            EQU 04F1H


 627:  ENVIAR_MEN      EQU 052BH


 628:  BORRAR_PAN      EQU 055CH


 629:  SCAN1        EQU 0508H


 630:          END


 631:   


 632:   


 633:  ; PARA AGREGAR MAS TIEMPO DE RETRASO AGREGAR ESTAS LINEAS TAL CUAL


 634:          CALL SCAN1


 635:          CP 0


 636:          CALL NZ,TVAL


No hay comentarios:

Publicar un comentario