条件分岐の最近のブログ記事

PICマイコン(Peripheral Interface Controller)のためのプログラムをアセンブラで書いていくとき、どうすれば条件分岐ができるのか最初はとまどいます。
まずは基本的なものを書いてみます。

条件分岐の発展系はこちらから

C言語などで、
if( TEST_VAR == 10 ) {
    //何かの処理
}

などというようなことをアセンブラしたい場合はどのようにすればよいのでしょうか?
※変数TEST_VARが10かどうかで処理を変えたいときはどうすればよいのか

TEST_VAR = 10 ということは、 TEST_VAR  - 10 =  0
ということなので、10をひいて、その値が0かがわかればどうにかできます。
これはPICのゼロフラグ(Z)をチェックすることによって解決できます。

今回のプログラムでは、TEST_VARが10かどうかで、ポートBの出力が 変わるようになっています。
よって、ポートにLEDでもつないでおけば確認がしやすいでしょう。


PICのためのプログラムをアセンブラで書いていくとき、どうすれば条件分岐できるかわからなくなりそうだったのでメモとして残しておきます。(ほとんど自分用(苦笑))

C言語などで、
if( TEST_VAR > 10 ) {
    //何かの処理
}

などとしたい場合はどのようにすればよいのでしょうか?

TEST_VAR > 10 ということは、 TEST_VAR  - 10 >  0
ということなので、10をひいて、その値が正か負かがわかればどうにかできます。
これはPICのキャリーフラグ(C)をチェックすることによってどうにかできます。

今回のプログラムでは、TEST_VARが10より大きいかどうかで、ポートBの出力が 変わるようになっています。
よって、ポートにLEDでもつないでおけば確認がしやすいでしょう。

比較した後、10以下ならTEST_VARに1を足して、TEST_VARが10より大きくなるまで 永遠に比較を続けるというプログラムです。