4

6502 のドキュメントを読んでも、どこにも答えが見つかりませんでした。相対アドレッシングを使用する場合は、ラップすることができます。しかし、両端をラップすることは可能ですか? それは可能だと思いますが、可能性は低いです。

そして、私が両端を意味するとき、私はあなたが高いPCから低いPCまでラップできることを知っていることを意味します. しかし、低い PC から高い PC にラップすることもできますか?

4

3 に答える 3

7

相対分岐でページ境界を越えると、余分なサイクルが発生しますが、ページをまたぐ分岐が前方分岐か後方分岐かは関係ありません。

Visual6502でこれを試すことができます。プログラムA9 00 F0 EC( LDA #00/ BEQ $FFF0) をアドレス 0000 に入力し、コードを 1 ステップ実行して、BEQ. 実際のハードウェアのみを信頼する場合は、Nintendo Entertainment System などで簡単に確認できます。

明らかに、相対分岐でページ FF に到達できるようにするには、ゼロページ RAM から実行する必要があり、最も頻繁にアクセスされるデータに適合する必要があるため、コードで ZP RAM を無駄にしたくないでしょう。したがって、この特定のシナリオはありそうもないでしょう。

于 2013-03-28T09:12:57.710 に答える
3

はい、逆方向にも機能します。しかし、多くのアセンブラはそれをサポートしていません。>$ff80 領域をアドレッシングするゼロページの先頭に分岐演算子を配置しようとすると、通常、アセンブラは「オフセットが大きすぎます」などのエラーをスローします。しかし、オペコードをバイト値で配置しようとすると> 0002 f0 e0、結果が得られますbeq $ffe4。Commodore 64 を使って試してみたので、利用可能な最初のメモリ アドレスとして使用0002しましたが、$0001 はそのマシンでは使用できません。他の 6502 ベースのマシンでは、0000 ドルでも問題ありません。

于 2013-03-28T13:41:58.157 に答える
0

一般的には、モジュロ演算を使用して独自のアドレス計算を実行し、その結果を絶対アドレス指定に使用できます。

于 2013-03-28T05:01:43.280 に答える