⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 push_box.lst

📁 使用PROTEUS仿真的推箱子游戏,全汇编格式,通过按钮操作,1602显示
💻 LST
📖 第 1 页 / 共 5 页
字号:
059A 2582       +1   561             ADD A,DPL
059C F582       +1   562             MOV DPL,A
059E C5F0       +1   563             XCH A,B
05A0 3583       +1   564             ADDC A,DPH
05A2 F583       +1   565             MOV DPH,A
                +1   566            
05A4 7A40       +1   567             MOV R2,#40H             ;
05A6 7980       +1   568             MOV R1,#lcd_ram_addr
05A8 7400       +1   569     STORE1: MOV  A, #00H
05AA 93         +1   570             MOVC A,@A+DPTR
05AB B40402     +1   571             CJNE A,#04H,STORE2      ;
05AE 8937       +1   572             MOV MAN_POSITION,R1
05B0 F7         +1   573     STORE2: MOV @R1,A
05B1 09         +1   574             INC R1
05B2 A3         +1   575             INC DPTR
05B3 DAF3       +1   576             DJNZ R2,STORE1
                +1   577      
05B5 D202       +1   578             SETB DISPLAY_FLAG      
05B7 1205E1     +1   579             LCALL ENABLE_TIMER1
05BA            +1   580     START_GAME_RTN:
05BA 22         +1   581             RET
                +1   582     ;===========================================================
05BB            +1   583     CHECK_STAGE_UPGRADE:
05BB A203       +1   584             MOV C,CHECK_UPGRADE
05BD 5021       +1   585             JNC CHECK_STAGE_UPGRADE_RTN
05BF C203       +1   586             CLR CHECK_UPGRADE
05C1 C3         +1   587             CLR C
A51 MACRO ASSEMBLER  PUSH_BOX                                                             12/01/2007 13:29:27 PAGE    12

                +1   588     
05C2 7F40       +1   589             MOV R7,#data_num        ;
05C4 7D00       +1   590             MOV R5,#00H             ;
05C6 7880       +1   591             MOV R0,#lcd_ram_addr
05C8            +1   592     CHECK_NEXT:
05C8 E6         +1   593             MOV A,@R0
05C9 B42301     +1   594             CJNE A,#23H,NO_MATCH
05CC 0D         +1   595             INC R5
05CD            +1   596     NO_MATCH:
05CD 08         +1   597             INC R0
05CE DFF8       +1   598             DJNZ R7,CHECK_NEXT
                +1   599            
05D0 9000DB     +1   600             MOV DPTR,#BOXNUM_TAB
05D3 E536       +1   601             MOV A,STAGE_INDEX       ;
05D5 93         +1   602             MOVC A,@A+DPTR          ;                               
05D6 6D         +1   603             XRL A,R5                ;
05D7 7007       +1   604             JNZ  CHECK_STAGE_UPGRADE_RTN
                +1   605       
05D9 0536       +1   606             INC STAGE_INDEX         ;
05DB 1205F6     +1   607             LCALL DELAY40MS ;
05DE D201       +1   608             SETB STAGE_UPGRADE      ;
                +1   609     
05E0            +1   610     CHECK_STAGE_UPGRADE_RTN:
05E0 22         +1   611             RET
                +1   612     ;==========================================================
                +1   613     ;4ms
05E1            +1   614     ENABLE_TIMER1:  
05E1 758910     +1   615             MOV     TMOD,#10H       ;
05E4 758DF0     +1   616             MOV     TH1,#0F0H
05E7 758B60     +1   617             MOV     TL1,#060H
05EA D2AF       +1   618             SETB    EA
05EC D2AB       +1   619             SETB    ET1
05EE D28E       +1   620             SETB    TR1
05F0 22         +1   621             RET
                +1   622     ;==========================================================
05F1            +1   623     DISABLE_TIMER1: 
05F1 C2AB       +1   624             CLR     ET1
05F3 C28E       +1   625             CLR     TR1
05F5 22         +1   626             RET
                +1   627     ;==========================================================
05F6            +1   628     DELAY40MS:      
05F6 753EC8     +1   629             MOV     DELAY_CT2,#0C8H
05F9            +1   630     DELAY40MS_LOOP: 
05F9 753D64     +1   631             MOV     DELAY_CT1,#64H
05FC D53DFD     +1   632             DJNZ    DELAY_CT1,$
05FF D53EF7     +1   633             DJNZ    DELAY_CT2,DELAY40MS_LOOP
0602 22         +1   634             RET
                +1   635     ;===========================================================
                +1   636     
                     637     
                     638             ;#include <_normal_key_function.a51>
                +1   639     
                +1   640     ;===============================================
