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

📄 l51_bank.lst

📁 一种用SST89系列单片机的用户程序存储量达到72K的方法,开发大的系统时,工程师就不用想法设法将代码空间缩小到64K之内了.
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     689     IF  ?B_MODE = 4 ;**************************************************************
                     690     
  0000               691     ?B_FACTOR       EQU     0               ; Dummy Declarations
  0000               692     ?B_FIRSTBIT     EQU     0
  0001               693     ?B_MASK         EQU     MASK
                     694     
                     695     ?BANK?SELECT    SEGMENT CODE
                     696     ?BANK?DATA      SEGMENT DATA
----                 697                     RSEG    ?BANK?DATA
0000                 698     ?B_CURRENTBANK: DS      1
                     699     
                     700     BANK            MACRO   N
                     701                     PUBLIC  ?B_BANK&N
                     702     ?B_BANK&N:
                     703                     PUSH    ?B_CURRENTBANK
                     704                     MOV     A,#HIGH ?BANK?SWITCH
                     705                     PUSH    ACC
                     706                     PUSH    DPL
                     707                     PUSH    DPH
                     708                     ENDM
                     709     
                     710     SWITCH          MACRO   N
                     711                     PUBLIC  ?B_SWITCH&N
                     712       IF (LONG_MACRO = 1)
                     713         ?B_SWITCHJ&N:
                     714       ELSE
                     715         ?B_SWITCH&N:
                     716       ENDIF
                     717                     MOV     ?B_CURRENTBANK,#LOW ?B_SWITCH&N
                     718                     SWITCH&N
                     719                     RET
                     720                     ENDM
                     721     
                               ENDIF
                     728     
                     729     ?BANK?SWITCH    SEGMENT CODE PAGE
A51 MACRO ASSEMBLER  L51_BANK                                                             11/17/2005 23:12:26 PAGE     4

                     730     
----                 731                     RSEG    ?BANK?SWITCH
  0000               732     B_SWITCH_START  EQU     $
                     733     
                               ENDIF
                     743     
                     744     
                     745     ; Generate ?B_SWITCHn functions
  0000               746     CNT             SET     0
                     747     
                     748                     REPT    ?B_NBANKS
                     749                     BANK    %CNT
                     750                     SWITCH  %CNT
                     751     CNT             SET     CNT+1
                     752                     ENDM
                     753+1                   BANK    %CNT
                     761+1                   SWITCH  %CNT
                     773+1                   BANK    %CNT
                     781+1                   SWITCH  %CNT
                     793     
  0022               794     B_SWITCH_SIZE   EQU     $-B_SWITCH_START
                     795     
                               ENDIF
                     799     
                     800     ENDIF  ; close block IF ?B_MODE = 4 *******************************************
                     801     
----                 802                     RSEG    ?BANK?SELECT
                     803     
                     804     ;************************  SWITCHBANK FUNCTION  *******************************
                     805     ;                                                                             *
                     806     ; SWITCHBANK allows use of bank-switching for C programs                      *
                     807     ;                                                                             *
                     808     ; prototype:   extern switchbank (unsigned char bank_number);                 *
                     809     ;                                                                             *
                     810     ;******************************************************************************
                     811                     PUBLIC  _SWITCHBANK, ?B_SWITCHBANK_A
                     812     
0000 EF              813     _SWITCHBANK:    MOV     A,R7
                     814     
                             ENDIF  ; close block IF ?B_MODE = 0 *******************************************
                     831     
                             ENDIF  ; close block IF ?B_MODE = 1 *******************************************
                     847     
                     848     IF  ?B_MODE = 4 ;**************************************************************
                     849     
                             ENDIF
                     857     
0001                 858     ?B_SWITCHBANK_A:
0001 900000   F      859                     MOV     DPTR,#switch_tab
0004 93              860                     MOVC    A,@A+DPTR
0005                 861     ?B_RESTORE_BANK:                       ; entry for RTX-51/XBANKING bank restore
0005 900000   F      862                     MOV     DPTR,#?BANK?SWITCH
0008 73              863                     JMP     @A+DPTR
                     864     
                     865     S_ENTRY         MACRO   N
                     866                     DB      LOW ?B_SWITCH&N
                     867                     ENDM
                     868     
0009                 869     switch_tab:     
  0000               870     CNT             SET     0
                     871     
                     872                     REPT    ?B_NBANKS
                     873                     S_ENTRY %CNT
                     874     CNT             SET     CNT+1
                     875                     ENDM
                     876+1                   S_ENTRY %CNT
