大家好。
我之前使用nesasm来编写代码,现在想转到asm6。
但是发现一个差别,nesasm有BANK指令以及BANK()函数,asm6却没有。
BANK函数在调用切换的bank中的function时很方便,通过BANK函数可以得到function所在的BANK号。
例如以下nesasm 宏代码(MMC3):
bankno1和bankno2是存储bank号的zp变量。
bankswitch1和bankswitch2是切换bank的function。
使用 LDX #BANK(\1) 即可取得参数1所在bank号用于切换。
例如我想调用function1,无论function1在哪个bank,
我只要写:
但是不知道在asm6中如何实现这一点。
谢谢大家:D
我之前使用nesasm来编写代码,现在想转到asm6。
但是发现一个差别,nesasm有BANK指令以及BANK()函数,asm6却没有。
BANK函数在调用切换的bank中的function时很方便,通过BANK函数可以得到function所在的BANK号。
例如以下nesasm 宏代码(MMC3):
Code:
;*******************************************
;bank_jsr 调用在另外的bank中的地址,调用完后返回原bank
;参数1 调用函数地址
;*******************************************
macro bank_jsr
IF \1<$a000
LDA <bankno1
PHA
LDX #BANK(\1)
JSR bankswitch1
JSR \1
PLA
TAX
JMP bankswitch1 ;换到原来的块 switch back
;
else
;
LDA <bankno2
PHA
LDX #BANK(\1)
JSR bankswitch2
JSR \1
PLA
TAX
JMP bankswitch2
endif
endm
;bank_jsr 调用在另外的bank中的地址,调用完后返回原bank
;参数1 调用函数地址
;*******************************************
macro bank_jsr
IF \1<$a000
LDA <bankno1
PHA
LDX #BANK(\1)
JSR bankswitch1
JSR \1
PLA
TAX
JMP bankswitch1 ;换到原来的块 switch back
;
else
;
LDA <bankno2
PHA
LDX #BANK(\1)
JSR bankswitch2
JSR \1
PLA
TAX
JMP bankswitch2
endif
endm
bankno1和bankno2是存储bank号的zp变量。
bankswitch1和bankswitch2是切换bank的function。
使用 LDX #BANK(\1) 即可取得参数1所在bank号用于切换。
例如我想调用function1,无论function1在哪个bank,
我只要写:
Code:
bank_jsr function1
但是不知道在asm6中如何实现这一点。
谢谢大家:D