• ベストアンサー

アセンブラで「0でないならスキップ」したい

アセンブラで「0でないならスキップ」したい PIC18Fベースの開発で、アセンブラでプログラムをしています。 いま、遅延タイマーとして作った変数DELAY(初期値:0x0f)をタイマ割込みで減算しています。 DELAYが0x00になったとき、実行したい命令がありますが、どのようにプログラムすれば簡潔に記述できるでしょうか。 命令一覧表を眺めながら考えているのですが、できそうでできず困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • P0O9I
  • ベストアンサー率32% (693/2146)
回答No.1

BZ(Branch if Zero)か BNZ(Branch if Not Zero)命令を使うだけです。 >できそうでできず困っています。 なぜできないのでしょうか?

earl_gray
質問者

お礼

急いでいたため、とりあえずDELAYに1を足してから、DCFSNZで分岐していました。 バイト処理命令を中心に検討していましたが、どうやら機能の読み方が足りなかったようです。うっかりしていました。

関連するQ&A

  • PICアセンブラで悩んでます・・・。

    PIC16F84を使ってアセンブラでプログラムしているのですが、どうしてもアセンブルが成功しません。 エラーを中心にプログラムを削りまくったところ、ADDWF命令とRETLW命令でコケているようです。(テーブル処理) 以下のプログラムで、ADDWFの位置で「ラベル(ADDWF)の位置が変です」というエラーが出てしまいます・・・。  LIST P=PIC16F84;  INCLUDE "P16f84.inc"  ORG 0 START  ADDWF PC,W  END どういうことなんでしょうか?(T-T (タブはスペースに置換済みです)

  • アセンブラ skipzの意味

    お世話になります PIC系のアセンブラでskipzはオペランドが0の場合に次の行をスキップする命令でよろしいのでしょうか? btfscのbyte判定版みたいな使い方なのでしょうか? ご存知の方がいましたら教えていただけないでしょうか

  • PICのアセンブラ命令コード一覧

    PIC24FまたはdsPICのアセンブラ命令コード一覧を探しているのですが、 マイクロチップのHPからも探し方が悪いのか、当方は見つけることができませんでした。 何方か、PIC24FまたはdsPICのアセンブラ命令コード一覧が記載されているHPや情報をご存知ないでしょうか? アセンブラ記述で、コーディングしたいのですが、命令コードの意味が良く分かりません。 命令コードとその意味が記載されたものがほしいのです。 宜しくお願いします。

  • PIC用アセンブラ「PA.exe」の参考書ってありますか?

    PIC用アセンブラ「PA.exe」の参考書ってありますか? 趣味で電子工作をやっており、PICを使用したりしています。 「わかるPICマイコン制御」という参考書を見ているのですが、 割り込みや、タイマー機能等の記載がなく、他の参考書を探しています。 「PA.exe」をベースにしている参考書は、他にないでしょうか? 探してみましたが見つからなかったので、 知っている方がいましたら教えていただけないでしょうか? よろしくお願いします。

  • PICのアセンブラによるLEDの制御

    PICのアセンブラによるLEDの制御 をやっているんですが。 LEDを点滅させる速度を時間に応じて変化させたいのですが、いまいちわかりません。 ●○●○●○●○ から ○●○●○●○● です。 使用ICは16F84Aです おそらく、 COUNT1 EQU 1CH を変化させるか、DELAYサブルーチンをかえるのであろうと思うのですが、わかりません。 教えてください。

  • アセンブラを勉強中の者です。

    アセンブラを勉強中の者です。 PIC16F84Aによるタイマープログラムについておしえてください。 言語はアセンブラでRA4を入力にしてDC5Vの電圧を加えたときに、 ・RB5(出力)ではRA4のタクトスイッチを押したと同時にリレーが1秒間オンにする ・RB4(出力)ではRA4のタクトスイッチを押した後、0.4秒後にリレーが0.2間オン このような動作は、並列実行できるのでしょうか?

  • 自分でアセンブラ言語を作れる?

    自分でアセンブラ言語を作れる? あるCPUにmov命令というのがありますが命令名をソフトウェアレベルで変えることは 出来るのでしょうか? (mov ax,1をmove ax,1にしたり) アセンブラはCPUが同じならどれも同じだと思っていたのですが プログラムを終了する時、windowsはint 21hなのにlinuxはint 0x80なので 疑問に思いました。

  • 16F648Aのタイマ0機能について

     現在PQ20PIC(http://www.cqpub.co.jp/shoseki/mycomputer/pic023/)ASMファイルを使ってプログラミングしているのですが、タイマ0機能がさっぱりわかりません。具体的に言うと、  1、タイマー0の割り込みが発生するタイミング  2、タイマー0のカウントアップを開始させる方法 がわかりません。  どなたか、わかる方回答お願いします

  • PICマイコンでのタイマの作成

    PICマイコン(16F84A)を勉強している初心者です。 タイマ0のオーバーフロー割込みを用いて約一秒のタイマを作成し、 このタイマを利用して10秒ごとに音が鳴るようにしたいのですが、 どうしたらよいのでしょうか?

  • アセンブラ言語について

    アセンブラ言語について質問です。 数式インタープリタ[INPRIX]に以下のコマンドを追加する。 変数名を再定義する RENAMEコマンド すでに定義されている変数ABを再定義するとき RENAME AB X →変数ABがXに置き換えられる RENAME AB XYZ →変数ABがXYZに置き換えられる すでに定義されている変数名の一部を再定義するとき RENAME A✳︎ XY →先頭文字がAで始まる変数名の部分がXYに置き換えられる RENAME AB✳︎ X →先頭文字がABで始まる変数名の部分がXに置き換えられる ※該当する変数名が存在しないときは何も行わない。 このようなプログラムを教えて下さい。 恥ずかしながら卒業かけての補習なのですが、全く分かりません。 すいませんが、どなたかお願いします。