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

📄 l51_bank.lst

📁 A rtx51 tiny example program
💻 LST
📖 第 1 页 / 共 2 页
字号:
                               ENDIF
                     354     
                     355       ; Macro code to select the 'N'
                     356       SWITCH        MACRO   N
                     357                     ORG     N * 4
                     358                     PUBLIC  ?B_SWITCH&N
                     359       ?B_SWITCH&N:
                     360                     MOV     R0,#(BANK&N OR NOT ?B_MASK) 
                     361       IF ?B_NBANKS > 32
                     362         IF (N < 32) 
                     363                     SJMP    SWITCHBNK_H
                     364         ELSEIF (N = 32)
                     365           SWITCHBNK_H:
                     366                     SJMP    SWITCHBNK
                     367         ELSEIF (N <> ?B_NBANKS-1)
                     368                     SJMP    SWITCHBNK
                     369         ENDIF
                     370       ELSE
                     371         IF N <> (?B_NBANKS-1)
                     372                     SJMP    SWITCHBNK
                     373         ENDIF
                     374       ENDIF
                     375     
                     376                     ENDM
                     377     
                     378     ENDIF
                     379     
                     380     
                             ENDIF
                     451     
                     452     
                     453     SELECT          MACRO   N
                     454     LOCAL           XLABEL, YLABEL
                     455     
                     456                     PUBLIC  ?B_BANK&N
                     457     ?B_BANK&N:      
                     458                     MOV     A,?B_CURRENTBANK
                     459                     ANL     A,#?B_MASK
                     460                     CONVBANKNO         ; Convert Bank Number to Address
                     461                     PUSH    ACC
                     462                     MOV     A,#HIGH ?BANK?SWITCH
                     463                     PUSH    ACC
                     464                     PUSH    DPL
                     465                     PUSH    DPH
                     466                     LJMP    ?B_SWITCH&N
                     467                     ENDM
                     468     
                     469     
                     470     ?BANK?SELECT    SEGMENT  CODE
                     471     
----                 472                     RSEG    ?BANK?SELECT
  0000               473     CNT             SET     0
                     474     
                     475                     REPT    ?B_NBANKS
                     476                     SELECT  %CNT
                     477     CNT             SET     CNT+1
A51 MACRO ASSEMBLER  L51_BANK                                                             03/23/2009 13:06:23 PAGE     5

                     478     
                     479                     ENDM
                     480+1                   SELECT  %CNT
                     495+1                   SELECT  %CNT
                     510+1                   SELECT  %CNT
                     525+1                   SELECT  %CNT
                     540     
                     541     
                     542     
                     543     
                     544     ?BANK?SWITCH    SEGMENT  CODE  PAGE
                     545     
----                 546                     RSEG    ?BANK?SWITCH
  0000               547     CNT             SET     0
                     548     
                     549                     REPT    ?B_NBANKS
                     550                     SWITCH  %CNT
                     551     
                     552     CNT             SET     CNT+1
                     553                     ENDM
                     554+1                   SWITCH  %CNT
                     576+1                   SWITCH  %CNT
                     598+1                   SWITCH  %CNT
                     620+1                   SWITCH  %CNT
                     642     
                     643     
                               ELSEIF ?B_RTX = 1
                     653     
000E C8              654         SWITCHBNK:  XCH     A,R0
000F 10AF07          655         SWITCHBNK2: JBC     EA,SWITCHBNK_EA1
0012 43900C          656                     ORL     ?B_CURRENTBANK, #?B_MASK
0015 5290            657                     ANL     ?B_CURRENTBANK, A
0017 E8              658                     MOV     A,R0
0018 22              659                     RET
                     660     
0019                 661         SWITCHBNK_EA1:                     ; interrupts where enabled
0019 43900C          662                     ORL     ?B_CURRENTBANK, #?B_MASK
001C 5290            663                     ANL     ?B_CURRENTBANK, A
001E E8              664                     MOV     A,R0
001F D2AF            665                     SETB    EA             ; enable interrupts again
0021 22              666                     RET
                     667     
0022                 668         ?B_RESTORE_BANK:                   ; entry for RTX-51 bank restore
0022 44F3            669                     ORL     A,#NOT ?B_MASK
0024 80E9            670                     SJMP    SWITCHBNK2
                     671     
                     672       ENDIF
                     673     
                     674     
                     675     ENDIF  ; close block IF ?B_MODE = 0 *******************************************
                     676     
                     677     
                             ENDIF  ; close block IF ?B_MODE = 1 *******************************************
                     919     
                     920     
                             ENDIF  ; close block IF ?B_MODE = 4 *******************************************
                     993     
----                 994                     RSEG    ?BANK?SELECT
                     995     
                     996     ;************************  SWITCHBANK FUNCTION  *******************************
                     997     ;                                                                             *
                     998     ; SWITCHBANK allows use of bank-switching for C programs                      *
                     999     ;                                                                             *
                    1000     ; prototype:   extern switchbank (unsigned char bank_number);                 *
                    1001     ;                                                                             *
                    1002     ;******************************************************************************
A51 MACRO ASSEMBLER  L51_BANK                                                             03/23/2009 13:06:23 PAGE     6

                    1003                     PUBLIC  _SWITCHBANK, ?B_SWITCHBANK_A
                    1004     
0044 EF             1005     _SWITCHBANK:    MOV     A,R7
                    1006     
                    1007     IF  ?B_MODE = 0 ;**************************************************************
                    1008     
0045                1009     ?B_SWITCHBANK_A:
                    1010     IF ?B_NBANKS > 32 OR ?B_RTX = 1
