2012-02-05 8 views
6

私は理解しようとしている以下のアセンブリコードスニペットを持っています。 MC68332マイクロコントローラのアセンブリです。BEQ命令は正確に何をしますか?

LOOP 
    some instructions 
    some more instructions 
BEQ LOOP 

私はBEQをGoogleで検索しましたし、私はそれが、結果はゼロに枝を意味するが、私はまだ実際にそれが何をするか理解していない発見しました。最後の命令の結果を0と比較し、0の場合はLOOP行に戻りますか?

+0

参照しているマイクロコントローラを教えてください。 –

+0

マイクロコントローラはMC68332です、 – jazzybazz

+0

ありがとうございました。 –

答えて

4

モトローラの68kファミリでは、「等しい場合は分岐」を意味します。「ゼロフラグが設定されている場合は、指定されたアドレスにジャンプします」という意味です。

しかし、68332はそれとは異なるように見え、 "大文字の構文"に基づいて、本質的に同じことをする別の命令を囲むマクロラッパーになる可能性があります。

他のシステムのポートコードを使用するアセンブリプログラマは、同様のマクロを使用して移植プロセスを容易にすることができます。

+0

ありがとう、それはまさに私が考えるものです。 BEQの前の最後の命令は常にゼロフラグをセットするSUB D2、D2である。したがって、無限ループです。右? – jazzybazz

+0

私たちの前提が間違っていない限り正しいです:) –

1

正確な答えは、使用しているマイクロコントローラによって異なります。一般に、オペランドがない場合、アキュムレータが0の場合、BEQが分岐することが予想されます。これは、アキュムレータが計算の主要レジスタであるシンプルマイクロの場合が考えられます。

どのマイクロコントローラを使用していますか?そのマイクロのマニュアルでBEQ命令の定義を見つけることができます。

+0

MC68332ユーザーマニュアル – jazzybazz

+0

のBEQコマンドについては何もありません。「分岐する」という動詞はどういう意味ですか? – jazzybazz

+0

フリースケールのウェブサイトにはデータシートがあります。http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC68332にリンクがあります。分岐とは、プログラム内の特定の点にジャンプすることを意味します。この場合、「ループ」ラベルに移動します。このコードの機能は、アキュムレータが値 "0"を保持するまでループすることです。 – Stefan