私の6502/NESエミュレータのための命令関数を作成している間、私は符号付きバイトと2の補数のコンセプトを6502で理解しています。つまり、BMIなどの分岐命令は、負の数で算術演算を行う命令もあります。また、負のフラグは、アキュムレータの7番目のビットを検出します。 (2の補数)6502メモリに格納されたバイトは符号付きか符号なしですか?
これは、メモリ内のすべてのバイトが符号化されていて、メモリをint8_t CPUMEMORY[0x10000];
として初期化でき、uint8_t CPUMEMORY[0x10000]
ではないことを意味しますか?
私が気にしていることは、演算結果が符号なし8ビットの制限255を超えたときにキャリーフラグがセットされるということです。しかし、すべてのバイトが署名されていれば127であるべきではありませんか? (オーバーフローフラグはこれを行いますが、キャリーフラグを持つポイントは何ですか?)
バイトを符号なしと符号付きの両方として解釈する命令のADCとSBCの例はありますか?それとも他のものがありますか? –
実際、加算または減算のオペランド/結果を符号付きまたは符号なしとして解釈することができます。 –
完全性のために:**いくつかの**命令では、6502のバイトをBCDと解釈することさえできます。 –