dポイントプレゼントキャンペーン実施中!

アセンブラはそこそこ使えるんですが最近C言語をはじめました。
一見簡単そうですがむずかしいですね。

アセンブラの場合
CNT からデータを取り出す場合

RLF CNT,F
BTFSC STATUS,C
GOTO APGM
GOTO BPGM

とやります。これをHi-tecC言語で自己流で
cnt=cnt<<1;
if(STATUS,0==1)
APGM();
else
BPGM();
なんて書いてみたんですがエラーでまくりです。
どう書くんでしょうか、おしえてください。
検索ずいぶんやったんですがSTATUS,CやSTATUS,0なんてCでは使わないんでしょうか?

A 回答 (3件)

>検索ずいぶんやったんですがSTATUS,CやSTATUS,0なんてCでは使わないんでしょうか?



ないので使えません(処理系によっては独自仕様で類似のものがあったりするかもしれませんが)。

cntが何ビットかわかりませんけど8ビットとしたら

int status_c = cnt & (1<<7);
cnt <<= 1;
if (status_c) {
APGM();
}
else {
BPGM();
}

になるかと思います。
    • good
    • 0
この回答へのお礼

さっそくの回答ありがとうございます。全然違いましたね。
やっぱりむずかしいですね。

お礼日時:2013/04/04 02:16

まぁ,


if(STATUS,0==1)
ではエラーは出ないんですけどね. 文法的には何もおかしくないし.

あと, 最低限エラーメッセージくらいは書くように.
    • good
    • 0

Hi-tec C であれば、pic.h というヘッダファイルがあるはずです。


これを使うために、

#include <pic.h>

とつけると、いろいろ使えます。

> STATUS,CやSTATUS,0なんてCでは使わないんでしょうか?

さすがに、カンマを含んだ名前は(文法上)使えませんが、pic.h の中に、似たような名前が適切に定義されているはずです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!