📄 l51_bank.lst
字号:
367
ENDIF
373
374
375 ; Macro code to select the 'N'
376 SWITCH MACRO N
377 ORG N * 8
378 PUBLIC ?B_SWITCH&N
379 ?B_SWITCH&N:
380 IF N <> 0
381 ORL ?B_CURRENTBANK,#?B_MASK
382 ENDIF
383 IF N <> (?B_NBANKS-1)
384 ANL ?B_CURRENTBANK,#(BANK&N OR NOT ?B_MASK)
385 ENDIF
386 RET
387 ENDM
388
389 ENDIF
390
391
392 SELECT MACRO N
393 LOCAL XLABEL, YLABEL
394
395 PUBLIC ?B_BANK&N
396 ?B_BANK&N:
397 MOV A,?B_CURRENTBANK
398 ANL A,#?B_MASK
399 CONVBANKNO ; Convert Bank Number to Address
400 PUSH ACC
401 MOV A,#HIGH ?BANK?SWITCH
402 PUSH ACC
403 PUSH DPL
404 PUSH DPH
405 LJMP ?B_SWITCH&N
406 ENDM
AX51 MACRO ASSEMBLER L51_BANK 07/11/05 23:04:55 PAGE 4
407
408
------ 409 ?BANK?SELECT SEGMENT CODE
410
------ 411 RSEG ?BANK?SELECT
0000 412 CNT SET 0
413
414 REPT ?B_NBANKS
415 SELECT %CNT
416 CNT SET CNT+1
417
483
484
485
486
------ 487 ?BANK?SWITCH SEGMENT CODE PAGE
488
------ 489 RSEG ?BANK?SWITCH
0000 490 CNT SET 0
491
492 REPT ?B_NBANKS
493 SWITCH %CNT
494
495 CNT SET CNT+1
549
550
ENDIF
580
581
582 ENDIF ; close block IF ?B_MODE = 0 *******************************************
583
584
ENDIF ; close block IF ?B_MODE = 1 *******************************************
826
827
ENDIF ; close block IF ?B_MODE = 4 *******************************************
900
------ 901 RSEG ?BANK?SELECT
902
903 ;************************ SWITCHBANK FUNCTION *******************************
904 ; *
905 ; SWITCHBANK allows use of bank-switching for C programs *
906 ; *
907 ; prototype: extern switchbank (unsigned char bank_number); *
908 ; *
909 ;******************************************************************************
910 PUBLIC _SWITCHBANK, ?B_SWITCHBANK_A
911
000048 EF 912 _SWITCHBANK: MOV A,R7
913
914 IF ?B_MODE = 0 ;**************************************************************
915
000049 916 ?B_SWITCHBANK_A:
ENDIF
921
922 IF ?B_NBANKS <= 16 AND ?B_RTX = 0
000049 C4 923 SWAP A
00004A 03 924 RR A
925 ENDIF
00004B 900000 F 926 MOV DPTR,#?BANK?SWITCH
00004E 73 927 JMP @A+DPTR
928
929 ENDIF ; close block IF ?B_MODE = 0 *******************************************
930
ENDIF ; close block IF ?B_MODE = 1 *******************************************
946
AX51 MACRO ASSEMBLER L51_BANK 07/11/05 23:04:55 PAGE 5
ENDIF ; close block IF ?B_MODE = 4 *******************************************
976
977
ENDIF ; close block IF ?B_VAR_BANKING ****************************************
1390
1391 END
AX51 MACRO ASSEMBLER L51_BANK 07/11/05 23:04:55 PAGE 6
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?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 0090H A
?B_FACTOR. . . . . . . . . . N NUMB 0004H A
?B_FIRSTBIT. . . . . . . . . N NUMB 0002H A
?B_MASK. . . . . . . . . . . N NUMB 000CH A
?B_MODE. . . . . . . . . . . N NUMB 0000H A
?B_NBANKS. . . . . . . . . . N NUMB 0004H A
?B_PORT. . . . . . . . . . . D ADDR 0090H 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 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
?BANK?SELECT . . . . . . . . C SEG 00004FH REL=UNIT, ALN=BYTE
?BANK?SWITCH . . . . . . . . C SEG 00001CH REL=UNIT, ALN=PAGE
?BANK?SWITCHING. . . . . . . -- ---- -------
_SWITCHBANK. . . . . . . . . C ADDR 0048H R SEG=?BANK?SELECT
ACC. . . . . . . . . . . . . D ADDR 00E0H A
B. . . . . . . . . . . . . . D ADDR 00F0H A
B_SWITCH_SIZE. . . . . . . . -- ---- -------
BANK0. . . . . . . . . . . . N NUMB 0000H A
BANK1. . . . . . . . . . . . N NUMB 0004H A
BANK2. . . . . . . . . . . . N NUMB 0008H A
BANK3. . . . . . . . . . . . N NUMB 000CH A
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. . . . . . . . . . . . . . -- ---- -------
P1 . . . . . . . . . . . . . D ADDR 0090H A
SAVEA. . . . . . . . . . . . -- ---- -------
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -