📄 ex3-9.lst
字号:
02D5 22 506 RET
507
508 ;---------------------------------
509 ; THE MOST INPORTANT FUNTION
510 ; DIR UP FOUR BIT MEAN CURRENT DIRECRTION
511 ; DOWN FOUR BIT MEAN NEXT DIRECTION
512 ; (UP TO DOWN) 0000
513 ; 1000 UP
514 ; 0100 DOWN
515 ; 0010 LEFT
516 ; 0001 RIGHT;
517 ; FOR INSTANT 0010 0100 MEAN CURRENT LEFT,NEXT DOWN;
518 ;
02D6 E53E 519 SNAG: MOV A,DIR; ;TO DISPLAY THE MOVING SNAG;
02D8 B48803 520 CJNE A,#10001000B,SNAG2;
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 9
02DB 020336 521 LJMP UPUP;
522 ;SNAG1: MOV A,DIR;
523 ; CJNE A,#10000100B,SNAG2;
524 ; LJMP UPDOWN;
02DE E53E 525 SNAG2: MOV A,DIR;
02E0 B48203 526 CJNE A,#10000010B,SNAG3;
02E3 02033B 527 LJMP UPLEFT;
02E6 E53E 528 SNAG3: MOV A,DIR;
02E8 B48103 529 CJNE A,#10000001B,SNAG5;
02EB 020340 530 LJMP UPRIGHT;
531
532 ;SNAG4: MOV A,DIR;
533 ; CJNE A,#01001000B,SNAG5;
534 ; LJMP DOWNUP;
02EE E53E 535 SNAG5: MOV A,DIR;
02F0 B44403 536 CJNE A,#01000100B,SNAG6;
02F3 020345 537 LJMP DOWNDOWN;
02F6 E53E 538 SNAG6: MOV A,DIR;
02F8 B44203 539 CJNE A,#01000010B,SNAG7;
02FB 02034A 540 LJMP DOWNLEFT;
02FE E53E 541 SNAG7: MOV A,DIR;
0300 B44103 542 CJNE A,#01000001B,SNAG8;
0303 02034F 543 LJMP DOWNRIGHT;
544
0306 E53E 545 SNAG8: MOV A,DIR;
0308 B42803 546 CJNE A,#00101000B,SNAG9;
030B 020359 547 LJMP LEFTUP;
030E E53E 548 SNAG9: MOV A,DIR;
0310 B42403 549 CJNE A,#00100100B,SNAGA;
0313 02035E 550 LJMP LEFTDOWN;
0316 E53E 551 SNAGA: MOV A,DIR;
0318 B42203 552 CJNE A,#00100010B,SNAGC;
031B 020354 553 LJMP LEFTLEFT;
554 ;SNAGB: MOV A,DIR;
555 ; CJNE A,#00100001B,SNAGC;
556 ; LJMP LEFTRIGHT;
557
558
031E E53E 559 SNAGC: MOV A,DIR;
0320 B41803 560 CJNE A,#00011000B,SNAGD;
0323 020363 561 LJMP RIGHTUP;
0326 E53E 562 SNAGD: MOV A,DIR;
0328 B41403 563 CJNE A,#00010100B,SNAGF;
032B 020368 564 LJMP RIGHTDOWN;
565 ;SNAGE: MOV A,DIR;
566 ; CJNE A,#00010010B,SNAGF;
567 ; LJMP RIGHTLEFT;
032E E53E 568 SNAGF: MOV A,DIR;
0330 B4113F 569 CJNE A,#00010001B,SNAGEND;
0333 02036D 570 LJMP RIGHTRIGHT;
571
0336 153B 572 UPUP: DEC HEADY;
573 ;DEC TAILY;
0338 020372 574 LJMP SNAGEND;
033B 153A 575 UPLEFT:DEC HEADX;
033D 020372 576 LJMP SNAGEND;
0340 053A 577 UPRIGHT:INC HEADX
0342 020372 578 LJMP SNAGEND;
579
580
0345 053B 581 DOWNDOWN:INC HEADY
0347 020372 582 LJMP SNAGEND;
034A 153A 583 DOWNLEFT:DEC HEADX
034C 020372 584 LJMP SNAGEND;
034F 053A 585 DOWNRIGHT:INC HEADX;
0351 020372 586 LJMP SNAGEND;
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 10
587
588
0354 153A 589 LEFTLEFT: DEC HEADX
0356 020372 590 LJMP SNAGEND;
0359 153B 591 LEFTUP: DEC HEADY
035B 020372 592 LJMP SNAGEND;
035E 053B 593 LEFTDOWN: INC HEADY
0360 020372 594 LJMP SNAGEND;
595
596
0363 153B 597 RIGHTUP: DEC HEADY
0365 020372 598 LJMP SNAGEND;
0368 053B 599 RIGHTDOWN: INC HEADY
036A 020372 600 LJMP SNAGEND;
036D 053A 601 RIGHTRIGHT: INC HEADX
036F 020372 602 LJMP SNAGEND;
603
0372 604 SNAGEND:
605
0372 853A38 606 MOV PX,HEADX; IF THE SNAG ENCOUNTER THE WALL
0375 853B39 607 MOV PY,HEADY;
0378 1201EE 608 LCALL READXY;
037B 200053 609 JB ERR,SNAGEND1;
610
611 ;NORMLY PROGRAMMING
037E 853A38 612 MOV PX,HEADX; TO ADD THE HEADER
0381 853B39 613 MOV PY,HEADY;
0384 12015E 614 LCALL DISPXY;
615 ; TO REFINE THE SNAG BODY;
0387 053F 616 INC HEADXA;
0389 A83F 617 MOV R0,HEADXA;
038B A638 618 MOV @R0,PX;
619
038D 0540 620 INC HEADYA;
038F A840 621 MOV R0,HEADYA;
0391 A639 622 MOV @R0,PY;
623 ; IF THE SNAG ENCOUNTER THE SPOT
0393 120297 624 LCALL TOSPOT;
0396 20013E 625 JB ENSPOT,SNAGEND5;
626 ; TO REDUCE THE TAIL
0399 853C38 627 MOV PX,TAILX;
039C 853D39 628 MOV PY,TAILY;
039F 1201A6 629 LCALL UNDISPXY;
630
03A2 0542 631 INC TAILXA;
03A4 A842 632 MOV R0,TAILXA;
03A6 863C 633 MOV TAILX,@R0;
634
03A8 0543 635 INC TAILYA;
03AA A843 636 MOV R0,TAILYA;
03AC 863D 637 MOV TAILY,@R0;
638 ; TO MOVE ALL THE NUMBER FROM TAILXA---HEADXA
639 ; TO (TAILXA-1) AND (HEADXA-1)
03AE A842 640 MOV R0,TAILXA;
03B0 AA41 641 MOV R2,SNAGLNG;
642
03B2 643 SNAGEND3:
03B2 E8 644 MOV A,R0;
03B3 F9 645 MOV R1,A;
646
03B4 19 647 DEC R1;
648
03B5 E6 649 MOV A,@R0;
03B6 F7 650 MOV @R1,A;
651
03B7 08 652 INC R0;
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 11
03B8 DAF8 653 DJNZ R2,SNAGEND3;
03BA 1542 654 DEC TAILXA;
03BC 153F 655 DEC HEADXA;
656 ; TO MOVE THE DATA FROM HEADY TO TAILY;
03BE A843 657 MOV R0,TAILYA;
03C0 AA41 658 MOV R2,SNAGLNG
03C2 659 SNAGEND4:
03C2 E8 660 MOV A,R0;
03C3 F9 661 MOV R1,A;
662
03C4 19 663 DEC R1;
664
03C5 E6 665 MOV A,@R0;
03C6 F7 666 MOV @R1,A;
667
03C7 08 668 INC R0;
03C8 DAF8 669 DJNZ R2,SNAGEND4;
03CA 1543 670 DEC TAILYA;
03CC 1540 671 DEC HEADYA;
03CE 0203E1 672 LJMP SNAGEND2;
673
03D1 12027B 674 SNAGEND1: LCALL ERROR; TO ENCOUNTER THE WALL
03D4 0203E1 675 LJMP SNAGEND2;
03D7 676 SNAGEND5:
677
03D7 0541 678 INC SNAGLNG;
03D9 C201 679 CLR ENSPOT;
03DB 300203 680 JNB ALL,SNAGEND2;
03DE 1202BA 681 LCALL ALLSPOT;
682
03E1 683 SNAGEND2:
03E1 22 684 RET;
685 ;---------------KEY SUB-------------------
686 ;;;;;;;;;KEYBOARD;;;;;;;;;;;;;;;;;;;
687 ; KEYBOARD PART
688 ; 2005/8/14
689 ; ROW 1 2 3 4
690 ; COL 5 6 7 8
691 ; 9 0 A B
692 ; C D E F
693 ; R0 REPRESENT KEYVALUE=ROW*4+COL
694 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
03E2 695 KEYBOARD:
03E2 7800 696 MOV R0,#00H;
03E4 75A00F 697 ROW: MOV KEYIN,#0FH;
03E7 30A00B 698 ROW00:JNB KEYIN.0,ROW0;
03EA 30A111 699 ROW01:JNB KEYIN.1,ROW1;
03ED 30A217 700 ROW02:JNB KEYIN.2,ROW2;
03F0 30A31D 701 ROW03:JNB KEYIN.3,ROW3;
702 ;JMP ROW00;
03F3 806E 703 JMP KEYBOARDEND;
704
03F5 B1D8 705 ROW0: CALL DELAY;
03F7 20A0F0 706 JB KEYIN.0,ROW01;
03FA 7800 707 MOV R0,#00H;
03FC 801B 708 JMP COL;
03FE B1D8 709 ROW1: CALL DELAY;
0400 20A1EA 710 JB KEYIN.1,ROW02;
0403 7801 711 MOV R0,#01H;
0405 8012 712 JMP COL;
0407 B1D8 713 ROW2: CALL DELAY;
0409 20A2E4 714 JB KEYIN.2,ROW03;
040C 7803 715 MOV R0,#03H;
040E 8009 716 JMP COL;
0410 B1D8 717 ROW3: CALL DELAY;
0412 20A3D2 718 JB KEYIN.3,ROW00;
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 12
0415 7802 719 MOV R0,#02H;
0417 8000 720 JMP COL;
721
0419 75A0F0 722 COL: MOV KEYIN,#0F0H;
041C 30A40B 723 COL00:JNB KEYIN.4,COL0;
041F 30A513 724 COL01:JNB KEYIN.5,COL1;
0422 30A61B 725 COL02:JNB KEYIN.6,COL2;
0425 30A723 726 COL03:JNB KEYIN.7,COL3;
727 ;JMP COL00;
0428 8039 728 JMP KEYBOARDEND;
729
042A B1D8 730 COL0: CALL DELAY;
042C 20A4F0 731 JB KEYIN.4,COL01;
042F 7400 732 MOV A,#00H;
0431 48 733 ORL A,R0;
0432 F8 734 MOV R0,A;
0433 8021 735 JMP KEY;
0435 B1D8 736 COL1: CALL DELAY;
0437 20A5E8 737 JB KEYIN.5,COL02;
043A 7410 738 MOV A,#10H;
043C 48 739 ORL A,R0;
043D F8 740 MOV R0,A;
043E 8016 741 JMP KEY;
0440 B1D8 742 COL2: CALL DELAY;
0442 20A6E0 743 JB KEYIN.6,COL03;
0445 7420 744 MOV A,#20H;
0447 48 745 ORL A,R0;
0448 F8 746 MOV R0,A;
0449 800B 747 JMP KEY;
044B B1D8 748 COL3: CALL DELAY;
044D 20A7CC 749 JB KEYIN.7,COL00;
0450 7430 750 MOV A,#30H;
0452 48 751 ORL A,R0;
0453 F8 752 MOV R0,A;
0454 8000 753 JMP KEY;
754
0456 E8 755 KEY: MOV A,R0;R0 H BIT COL WEIGH 4 ,R0 L BIT ROW WEIGHT 1;
0457 C4 756 SWAP A; 00010001
0458 540F 757 ANL A,#0FH; 0000 0001
045A 23 758 RL A;
045B 23 759 RL A; 0000 0100
045C 28 760 ADD A,R0; 0001 0101
045D 540F 761 ANL A,#0FH; 0000 0101
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -