- ベストアンサー
65816アセンブラでの質問
現在65816アセンブラを独学で勉強しています。 そこで皆様にお聞きしたいのですが… 例えば AD E0 11 LDA で11E0の値を読み込んで その値が260以上だった場合「Xにジャンプ」、 260以下だった場合「Yにジャンプ」 という命令はどのようにしたら宜しいですか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
cmpでAレジスタからメモリのないようをひいて、その差によってキャリーフラグが変化すると思います。 なので、beq(F0)ではなく、bsc(B0)やbcc(90)に変えてやって見て下さい。 詳しい資料がないので間違えているかもしれません。
その他の回答 (1)
- neorg
- ベストアンサー率54% (235/433)
65816は詳しくないのですが、 cmpなどで比較して、キャリーフラグで判断して、 bscやbccでジャンプするればいいと思います。 260だと、8bitを超えてしまうので、65816に16bitの比較演算があるのか、私にはわかりませんが、8bitづつ上位・下位にわけて比較して ジャンプすることもできると思います。 参考になりそうなリンク貼っておきます。 http://www.apple2world.jp/apple2/COL/MapItems/6502/6502.html http://aqube.kir.jp/dsoft/famicom/6502.html
お礼
アドバイスと参考資料ありがとうございました。 全然知識がなかったのでちゃんと勉強してきます。
補足
AD E0 11 LDA $11E0 CD 60 02 CMP $0260 F0 04 BEQ 5C XX XX XX JML $XXXXXX 5C YY YY YY JML $YYYYYY と、してみたのですが これは260だったとき$YYYYYYにロングジャンプするだけで 260以上、260以下での方法が思いつきませんでした。 出来る方法をご教授お願いします。
お礼
ありがとうございます。 参考資料など見て無事出来ました。