0603            +1   641     KEY_FUNCTION:
0603 A200       +1   642             MOV     C,KEY_FLAG
0605 501D       +1   643             JNC     KEY_FUNCTION_RET
0607 C200       +1   644             CLR     KEY_FLAG
                +1   645     
0609 853435     +1   646             MOV     KEY_VALUE_BUF,KEY_VALUE
060C 900625     +1   647             MOV     DPTR,#KEY_FUNC_TABLE
060F E535       +1   648             MOV     A,KEY_VALUE_BUF
0611 C3         +1   649             CLR     C
0612 23         +1   650             RL      A
0613 F535       +1   651             MOV     KEY_VALUE_BUF,A
0615 93         +1   652             MOVC    A,@A+DPTR
0616 C0E0       +1   653             PUSH    ACC
A51 MACRO ASSEMBLER  PUSH_BOX                                                             12/01/2007 13:29:27 PAGE    13

0618 E535       +1   654             MOV     A,KEY_VALUE_BUF
061A 04         +1   655             INC     A
061B 93         +1   656             MOVC    A,@A+DPTR
061C F582       +1   657             MOV     DPL,A
061E D0E0       +1   658             POP     ACC
0620 F583       +1   659             MOV     DPH,A
0622 E4         +1   660             CLR     A
0623 73         +1   661             JMP     @A+DPTR
                +1   662     
0624            +1   663     KEY_FUNCTION_RET:
0624 22         +1   664             RET                   
                +1   665     ;===============================================
0625            +1   666     KEY_FUNC_TABLE:
0625 0643       +1   667             DW NORMAL_KEY1 ,NORMAL_KEY2 ,NORMAL_KEY3 ,NORMAL_KEY4 ,NORMAL_KEY5
0627 069C                    
0629 06E4                    
062B 0730                    
062D 078D                    
062F 0798       +1   668             DW NORMAL_KEY6 ,NORMAL_KEY7 ,NORMAL_KEY8 ,NORMAL_KEY9 ,NORMAL_KEY10
0631 079B                    
0633 079C                    
0635 079D                    
0637 079E                    
0639 079F       +1   669             DW NORMAL_KEY11,NORMAL_KEY12,NORMAL_KEY13,NORMAL_KEY14,NORMAL_KEY15
063B 07A0                    
063D 07A1                    
063F 07A2                    
0641 07A3                    
                +1   670     ;===============================================
                +1   671     ;向上键子程序
0643            +1   672     NORMAL_KEY1:
0643 A205       +1   673             MOV  C,START_GAME_FLAG
0645 5054       +1   674             JNC  NORMAL_KEY1_RET
                +1   675     
0647 A837       +1   676             MOV R0,MAN_POSITION
0649 C3         +1   677     GOUP:   CLR  C
064A E8         +1   678             MOV  A,R0
064B 9408       +1   679             SUBB A,#08H             ;
064D F8         +1   680             MOV  R0,A
                +1   681            
064E E6         +1   682             MOV  A,@R0
064F 540F       +1   683             ANL  A,#0FH
0651 B40102     +1   684             CJNE A,#wall_code,U111   ;
0654 C19B       +1   685             AJMP NORMAL_KEY1_RET
                +1   686            
0656 B40331     +1   687       U111: CJNE A,#box_code,U222   
0659 E8         +1   688             MOV  A,R0
065A C3         +1   689             CLR  C
065B 9408       +1   690             SUBB A,#08H             ;
065D F8         +1   691             MOV  R0,A
065E E6         +1   692             MOV  A,@R0
065F 540F       +1   693             ANL  A,#0FH
0661 B40102     +1   694             CJNE A,#wall_code,U11    ;
0664 C19B       +1   695             AJMP NORMAL_KEY1_RET
                +1   696            
0666 B40302     +1   697        U11: CJNE A,#box_code,U12    ;
0669 C19B       +1   698             AJMP NORMAL_KEY1_RET
                +1   699            
