私が持っている質問です: スタックトレース
私は40H、41H、42H、43Hのアドレスに値を知っています、 44Hは、10H、0DH、10H、10H、F0Hである。
しかし、私はどのように手でそれらの値を得ることができるのか分かりません。私はプッシュが最初にSPを1増加させ、次にSPによって指定されたRAMのアドレスにデータをコピーすることを知っています。しかし、私は40Hに値10Hを得ることができるが、その後の進め方を知らない。
ご協力いただきありがとうございます。
私が持っている質問です: スタックトレース
私は40H、41H、42H、43Hのアドレスに値を知っています、 44Hは、10H、0DH、10H、10H、F0Hである。
しかし、私はどのように手でそれらの値を得ることができるのか分かりません。私はプッシュが最初にSPを1増加させ、次にSPによって指定されたRAMのアドレスにデータをコピーすることを知っています。しかし、私は40Hに値10Hを得ることができるが、その後の進め方を知らない。
ご協力いただきありがとうございます。
もちろん、他のスタック操作をトレースすることもできます。次のことは、あなたが再びもちろん0F0h
を書き込みpush b
10h
、書き込みpush acc
を持っている(0Dh 10h
になりますリトルエンディアンで100Dh
、)スタック上のリターンアドレスを置く、call
です。
スタックを使用するプログラム内のすべての命令に従わなければなりません(これらの命令が実行される順序で)。
1. push acc ---スタック上に10Hを配置します(位置40h)。 2.コール---戻りアドレスをスタックに置きます(つまり、アドレス0x100Dを上に置きます)。リトルエンディアンの順番でスタックするので、位置41hに0Dh、位置42hに10h)
jmp命令は実行されません。代わりに、コール命令のために制御はa_x_b_plus1に転送されます。
したがって、 3. push acc ---スタックに10Hを再度置きます(位置43h) 4. bを押すと--- F0hがスタックに(場所44hに)置かれます。