3

6502 アセンブリ言語に関する次の質問に答える必要があります。

「スタックには、次の値があります (一番上の要素が最初):0x01, 0x02, 0x03, 0x04, 0x05, 0x06 アドレス0xc000は命令jsr 0xABCDです。フェッチ/実行サイクルの後にプログラム カウンターに格納される値と、スタックの一番上の要素は何ですか?」

プログラムカウンターが になることはわかっていますが0xABCD、スタック要素について混乱しています。6502 アーキテクチャでは、スタックが上から下に (から0x01FFまで0x0100) 成長することを知っています。だから、スタックポインタは要素を指していると0x01思いますよね?

ここで、コマンドprogram counter + 3があるため、戻りアドレスは である必要があります。つまり、スタックにプッシュされますが、リトルエンディアン順であるため、最上位の要素になります。あれは正しいですか?next0xc003c0

4

2 に答える 2

1

jsrで何が起こるかは

stack[stack_pointer] = return_high
stack_pointer--
stack[stack_pointer] = return_low
stack_pointer--
pc = jsr address

したがって、スタック ポインターが 0x01 を指していて、0x02 が下位/小さいアドレスであると主張している場合、0x01 と 0x02 は上書きされ、サブルーチンにヒットすると、スタックは 0x03 を指します。

于 2014-01-30T20:18:36.757 に答える