2017-03-27 8 views
1

私が持っている質問です: enter image description hereスタックトレース

私は40H、41H、42H、43Hのアドレスに値を知っています、 44Hは、10H、0DH、10H、10H、F0Hである。

しかし、私はどのように手でそれらの値を得ることができるのか分かりません。私はプッシュが最初にSPを1増加させ、次にSPによって指定されたRAMのアドレスにデータをコピーすることを知っています。しかし、私は40Hに値10Hを得ることができるが、その後の進め方を知らない。

ご協力いただきありがとうございます。

答えて

1

もちろん、他のスタック操作をトレースすることもできます。次のことは、あなたが再びもちろん0F0hを書き込みpush b10h、書き込みpush accを持っている(0Dh 10hになりますリトルエンディアンで100Dh、)スタック上のリターンアドレスを置く、callです。

0

スタックを使用するプログラム内のすべての命令に従わなければなりません(これらの命令が実行される順序で)。

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に)置かれます。

関連する問題