2016-11-18 17 views
1

プログラムメモリの場所でアセンブリコードとページの交差を助けてください。プログラムメモリ内のページ境界を越える

ORG 0x500; 
BCF pclath,4; 
BSF pclath,3; 
CALL sub1_p1; 
. 
. 
. 
ORG 0x900; 
sub1 : 
: 
RETURN 

プログラムメモリ内のページ境界を越えたい場合は例えば0ページから3ページです。私はどのようなコードを書くべきですか?

答えて

1

PCLATHレジスタのビット3と4がページ番号を決定します。

例:

BCF PCLATH,4 ;Select page0 
BCF PCLATH,3 ;Select page0 
CALL xpage0 
... 
BCF PCLATH,4 ;Select page 1 
BSF PCLATH,3 ;Select page 1 
CALL xpage1 
... 
BSF PCLATH,4 ;Select page2 
BCF PCLATH,3 ;Select page2 
CALL xpage2 
... 
BSF PCLATH,4 ;Select page 3 
BSF PCLATH,3 ;Select page 3 
CALL xpage3 
... 

新しいPIC16xxx MCPUsは、特別な命令MOVLPを使用しています。

例:

MOVLP high HiProc2 
CALL HiProc2 
... 
+0

非常に素晴らしいが、私はあなたがxpage0を何呼び出す聞きたい、意味xpage1を呼びますか?また、MOVLP high hiproc2 ----- CALL hiproc2のこの特別な使用法は、私がPIC16F877を理解していないと言っていますが、お返事ありがとうございます。 – aod

+0

プラス私は初心者です... – aod

+0

@aod:xpage0はラベルオフですPIC16F87Xファミリは最も早いので、MOVLP命令をサポートしていませんが、最新のサポートがあります。続きを読む:http://ww1.microchip.com/downloads/en/DviceDoc/41375A.pdf –

関連する問題