It is currently Thu Oct 19, 2017 7:51 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: asm6 问题请教
PostPosted: Sun Dec 28, 2014 7:46 pm 
Offline

Joined: Wed Jul 19, 2006 7:00 pm
Posts: 2
大家好。
我之前使用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

bankno1和bankno2是存储bank号的zp变量。
bankswitch1和bankswitch2是切换bank的function。
使用 LDX #BANK(\1) 即可取得参数1所在bank号用于切换。
例如我想调用function1,无论function1在哪个bank,
我只要写:
Code:
bank_jsr function1


但是不知道在asm6中如何实现这一点。

谢谢大家:D


Top
 Profile  
 
 Post subject: Re: asm6 问题请教
PostPosted: Wed Apr 01, 2015 1:43 am 
Offline

Joined: Mon Dec 12, 2011 8:15 pm
Posts: 304
doubledr wrote:
大家好。
我之前使用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

bankno1和bankno2是存储bank号的zp变量。
bankswitch1和bankswitch2是切换bank的function。
使用 LDX #BANK(\1) 即可取得参数1所在bank号用于切换。
例如我想调用function1,无论function1在哪个bank,
我只要写:
Code:
bank_jsr function1


但是不知道在asm6中如何实现这一点。

谢谢大家:D

糖果先生,你好,你也来这里了?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group