1

6502 のアセンブリでプログラムを作成する必要がありました。エミュレーター Vice 128 を使用することを余儀なくされました。Commodore 128 は 6502 の命令と互換性があると言われました。コマンドで渡される 80 列のインターフェイスがありました (どれですか?)。機械語またはアセンブリ (プログラム) の命令は、この 80 列のマトリックスに直接入力されました。また、データはこのマトリックスに入力されます。では、この行列は記憶ですか? 各行は何を表していますか? これは逆アセンブルコード 6502 だと言われました。しかし、それが何を意味するのかわかりません。非常に混乱しています。

2 つの数値の合計を実行するこの単純なプログラムを実行したいと考えています。2 つの数値は、最初のページのワード 0 とワード 1 に格納されます。結果を最初のページの 2 番目の単語に格納したいと考えています。最初の行には 80 語が含まれていると想像しました。そうですか?ここでは、データを 16 進数 (3 と 2) にします。

    $03 $02
    LDA $00
    ADC $01
    STA $02

しかし、構文エラーがあります。物事がどのように機能するか分からないので、誰かが私を助けてくれることを願っています。前もって感謝します

4

2 に答える 2

2

まず、6502 では、単語ではなくバイトを扱います。(これは 8 ビット アーキテクチャです)

使用しているマクロアセンブラについては言及していませんが、$03 をデータではなくオペコードとして解釈しようとしていると思います。あなたが使用できるca65で2つのオプションを調べました

 .BYTE $03 $02

あなたが使用するダムで

 HEX 03 02

さらに、6502 には 80 の概念 (単語、行など) がありません。私が考えることができる唯一の 80 は、80 列を持っていた古い端末です。これがここでどのように関連しているかわかりません。

于 2015-02-20T04:31:26.723 に答える
1

逆アセンブルされたコード 6502 を実行するには?

コードを元に戻す必要があります。

各 6502 命令は 1、2、または 3 バイトを表し、最初のものはopcodeと呼ばれ、オプションの 2 番目または 3 番目は命令によって使用されるデータ (オペランド) です。

命令ニーモニックをバイトに変換するプログラムが必要です。コモドールにはそのようなプログラムがたくさんありました。

コモドール128にはモニターが内蔵されており、組み立ての指示を直接入力することができました。MONITORこれは、BASIC プロンプトで入力することで入力できます。最初にアドレスを設定してから、「アセンブル」コマンドを使用する必要があります。次に、開始アドレスで「go」コマンドを使用して実行します。モニターに入る前に、BASIC POKE コマンドを使用して、データを含む場所を設定します。このアドレス0B00は、テープ I/O 中以外は使用されないテープ バッファであるため、使用するのに適したアドレスです。

幸運を。

于 2016-12-13T19:43:12.920 に答える