STATUSのZフラグについてお聞きしたい事があります。
参考書を読んでみると、「Zフラグは、計算結果や代入結果が'0'となったことを表す指標のことをいう。数値の一致を知るには引き算をしてZフラグを見るプログラムを書く」とあります。
サンプルプログラムを見ても'0'か'1'しかZフラグには存在しない様に思われますが、現在私が組んでいるプログラムでは、プログラムが1行進むにつれてZフラグの数字が1ずつ増えていってしまい、計算結果を確認する事が出来ません。これは単に私のプログラムの設定が間違っているのでしょうか。もしソースがあれば判断出来るのであれば後ほどアップしますのでどなたか教えてもらえませんか。PICアセンブラで組んでいます。宜しくお願い致します。
No.1
- 回答日時:
数値が1ずつ増えるの意味がわかりませんが・・・
とりあえず説明すると,STARUSレジスタはZ80(Z80使ったこと無かったらごめんなさい)で言うところのFレジスターにあたります。
STATUSレジスターは8Bitあるレジスターの各ビットに意味をもたせてあります。
Bit0はC(キャリー),Bit1はDC(デジットキャリー),Bit3はZ(ゼロ)・・・
といった具合です。
ですので,結果がゼロかどうかを確認する場合はSTATUSのBit3の状態を見ればいいわけです。
比較をしたい場合は・・・
movlw [比較の基準]
subwf [比較したい値の入ったファイルレジスタ]
btfsc STATUS, Z
goto [一致していた場合の処理]
~以下一致していない場合の処理~
と言うふうに書きます。
btfscをbtfssにすると「一致していた場合」と「一致していない場合」が逆になります。
STATUSやZは最初に書くおまじないの「~.inc」の中でビットやアドレスを定義してくれているので,書くだけで「STATUSレジスター(address:03h)のZフラグ(bit:3)」と言うふうにアセンブラが読み替えてくれます。
こんなもんでどんなもんでしょう?
この回答への補足
INAHO_SH4 様
早速のご回答有難う御座います。
数値が1ずつ増えるというのは、PICプログラムツールのデバッグモードでZフラグの数値の変化を見ていたんですが、デバッグ開始時(プログラムがスタートする時)は「0x00」となっているのですが、次の行に命令が移動すると「0x01」に、また次の行に命令が移動すると「0x02」という感じで数値がアップしていくんです。(これでうまく伝わるかな?)
例えば、下の様なプログラムがあるとします。
プログラム開始行 clrf PORTA Zフラグの値:0x00
clrf PORTB ” :0x01
clrf PORTC ” :0x02
clrf PO_A ” :0x03
clrf PO_B ” :0x04
clrf PO_C ” :0x05
こんな感じで、プログラムが進むと同時にZフラグの数字も増えていくんです。
もう少し補足説明が必要でしたら言ってもらえますか。うまく説明が出来ていないかもしれなくてすいません。宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- 派遣社員・契約社員 美容部員 顔合わせ 派遣 フラグ 2 2022/09/16 11:04
- システム CPUの問題について 2 2022/07/09 12:04
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Java java 入力された文字列を数値に置き換えて整数にし、計算をしたいです。 <を10として /を1とし 4 2022/05/16 21:08
- 求人情報・採用情報 昨日、第一志望の面接(一般事務)に行きました。中途採用で転職をしようと思い、応募しました。 ネットで 4 2022/06/12 11:42
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Ruby VBA 2 2023/01/14 14:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PICで既定の時間数ループを...
-
電車で待機列の割り込みについ...
-
raspberry pi の 割り込み原因...
-
STATUSのZフラグについて
-
【組込み】割り込み中のstatic...
-
irqbalance って
-
CPUの処理量を減らすコーデ...
-
割り込み中に例外異常
-
DOS ターボCのプログラム タイ...
-
PICのPWMの正しい使い方につい...
-
タイマ割り込みについて
-
Amazonfireタブレットにわから...
-
割り込み処理のシミュレート
-
Pythonで仮想通貨の自動売買が...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
バックグラウンドのプロセスの...
-
画像ファイル変換(Tiff→PDF)
-
ACCESS側からEXCELの書式を設定...
-
DoEvents関数って何?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
このレジの並び方は間違ってま...
-
電車で待機列の割り込みについ...
-
スーパーのレジで並んでいたら...
-
ショッピング
-
CPUの処理量を減らすコーデ...
-
一定時間操作がなかったら、と...
-
CPU負荷率の安全な上限と計...
-
pic 複数の割り込み関数 切り分...
-
Amazonfireタブレットにわから...
-
【組込み】割り込み中のstatic...
-
マイコン C言語 割り込み処理...
-
USB機器からのデータ受信による...
-
駅のトイレでナイチンに邪魔さ...
-
インバウンドで迷惑している人...
-
PICのSleepからの復帰に関して
-
実行した後、どうしてもフリー...
-
PICでのプログラムによるチャタ...
-
PICで内部タイマーを使わずカウ...
-
SH2のタイマ出力
-
割り込み中に例外異常
おすすめ情報