📄 l51_bank.lst
字号:
ENDIF
645
646 SWITCH MACRO N
647 ORG N * 16
648 PUBLIC ?B_SWITCH&N
649 ?B_SWITCH&N:
650 MOV R0,A
651 MOV A,#BANK&N
652 MOV DPTR,#?B_XDATAPORT
653 MOV ?B_CURRENTBANK,A
654 MOVX @DPTR,A
655 MOV A,R0
656 RET
A51 MACRO ASSEMBLER L51_BANK 03/28/2006 09:48:44 PAGE 4
657 ENDM
658
659 ENDIF
660
661
662 SELECT MACRO N
663 LOCAL XLABEL, YLABEL
664
665 PUBLIC ?B_BANK&N
666 ?B_BANK&N:
667 MOV A,?B_CURRENTBANK
668 ANL A,#?B_MASK
669 CONVBANKNO ; Convert Bank Number to Address
670 PUSH ACC
671 MOV A,#HIGH ?BANK?SWITCH
672 PUSH ACC
673 PUSH DPL
674 PUSH DPH
675 LJMP ?B_SWITCH&N
676
677 ENDM
678
679
680 ?BANK?SELECT SEGMENT CODE
681
---- 682 RSEG ?BANK?SELECT
0000 683 CNT SET 0
684
685 REPT ?B_NBANKS
686 SELECT %CNT
687 CNT SET CNT+1
688
689 ENDM
690+1 SELECT %CNT
707+1 SELECT %CNT
724+1 SELECT %CNT
741+1 SELECT %CNT
758+1 SELECT %CNT
775+1 SELECT %CNT
792+1 SELECT %CNT
809+1 SELECT %CNT
826
827
828
829 ?BANK?SWITCH SEGMENT CODE PAGE
830
---- 831 RSEG ?BANK?SWITCH
0000 832 CNT SET 0
833
834 REPT ?B_NBANKS
835 SWITCH %CNT
836
837 CNT SET CNT+1
838 ENDM
839+1 SWITCH %CNT
852+1 SWITCH %CNT
865+1 SWITCH %CNT
878+1 SWITCH %CNT
891+1 SWITCH %CNT
904+1 SWITCH %CNT
917+1 SWITCH %CNT
930+1 SWITCH %CNT
943
ENDIF
952
ENDIF
A51 MACRO ASSEMBLER L51_BANK 03/28/2006 09:48:44 PAGE 5
960
961 ENDIF ; close block IF ?B_MODE = 1 *******************************************
962
963
ENDIF ; close block IF ?B_MODE = 4 *******************************************
1036
---- 1037 RSEG ?BANK?SELECT
1038
1039 ;************************ SWITCHBANK FUNCTION *******************************
1040 ; *
1041 ; SWITCHBANK allows use of bank-switching for C programs *
1042 ; *
1043 ; prototype: extern switchbank (unsigned char bank_number); *
1044 ; *
1045 ;******************************************************************************
1046 PUBLIC _SWITCHBANK, ?B_SWITCHBANK_A
1047
0090 EF 1048 _SWITCHBANK: MOV A,R7
1049
ENDIF ; close block IF ?B_MODE = 0 *******************************************
1066
1067 IF ?B_MODE = 1 ;***************************************************************
1068
0091 1069 ?B_SWITCHBANK_A:
ENDIF
1074
1075 IF ?B_NBANKS <= 16
0091 C4 1076 SWAP A
1077 ENDIF
0092 900000 F 1078 MOV DPTR,#?BANK?SWITCH
0095 73 1079 JMP @A+DPTR
1080
1081 ENDIF ; close block IF ?B_MODE = 1 *******************************************
1082
ENDIF ; close block IF ?B_MODE = 4 *******************************************
1112
1113
ENDIF ; close block IF ?B_VAR_BANKING ****************************************
1526
A51 MACRO ASSEMBLER L51_BANK 03/28/2006 09:48:44 PAGE 6
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?BANK?DATA . . . . D SEG 0001H REL=UNIT
?BANK?SELECT . . . C SEG 0096H REL=UNIT
?BANK?SWITCH . . . C SEG 007BH REL=PAGE
?BANK?SWITCHING. . N NUMB -----
?B_BANK0 . . . . . C ADDR 0000H R SEG=?BANK?SELECT
?B_BANK1 . . . . . C ADDR 0012H R SEG=?BANK?SELECT
?B_BANK2 . . . . . C ADDR 0024H R SEG=?BANK?SELECT
?B_BANK3 . . . . . C ADDR 0036H R SEG=?BANK?SELECT
?B_BANK4 . . . . . C ADDR 0048H R SEG=?BANK?SELECT
?B_BANK5 . . . . . C ADDR 005AH R SEG=?BANK?SELECT
?B_BANK6 . . . . . C ADDR 006CH R SEG=?BANK?SELECT
?B_BANK7 . . . . . C ADDR 007EH R SEG=?BANK?SELECT
?B_CURRENTBANK . . D ADDR 0000H R SEG=?BANK?DATA
?B_FACTOR. . . . . N NUMB 0001H A
?B_FIRSTBIT. . . . N NUMB 0000H A
?B_MASK. . . . . . N NUMB 0007H A
?B_MODE. . . . . . N NUMB 0001H A
?B_NBANKS. . . . . N NUMB 0008H A
?B_RST_BANK. . . . N NUMB 00FFH A
?B_RTX . . . . . . N NUMB 0000H A
?B_SWITCH0 . . . . C ADDR 0000H R SEG=?BANK?SWITCH
?B_SWITCH1 . . . . C ADDR 0010H R SEG=?BANK?SWITCH
?B_SWITCH2 . . . . C ADDR 0020H R SEG=?BANK?SWITCH
?B_SWITCH3 . . . . C ADDR 0030H R SEG=?BANK?SWITCH
?B_SWITCH4 . . . . C ADDR 0040H R SEG=?BANK?SWITCH
?B_SWITCH5 . . . . C ADDR 0050H R SEG=?BANK?SWITCH
?B_SWITCH6 . . . . C ADDR 0060H R SEG=?BANK?SWITCH
?B_SWITCH7 . . . . C ADDR 0070H R SEG=?BANK?SWITCH
?B_SWITCHBANK_A. . C ADDR 0091H R SEG=?BANK?SELECT
?B_VAR_BANKING . . N NUMB 0000H A
?B_XDATAPORT . . . N NUMB 02E0H A
?C_INITSEG . . . . C SEG 0007H REL=UNIT
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
BANK0. . . . . . . N NUMB 0000H A
BANK1. . . . . . . N NUMB 0001H A
BANK2. . . . . . . N NUMB 0002H A
BANK3. . . . . . . N NUMB 0003H A
BANK4. . . . . . . N NUMB 0004H A
BANK5. . . . . . . N NUMB 0005H A
BANK6. . . . . . . N NUMB 0006H A
BANK7. . . . . . . N NUMB 0007H A
B_SWITCH_SIZE. . . ---- -----
CNT. . . . . . . . N NUMB 0008H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
EA . . . . . . . . B ADDR 00A8H.7 A
IE . . . . . . . . D ADDR 00A8H A
LONG_MACRO . . . . ---- -----
MASK . . . . . . . N NUMB 0007H A
N. . . . . . . . . ---- -----
SAVEA. . . . . . . ---- -----
_SWITCHBANK. . . . C ADDR 0090H R SEG=?BANK?SELECT
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -