2017-04-17 17 views
2

これまでに見たシンプルな8051プログラムのほとんどは、コード LOOP: SJMP LOOPで終わっています。なぜ8051プログラムは "LOOP:SJMP LOOP"というコードで終了するのですか?

上記の命令は、同じ命令を繰り返し呼び出すことによって無限ループを作成すると私は理解していると思います。しかし、プログラムの終わりに無限ループを持ち、何度も何度も実行し続けると、いつプログラムが終了するのか、という目的は何か。

+1

最後の命令の後でプログラムがランダム/セミランダムデータの実行を継続しないようにします。 CPUはそれをすべてデータとみなし、メモリ内にあるものを実行しようとします。したがって、未定義の動作が発生します。プロセッサをループ状に配置することで、メモリに残っているものが無駄にCPUをさまようのを防ぐことができます。 –

答えて

5

他にどのようにベアメタルプログラムを終了または終了させるのですか?一般的に停止や他のコマンドはありませんが、プロセッサは停止しません。最も安全でクリーンなのは、ループを無限ループにすることです(見つかったものを実行しようとするメモリをさまようのではなく)。

単純な教育用プロセッサ/マイクロコントローラプログラムの場合、「終了」するプログラムでは、プロセッサが停止していなければ無限ループで終了することをお勧めします。ほとんどのmcusは決して停止することはありません(彼らは低電力状態でスリープ状態になるかもしれませんが、リモコンのボタンを押すと目覚めます)。

関連する問題