📄 l51_bank.lst
字号:
0003 160 MASK EQU 00000011B
ENDIF
170
171
172 IF ?B_MODE = 4 ;**************************************************************
173
0000 174 ?B_FACTOR EQU 0 ; Dummy Declarations
0000 175 ?B_FIRSTBIT EQU 0
0003 176 ?B_MASK EQU MASK
177
178 ?BANK?SELECT SEGMENT CODE
179 ?BANK?DATA SEGMENT DATA
---- 180 RSEG ?BANK?DATA
0000 181 ?B_CURRENTBANK: DS 1
182
183 BANK MACRO N
184 PUBLIC ?B_BANK&N
185 ?B_BANK&N:
186 PUSH ?B_CURRENTBANK
187 MOV A,#HIGH ?BANK?SWITCH
188 PUSH ACC
189 PUSH DPL
190 PUSH DPH
191 ENDM
192
193 SWITCH MACRO N
194 PUBLIC ?B_SWITCH&N
195 IF (LONG_MACRO = 1)
196 ?B_SWITCHJ&N:
197 ELSE
198 ?B_SWITCH&N:
199 ENDIF
A51 MACRO ASSEMBLER L51_BANK 02/14/2008 14:25:38 PAGE 4
200 MOV ?B_CURRENTBANK,#LOW ?B_SWITCH&N
201 SWITCH&N
202 RET
203 ENDM
204
ENDIF
211
212 ?BANK?SWITCH SEGMENT CODE PAGE
213
---- 214 RSEG ?BANK?SWITCH
0000 215 B_SWITCH_START EQU $
216
ENDIF
226
227
228 ; Generate ?B_SWITCHn functions
0000 229 CNT SET 0
230
231 REPT ?B_NBANKS
232 BANK %CNT
233 SWITCH %CNT
234 CNT SET CNT+1
235 ENDM
236+1 BANK %CNT
244+1 SWITCH %CNT
258+1 BANK %CNT
266+1 SWITCH %CNT
280+1 BANK %CNT
288+1 SWITCH %CNT
302+1 BANK %CNT
310+1 SWITCH %CNT
324
0044 325 B_SWITCH_SIZE EQU $-B_SWITCH_START
326
ENDIF
330
331 ENDIF ; close block IF ?B_MODE = 4 *******************************************
332
---- 333 RSEG ?BANK?SELECT
334
335 ;************************ SWITCHBANK FUNCTION *******************************
336 ; *
337 ; SWITCHBANK allows use of bank-switching for C programs *
338 ; *
339 ; prototype: extern switchbank (unsigned char bank_number); *
340 ; *
341 ;******************************************************************************
342 PUBLIC _SWITCHBANK, ?B_SWITCHBANK_A
343
0000 EF 344 _SWITCHBANK: MOV A,R7
345
346
347 IF ?B_MODE = 4 ;**************************************************************
348
349
0001 350 ?B_SWITCHBANK_A:
0001 900000 F 351 MOV DPTR,#switch_tab
0004 93 352 MOVC A,@A+DPTR
0005 353 ?B_RESTORE_BANK: ; entry for RTX-51/XBANKING bank restore
0005 900000 F 354 MOV DPTR,#?BANK?SWITCH
0008 73 355 JMP @A+DPTR
356
357 S_ENTRY MACRO N
358 DB LOW ?B_SWITCH&N
359 ENDM
360
A51 MACRO ASSEMBLER L51_BANK 02/14/2008 14:25:38 PAGE 5
0009 361 switch_tab:
0000 362 CNT SET 0
363
364 REPT ?B_NBANKS
365 S_ENTRY %CNT
366 CNT SET CNT+1
367 ENDM
368+1 S_ENTRY %CNT
371+1 S_ENTRY %CNT
374+1 S_ENTRY %CNT
377+1 S_ENTRY %CNT
380 ENDIF ; close block IF ?B_MODE = 4 *******************************************
381
382
ENDIF ; close block IF ?B_VAR_BANKING ****************************************
610
A51 MACRO ASSEMBLER L51_BANK 02/14/2008 14:25:38 PAGE 6
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?BANK?DATA . . . . D SEG 0001H REL=UNIT
?BANK?SELECT . . . C SEG 000DH REL=UNIT
?BANK?SWITCH . . . C SEG 0044H REL=PAGE
?BANK?SWITCHING. . N NUMB -----
?B_BANK0 . . . . . C ADDR 0000H R SEG=?BANK?SWITCH
?B_BANK1 . . . . . C ADDR 0011H R SEG=?BANK?SWITCH
?B_BANK2 . . . . . C ADDR 0022H R SEG=?BANK?SWITCH
?B_BANK3 . . . . . C ADDR 0033H R SEG=?BANK?SWITCH
?B_CURRENTBANK . . D ADDR 0000H R SEG=?BANK?DATA
?B_FACTOR. . . . . N NUMB 0000H A
?B_FIRSTBIT. . . . N NUMB 0000H A
?B_MASK. . . . . . N NUMB 0003H A
?B_MODE. . . . . . N NUMB 0004H A
?B_NBANKS. . . . . N NUMB 0004H A
?B_RESTORE_BANK. . C ADDR 0005H R SEG=?BANK?SELECT
?B_RST_BANK. . . . N NUMB 0000H A
?B_RTX . . . . . . N NUMB 0000H A
?B_SWITCH0 . . . . C ADDR 000AH R SEG=?BANK?SWITCH
?B_SWITCH1 . . . . C ADDR 001BH R SEG=?BANK?SWITCH
?B_SWITCH2 . . . . C ADDR 002CH R SEG=?BANK?SWITCH
?B_SWITCH3 . . . . C ADDR 003DH R SEG=?BANK?SWITCH
?B_SWITCHBANK_A. . C ADDR 0001H R SEG=?BANK?SELECT
?B_VAR_BANKING . . N NUMB 0000H A
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
BANKREG. . . . . . D ADDR 009AH A
B_SWITCH_SIZE. . . N NUMB 0044H A
B_SWITCH_START . . C ADDR 0000H R SEG=?BANK?SWITCH
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 . . . . N NUMB 0000H A
MASK . . . . . . . N NUMB 0003H A
SAVEA. . . . . . . ---- -----
SWITCH_TAB . . . . C ADDR 0009H R SEG=?BANK?SELECT
_SWITCHBANK. . . . C ADDR 0000H 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 + -