📄 l51_bank.lst
字号:
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 + -