0045 23             1011                     RL      A
0046 23             1012                     RL      A
                    1013     ENDIF
                    1014     
                             ENDIF
0047 900000   F     1019                     MOV     DPTR,#?BANK?SWITCH
004A 73             1020                     JMP     @A+DPTR
                    1021     
                    1022     ENDIF  ; close block IF ?B_MODE = 0 *******************************************
                    1023     
                             ENDIF  ; close block IF ?B_MODE = 1 *******************************************
                    1039     
                             ENDIF  ; close block IF ?B_MODE = 4 *******************************************
                    1069     
                    1070     
                             ENDIF  ; close block IF ?B_VAR_BANKING ****************************************
                    1483     
A51 MACRO ASSEMBLER  L51_BANK                                                             03/23/2009 13:06:23 PAGE     7

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


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

?BANK?SELECT . . .  C SEG    004BH       REL=UNIT   470# 472 994
?BANK?SWITCH . . .  C SEG    0026H       REL=PAGE   488 503 518 533 544# 546 1019
?BANK?SWITCHING. .  N NUMB   -----          237
?B_BANK0 . . . . .  C ADDR   0000H   R   SEG=?BANK?SELECT   482 483#
?B_BANK1 . . . . .  C ADDR   0011H   R   SEG=?BANK?SELECT   497 498#
?B_BANK2 . . . . .  C ADDR   0022H   R   SEG=?BANK?SELECT   512 513#
?B_BANK3 . . . . .  C ADDR   0033H   R   SEG=?BANK?SELECT   527 528#
?B_CURRENTBANK . .  D ADDR   0090H   A      239 299# 484 499 514 529 656 657 662 663
?B_FACTOR. . . . .  N NUMB   0004H   A      240 271#
?B_FIRSTBIT. . . .  N NUMB   0002H   A      88# 271 273 286 289 292 295 304 311 317 322 328 335 342 348 384 391 398
                                           404 409 415 422 429 715 722 728 733 739 746 753 759 792 798 805 812 818
                                           823 829 836 1131 1137 1144 1152 1160 1167 1175 1183
?B_MASK. . . . . .  N NUMB   000CH   A      239 273# 485 500 515 530 558 580 602 624 656 662 669
?B_MODE. . . . . .  N NUMB   0000H   A      35# 75 93 109 239 269 678 921 1007 1024 1040 1125 1194 1263 1311
?B_NBANKS. . . . .  N NUMB   0004H   A      26# 239 255 257 259 261 263 281 301 381 444 475 549 559 565 569 581 587
                                           591 603 609 613 625 631 635 644 712 772 778 782 790 901 1010 1015 1027
                                           1032
?B_PORT. . . . . .  D ADDR   0090H   A      85# 299
?B_RESTORE_BANK. .  C ADDR   0022H   R   SEG=?BANK?SWITCH   242 668#
?B_RST_BANK. . . .  N NUMB   00FFH   A      66# 240
?B_RTX . . . . . .  N NUMB   0001H   A      40# 241 301 381 644 652 910 1010 1015 1215 1226 1246 1254
?B_SWITCH0 . . . .  C ADDR   0000H   R   SEG=?BANK?SWITCH   492 556 557#
?B_SWITCH1 . . . .  C ADDR   0004H   R   SEG=?BANK?SWITCH   507 578 579#
?B_SWITCH2 . . . .  C ADDR   0008H   R   SEG=?BANK?SWITCH   522 600 601#
?B_SWITCH3 . . . .  C ADDR   000CH   R   SEG=?BANK?SWITCH   537 622 623#
?B_SWITCHBANK_A. .  C ADDR   0045H   R   SEG=?BANK?SELECT   1003 1009#
?B_VAR_BANKING . .  N NUMB   0000H   A      50# 174 910 1042 1071
ACC. . . . . . . .  D ADDR   00E0H   A      246# 487 489 502 504 517 519 532 534
B. . . . . . . . .  D ADDR   00F0H   A      247#
BANK0. . . . . . .  N NUMB   0000H   A      286# 558
BANK1. . . . . . .  N NUMB   0004H   A      289# 580
BANK2. . . . . . .  N NUMB   0008H   A      292# 602
BANK3. . . . . . .  N NUMB   000CH   A      295# 624
B_SWITCH_SIZE. . .    ----   -----          988
CNT. . . . . . . .  N NUMB   0004H   A      279# 285 287# 287 288 290# 290 291 293# 293 294 296# 296 473# 480 493#
                                           493 495 508# 508 510 523# 523 525 538# 538 547# 554 575# 575 576 597# 597
                                           598 619# 619 620 641# 641
DPH. . . . . . . .  D ADDR   0083H   A      249# 491 506 521 536
DPL. . . . . . . .  D ADDR   0082H   A      248# 490 505 520 535
EA . . . . . . . .  B ADDR   00A8H.7 A      251# 655 665
IE . . . . . . . .  D ADDR   00A8H   A      250# 251
LONG_MACRO . . . .    ----   -----          944 954 966 988
MASK . . . . . . .  N NUMB   0003H   A      258# 273
N. . . . . . . . .    ----   -----          441 444 773 775 778 782
P1 . . . . . . . .  D ADDR   0090H   A      83# 85
SWITCHBNK. . . . .  C ADDR   000EH   R   SEG=?BANK?SWITCH   570 592 614 654#
SWITCHBNK2 . . . .  C ADDR   000FH   R   SEG=?BANK?SWITCH   655# 670
SWITCHBNK_EA1. . .  C ADDR   0019H   R   SEG=?BANK?SWITCH   655 661#
_SWITCHBANK. . . .  C ADDR   0044H   R   SEG=?BANK?SELECT   1003 1005#


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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