📄 nt68f631_bank.lst
字号:
258 ;;XLABEL:
259 CONVBANKNO ; Convert Bank Number to Address
260 PUSH ACC
261 MOV A,#HIGH ?BANK?SWITCH
262 PUSH ACC
263 ;;YLABEL:
264 PUSH DPL
265 PUSH DPH
266 LJMP ?B_SWITCH&N
267 ENDM
268
269
270 ?BANK?SELECT SEGMENT CODE
271
---- 272 RSEG ?BANK?SELECT
0000 273 CNT SET 0
274
275 REPT ?B_NBANKS
276 SELECT %CNT
277 CNT SET CNT+1
278
279 ENDM
280+1 SELECT %CNT
303+1 SELECT %CNT
326+1 SELECT %CNT
349+1 SELECT %CNT
372
373
374
375 SWITCH MACRO N
376 ORG N * 8
377 PUBLIC ?B_SWITCH&N
378 ?B_SWITCH&N:
379 IF ?B_RTX = 0
380 IF N <> 0
A51 MACRO ASSEMBLER NT68F631_BANK 12/11/2007 11:28:43 PAGE 4
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 ELSE
388 IF N = 0
389 ANL ?B_CURRENTBANK,#(BANK&N OR NOT ?B_MASK)
390 ELSEIF N <> (?B_NBANKS-1)
391 MOV R0,A
392 MOV A,#(BANK&N OR NOT ?B_MASK)
393 LJMP SWITCHBNK
394 ELSE
395 ORL ?B_CURRENTBANK,#?B_MASK
396 RET
397 ENDIF
398 ENDIF
399 ENDM
400
401
402 ?BANK?SWITCH SEGMENT CODE PAGE
403
---- 404 RSEG ?BANK?SWITCH
0000 405 CNT SET 0
406
407 REPT ?B_NBANKS
408 SWITCH %CNT
409
410 CNT SET CNT+1
411 ENDM
412+1 SWITCH %CNT
438+1 SWITCH %CNT
464+1 SWITCH %CNT
490+1 SWITCH %CNT
516
517
ENDIF
527
528 ENDIF ; close block IF ?B_MODE = 0 *******************************************
529
530
ENDIF ; close block IF ?B_MODE = 1 *******************************************
765
766
ENDIF ; close block IF ?B_MODE = 4 *******************************************
825
---- 826 RSEG ?BANK?SELECT
827
828 ;************************ SWITCHBANK FUNCTION *******************************
829 ; *
830 ; SWITCHBANK allows use of bank-switching for C programs *
831 ; *
832 ; prototype: extern switchbank (unsigned char bank_number); *
833 ; *
834 ;******************************************************************************
835 PUBLIC _SWITCHBANK
836
004C EF 837 _SWITCHBANK: MOV A,R7
838
ENDIF ; close block IF ?B_VAR_BANKING <> 0 ***********************************
882
883 IF ?B_MODE = 0 ;**************************************************************
884
004D C4 885 _SWITCHBANK_A: SWAP A
004E 03 886 RR A
A51 MACRO ASSEMBLER NT68F631_BANK 12/11/2007 11:28:43 PAGE 5
004F 900000 F 887 MOV DPTR,#?BANK?SWITCH
0052 73 888 JMP @A+DPTR
889
890 ENDIF ; close block IF ?B_MODE = 0 *******************************************
891
ENDIF ; close block IF ?B_MODE = 1 *******************************************
907
908
ENDIF ; close block IF ?B_MODE = 4 *******************************************
929
930
A51 MACRO ASSEMBLER NT68F631_BANK 12/11/2007 11:28:43 PAGE 6
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?BANK?SELECT . . . C SEG 0053H 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 0013H R SEG=?BANK?SELECT
?B_BANK2 . . . . . C ADDR 0026H R SEG=?BANK?SELECT
?B_BANK3 . . . . . C ADDR 0039H R SEG=?BANK?SELECT
?B_COMMON_XRAM . . ---- -----
?B_CURRENTBANK . . D ADDR 0090H A
?B_FACTOR. . . . . N NUMB 0001H A
?B_FIRSTBIT. . . . N NUMB 0000H A
?B_INTR_ACCESS . . ---- -----
?B_MASK. . . . . . N NUMB 0003H A
?B_MODE. . . . . . N NUMB 0000H A
?B_NBANKS. . . . . N NUMB 0004H A
?B_PORT. . . . . . D ADDR 0090H 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_VARBANKING. . . ---- -----
?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 0001H A
BANK2. . . . . . . N NUMB 0002H A
BANK3. . . . . . . N NUMB 0003H A
CNT. . . . . . . . N NUMB 0004H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
MASK . . . . . . . N NUMB 0003H A
P1 . . . . . . . . D ADDR 0090H A
_SWITCHBANK. . . . C ADDR 004CH R SEG=?BANK?SELECT
_SWITCHBANK_A. . . C ADDR 004DH 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 + -