066B C4         +1   700        U12: SWAP A
066C 4403       +1   701             ORL  A,#box_code
066E F6         +1   702             MOV  @R0,A
066F E8         +1   703             MOV  A,R0
0670 2408       +1   704             ADD  A,#08H
0672 F8         +1   705             MOV  R0,A
0673 8837       +1   706             MOV  MAN_POSITION,R0
0675 E6         +1   707             MOV  A,@R0
A51 MACRO ASSEMBLER  PUSH_BOX                                                             12/01/2007 13:29:27 PAGE    14

0676 54F0       +1   708             ANL  A,#0F0H
0678 4404       +1   709             ORL  A,#man_code
067A F6         +1   710             MOV  @R0,A
067B E8         +1   711             MOV  A,R0
067C 2408       +1   712             ADD  A,#08H
067E F8         +1   713             MOV  R0,A
067F E6         +1   714             MOV  A,@R0
0680 54F0       +1   715             ANL  A,#0F0H
0682 C4         +1   716             SWAP A
0683 F6         +1   717             MOV  @R0,A
0684 D202       +1   718             SETB DISPLAY_FLAG
0686 D203       +1   719             SETB CHECK_UPGRADE
0688 C19B       +1   720             AJMP NORMAL_KEY1_RET
                +1   721     
068A C4         +1   722       U222: SWAP A
068B 4404       +1   723             ORL A,#man_code
068D F6         +1   724             MOV @R0,A
068E 8837       +1   725             MOV MAN_POSITION,R0
0690 E8         +1   726             MOV A,R0
0691 2408       +1   727             ADD A,#08H
0693 F8         +1   728             MOV R0,A
0694 E6         +1   729             MOV A,@R0
0695 54F0       +1   730             ANL A,#0F0H
0697 C4         +1   731             SWAP A
0698 F6         +1   732             MOV @R0,A
0699 D202       +1   733             SETB DISPLAY_FLAG 
                +1   734     
069B            +1   735     NORMAL_KEY1_RET:
069B 22         +1   736             RET
                +1   737     ;===============================================
                +1   738     ;;向左键子程序
069C            +1   739     NORMAL_KEY2:
069C A205       +1   740             MOV  C,START_GAME_FLAG
069E 5043       +1   741             JNC  NORMAL_KEY2_RET
                +1   742     
06A0 A837       +1   743             MOV R0,MAN_POSITION
06A2 18         +1   744     GOLEFT: DEC  R0
06A3 E6         +1   745             MOV  A,@R0
06A4 540F       +1   746             ANL  A,#0FH
06A6 B40102     +1   747             CJNE A,#wall_code,L111
06A9 C1E3       +1   748             AJMP NORMAL_KEY2_RET
                +1   749            
06AB B40327     +1   750       L111: CJNE A,#box_code,L222
06AE 18         +1   751             DEC  R0
06AF E6         +1   752             MOV  A,@R0
06B0 540F       +1   753             ANL  A,#0FH
06B2 B40102     +1   754             CJNE A,#wall_code,L11
06B5 C1E3       +1   755             AJMP NORMAL_KEY2_RET
                +1   756            
06B7 B40302     +1   757        L11: CJNE A,#box_code,L12
06BA C1E3       +1   758             AJMP NORMAL_KEY2_RET
                +1   759            
06BC            +1   760        L12: 
06BC C4         +1   761             SWAP A
06BD 4403       +1   762             ORL A,#box_code
06BF F6         +1   763             MOV @R0,A
06C0 08         +1   764             INC R0
06C1 8837       +1   765             MOV MAN_POSITION,R0
06C3 E6         +1   766             MOV A,@R0
06C4 54F0       +1   767             ANL A,#0F0H
06C6 4404       +1   768             ORL A,#man_code
06C8 F6         +1   769             MOV @R0,A
06C9 08         +1   770             INC R0
06CA E6         +1   771             MOV A,@R0
06CB 54F0       +1   772             ANL A,#0F0H
06CD C4         +1   773             SWAP A
A51 MACRO ASSEMBLER  PUSH_BOX                                                             12/01/2007 13:29:27 PAGE    15

06CE F6         +1   774             MOV @R0,A
06CF D202       +1   775             SETB DISPLAY_FLAG
06D1 D203       +1   776             SETB CHECK_UPGRADE
06D3 C1E3       +1   777             AJMP NORMAL_KEY2_RET
                +1   778     
06D5 C4         +1   779       L222: SWAP A
06D6 4404       +1   780             ORL A,#man_code

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -