6502 のドキュメントを読んでも、どこにも答えが見つかりませんでした。相対アドレッシングを使用する場合は、ラップすることができます。しかし、両端をラップすることは可能ですか? それは可能だと思いますが、可能性は低いです。
そして、私が両端を意味するとき、私はあなたが高いPCから低いPCまでラップできることを知っていることを意味します. しかし、低い PC から高い PC にラップすることもできますか?
相対分岐でページ境界を越えると、余分なサイクルが発生しますが、ページをまたぐ分岐が前方分岐か後方分岐かは関係ありません。
Visual6502でこれを試すことができます。プログラムA9 00 F0 EC
( LDA #00
/ BEQ $FFF0
) をアドレス 0000 に入力し、コードを 1 ステップ実行して、BEQ
. 実際のハードウェアのみを信頼する場合は、Nintendo Entertainment System などで簡単に確認できます。
明らかに、相対分岐でページ FF に到達できるようにするには、ゼロページ RAM から実行する必要があり、最も頻繁にアクセスされるデータに適合する必要があるため、コードで ZP RAM を無駄にしたくないでしょう。したがって、この特定のシナリオはありそうもないでしょう。
はい、逆方向にも機能します。しかし、多くのアセンブラはそれをサポートしていません。>$ff80 領域をアドレッシングするゼロページの先頭に分岐演算子を配置しようとすると、通常、アセンブラは「オフセットが大きすぎます」などのエラーをスローします。しかし、オペコードをバイト値で配置しようとすると> 0002 f0 e0
、結果が得られますbeq $ffe4
。Commodore 64 を使って試してみたので、利用可能な最初のメモリ アドレスとして使用0002
しましたが、$0001 はそのマシンでは使用できません。他の 6502 ベースのマシンでは、0000 ドルでも問題ありません。
一般的には、モジュロ演算を使用して独自のアドレス計算を実行し、その結果を絶対アドレス指定に使用できます。