• ベストアンサー

65816アセンブラでの質問

現在65816アセンブラを独学で勉強しています。 そこで皆様にお聞きしたいのですが… 例えば AD E0 11 LDA で11E0の値を読み込んで その値が260以上だった場合「Xにジャンプ」、 260以下だった場合「Yにジャンプ」 という命令はどのようにしたら宜しいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • neorg
  • ベストアンサー率54% (235/433)
回答No.2

cmpでAレジスタからメモリのないようをひいて、その差によってキャリーフラグが変化すると思います。 なので、beq(F0)ではなく、bsc(B0)やbcc(90)に変えてやって見て下さい。 詳しい資料がないので間違えているかもしれません。

参考URL:
http://www.oxyron.de/html/opcodes816.html
morscerta
質問者

お礼

ありがとうございます。 参考資料など見て無事出来ました。

その他の回答 (1)

  • neorg
  • ベストアンサー率54% (235/433)
回答No.1

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

morscerta
質問者

お礼

アドバイスと参考資料ありがとうございました。 全然知識がなかったのでちゃんと勉強してきます。

morscerta
質問者

補足

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以下での方法が思いつきませんでした。 出来る方法をご教授お願いします。