A51 MACRO ASSEMBLER  L51_BANK                                                             11/17/2005 23:12:26 PAGE     5

                     879+1                   S_ENTRY %CNT
                     882     ENDIF  ; close block IF ?B_MODE = 4 *******************************************
                     883     
                     884     
                             ENDIF  ; close block IF ?B_VAR_BANKING ****************************************
                    1297     
A51 MACRO ASSEMBLER  L51_BANK                                                             11/17/2005 23:12:26 PAGE     6

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


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

?BANK?DATA . . . .  D SEG    0001H       REL=UNIT   696# 697
?BANK?SELECT . . .  C SEG    000BH       REL=UNIT   695# 802
?BANK?SWITCH . . .  C SEG    0022H       REL=PAGE   729# 731 757 777 862
?BANK?SWITCHING. .  N NUMB   -----          165
?B_BANK0 . . . . .  C ADDR   0000H   R   SEG=?BANK?SWITCH   754 755#
?B_BANK1 . . . . .  C ADDR   0011H   R   SEG=?BANK?SWITCH   774 775#
?B_CURRENTBANK . .  D ADDR   0000H   R   SEG=?BANK?DATA   167 698# 756 768 776 788
?B_FACTOR. . . . .  N NUMB   0000H   A      168 691#
?B_FIRSTBIT. . . .  N NUMB   0000H   A      220 227 233 238 244 251 258 264 300 307 314 320 325 331 338 345 483 490
                                           496 501 507 514 521 527 560 566 573 580 586 591 597 604 692# 945 951 958
                                           966 974 981 989 997
?B_MASK. . . . . .  N NUMB   0001H   A      167 693#
?B_MODE. . . . . .  N NUMB   0004H   A      14# 39 51 60 167 197 446 689 815 832 848 939 1008 1077 1125
?B_NBANKS. . . . .  N NUMB   0002H   A      9# 167 183 185 187 189 191 217 277 283 287 297 360 412 480 540 546 550
                                           558 669 748 818 823 835 840 872
?B_RESTORE_BANK. .  C ADDR   0005H   R   SEG=?BANK?SELECT   861#
?B_RST_BANK. . . .  N NUMB   00FFH   A      31# 168
?B_RTX . . . . . .  N NUMB   0000H   A      18# 169 217 297 412 420 678 818 823 1029 1040 1060 1068
?B_SWITCH0 . . . .  C ADDR   000AH   R   SEG=?BANK?SWITCH   762 766# 768 877
?B_SWITCH1 . . . .  C ADDR   001BH   R   SEG=?BANK?SWITCH   782 786# 788 880
?B_SWITCHBANK_A. .  C ADDR   0001H   R   SEG=?BANK?SELECT   811 858#
?B_VAR_BANKING . .  N NUMB   0000H   A      21# 108 678 850 885
ACC. . . . . . . .  D ADDR   00E0H   A      174# 758 778
B. . . . . . . . .  D ADDR   00F0H   A      175#
B_SWITCH_SIZE. . .  N NUMB   0022H   A      794# 796
B_SWITCH_START . .  C ADDR   0000H   R   SEG=?BANK?SWITCH   732# 794
CNT. . . . . . . .  N NUMB   0002H   A      746# 753 761 772# 772 773 781 792# 792 870# 876 878# 878 879 881# 881
DPH. . . . . . . .  D ADDR   0083H   A      177# 760 780
DPL. . . . . . . .  D ADDR   0082H   A      176# 759 779
EA . . . . . . . .  B ADDR   00A8H.7 A      179#
IE . . . . . . . .  D ADDR   00A8H   A      178# 179
LONG_MACRO . . . .  N NUMB   0000H   A      89# 722 734 763 783 796
MASK . . . . . . .  N NUMB   0001H   A      184# 693
N. . . . . . . . .    ----   -----          278 280 283 287 357 360 541 543 546 550
P1 . . . . . . . .  D ADDR   0090H   A      93#
P3 . . . . . . . .  D ADDR   00B0H   A      94#
SFCF . . . . . . .  D ADDR   00B1H   A      95# 770 790
SWITCH_TAB . . . .  C ADDR   0009H   R   SEG=?BANK?SELECT   859 869#
_SWITCHBANK. . . .  C ADDR   0000H   R   SEG=?BANK?SELECT   811 813#


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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