ホーム :

PICに挑戦

前へ 次へ

PICにも挑戦です。
MPLAB IDE のシミュレート機能で、アセンブリ言語を勉強中です。C言語での例をアセンブリ言語でコーディングしています。テストしたプログラムソース


1.「真」の判定
if( WORK ) {
X(); // 真の時実行
}

MOVF WORK,F ; ファイルレジスタWORKが、0で無い時Xを実行
BTFSS STATUS,Z
CALL X

; MOVF WORK,F の実行で、WORKの内容をゼロフラグに反映させる。
; BTFSS STATUS,Z で、ゼロの時(偽の条件)をスキップさせる。
; CALL X は、真の時、実行される。



2.「偽」の判定
if( !WORK ) {
X(); // 偽の時実行
}

MOVF WORK,F
BTFSC STATUS,Z
CALL X



3.「等しい」の判定(ファイルレジスタとリテラルの比較)
if( WORK == 3 ) {
X(); // 等しい時実行
}

MOVLW 3
SUBWF WORK,W
BTFSC STATUS,Z
CALL X



4.「等しくない」の判定(ファイルレジスタとリテラルの比較)
if( WORK != 3 ) {
X();
}

MOVLW 3
SUBWF WORK,W
BTFSS STATUS,Z
CALL X



5.unsigned の「小なり」の判定
if( WORK < 3 ) {
X();
}

MOVLW 3
SUBWF WORK,W
BTFSS STATUS,C
CALL X



6.unsigned の「大なりイコール」の判定
if( WORK >= 3 ) {
X();
}

MOVLW 3
SUBWF WORK,W
BTFSC STATUS,C
CALL X



7.unsigned の「小なりイコール」の判定
if( WORK <= 3 ) {
X();
}

MOVLW 3
SUBWF WORK,W
BTFSS STATUS,Z ; イコール
BTFSS STATUS,C ; 小なり
CALL X

お行儀よく行えば、上のように「イコール」と「小なり」の2回に分けての比較となる。下のコーディング例では、「小なりイコール3」を「小なり4」として、条件を読み替えることにより比較を簡単にする。


「小なりイコール」の判定その2
;if( WORK <= 3 ) {
; X();
;}

MOVLW 3+1
SUBWF WORK,W
BTFSS STATUS,C
CALL X



8.unsigned の「大なり」の判定
if( WORK > 3 ) {
X();
}

MOVLW 3
SUBWF WORK,W
BTFSC STATUS,Z ; イコールならスキップ
GOTO SKIP01
BTFSC STATUS,C ; 小なりならスキップ
CALL X
SKIP01:


「小なりイコール」と同様に条件を「大なりイコール」に読み替えると以下のようになる。

「大なり」の判定その2
if( WORK > 3 ) {
X();
}

MOVLW 3+1
SUBWF WORK,W
BTFSC STATUS,C
CALL X







あ〜み〜プロジェクト に戻る