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

📄 l51_bank.lst

📁 基于51的智能卡操作系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     369     
                     370     
                     371       ; Macro code to select the 'N'
                     372       SWITCH        MACRO   N
                     373                     ORG     N * 8
                     374                     PUBLIC  ?B_SWITCH&N
                     375       ?B_SWITCH&N:
                     376         IF  N <> 0
                     377                     ORL     ?B_CURRENTBANK,#?B_MASK
                     378         ENDIF
                     379         IF  N <> (?B_NBANKS-1)
                     380                     ANL     ?B_CURRENTBANK,#(BANK&N OR NOT ?B_MASK) 
                     381         ENDIF
                     382                     RET
                     383                     ENDM
                     384     
                     385     ENDIF
                     386     
                     387     
                     388     SELECT          MACRO   N
                     389     LOCAL           XLABEL, YLABEL
                     390     
                     391                     PUBLIC  ?B_BANK&N
                     392     ?B_BANK&N:      
                     393                     MOV     A,?B_CURRENTBANK
                     394                     ANL     A,#?B_MASK
                     395                     CONVBANKNO         ; Convert Bank Number to Address
                     396                     PUSH    ACC
A51 MACRO ASSEMBLER  L51_BANK                                                             03/31/2006 10:32:12 PAGE     4

                     397                     MOV     A,#HIGH ?BANK?SWITCH
                     398                     PUSH    ACC
                     399                     PUSH    DPL
                     400                     PUSH    DPH
                     401                     LJMP    ?B_SWITCH&N
                     402                     ENDM
                     403     
                     404     
                     405     ?BANK?SELECT    SEGMENT  CODE
                     406     
----                 407                     RSEG    ?BANK?SELECT
  0000               408     CNT             SET     0
                     409     
                     410                     REPT    ?B_NBANKS
                     411                     SELECT  %CNT
                     412     CNT             SET     CNT+1
                     413     
                     414                     ENDM
                     415+1                   SELECT  %CNT
                     431+1                   SELECT  %CNT
                     447+1                   SELECT  %CNT
                     463+1                   SELECT  %CNT
                     479     
                     480     
                     481     
                     482     
                     483     ?BANK?SWITCH    SEGMENT  CODE  PAGE
                     484     
----                 485                     RSEG    ?BANK?SWITCH
  0000               486     CNT             SET     0
                     487     
                     488                     REPT    ?B_NBANKS
                     489                     SWITCH  %CNT
                     490     
                     491     CNT             SET     CNT+1
                     492                     ENDM
                     493+1                   SWITCH  %CNT
                     506+1                   SWITCH  %CNT
                     519+1                   SWITCH  %CNT
                     532+1                   SWITCH  %CNT
                     545     
                     546     
                               ENDIF
                     584     
                     585     
                     586     ENDIF  ; close block IF ?B_MODE = 0 *******************************************
                     587     
                     588     
                             ENDIF  ; close block IF ?B_MODE = 1 *******************************************
                     830     
                     831     
                             ENDIF  ; close block IF ?B_MODE = 4 *******************************************
                     904     
----                 905                     RSEG    ?BANK?SELECT
                     906     
                     907     ;************************  SWITCHBANK FUNCTION  *******************************
                     908     ;                                                                             *
                     909     ; SWITCHBANK allows use of bank-switching for C programs                      *
                     910     ;                                                                             *
                     911     ; prototype:   extern switchbank (unsigned char bank_number);                 *
                     912     ;                                                                             *
                     913     ;******************************************************************************
                     914                     PUBLIC  _SWITCHBANK, ?B_SWITCHBANK_A
                     915     
0048 EF              916     _SWITCHBANK:    MOV     A,R7
                     917     
A51 MACRO ASSEMBLER  L51_BANK                                                             03/31/2006 10:32:12 PAGE     5

                     918     IF  ?B_MODE = 0 ;**************************************************************
                     919     
0049                 920     ?B_SWITCHBANK_A:
                             ENDIF
                     925     
                     926     IF ?B_NBANKS <= 16 AND ?B_RTX = 0
0049 C4              927                     SWAP    A
004A 03              928                     RR      A
                     929     ENDIF
004B 900000   F      930                     MOV     DPTR,#?BANK?SWITCH
004E 73              931                     JMP     @A+DPTR
                     932     
                     933     ENDIF  ; close block IF ?B_MODE = 0 *******************************************
                     934     
                             ENDIF  ; close block IF ?B_MODE = 1 *******************************************
                     950     
                             ENDIF  ; close block IF ?B_MODE = 4 *******************************************
                     979     
                     980     
                             ENDIF  ; close block IF ?B_VAR_BANKING ****************************************
                    1306     
A51 MACRO ASSEMBLER  L51_BANK                                                             03/31/2006 10:32:12 PAGE     6

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

?BANK?SELECT . . .  C SEG    004FH       REL=UNIT
?BANK?SWITCH . . .  C SEG    001CH       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_CURRENTBANK . .  D ADDR   00B0H   A   
?B_FACTOR. . . . .  N NUMB   0010H   A   
?B_FIRSTBIT. . . .  N NUMB   0004H   A   
?B_MASK. . . . . .  N NUMB   0030H   A   
?B_MODE. . . . . .  N NUMB   0000H   A   
?B_NBANKS. . . . .  N NUMB   0004H   A   
?B_PORT. . . . . .  D ADDR   00B0H   A   
?B_RST_BANK. . . .  N NUMB   0000H   A   
?B_RTX . . . . . .  N NUMB   0000H   A   
?B_SWITCH0 . . . .  C ADDR   0000H   R   SEG=?BANK?SWITCH
?B_SWITCH1 . . . .  C ADDR   0008H   R   SEG=?BANK?SWITCH
?B_SWITCH2 . . . .  C ADDR   0010H   R   SEG=?BANK?SWITCH
?B_SWITCH3 . . . .  C ADDR   0018H   R   SEG=?BANK?SWITCH
?B_SWITCHBANK_A. .  C ADDR   0049H   R   SEG=?BANK?SELECT
?B_VAR_BANKING . .  N NUMB   0000H   A   
ACC. . . . . . . .  D ADDR   00E0H   A   
B. . . . . . . . .  D ADDR   00F0H   A   
BANK0. . . . . . .  N NUMB   0000H   A   
BANK1. . . . . . .  N NUMB   0010H   A   
BANK2. . . . . . .  N NUMB   0020H   A   
BANK3. . . . . . .  N NUMB   0030H   A   
B_SWITCH_SIZE. . .    ----   -----       
CNT. . . . . . . .  N NUMB   0004H   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   0003H   A   
N. . . . . . . . .    ----   -----       
P3 . . . . . . . .  D ADDR   00B0H   A   
SAVEA. . . . . . .    ----   -----       
_SWITCHBANK. . . .  C ADDR   0048H   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 + -