プロが教えるわが家の防犯対策術!

半年くらいPICをアセンブラで動かす練習をしてきました。
最近少し複雑な仕事をさせたくて、それでどうしてもアセンブラだとこんがらかって分からなくなるので、この際C言語のプログラミングに移行したいと考えてます。

で、例えば(例下記)サンプルのコードを見ると、andやorのロジックが(自分には)複雑で、手計算ではまた分からなくなりそうです。
---------------------------------------------
(例);
#include "LCD_Lib3.h"

//////// データ出力サブ関数
void lcd_out(char code, char flag){
// Set upper 4 bits Data on LATB12-LATB15
LCD_DATA = (LCD_DATA & 0x0FFF) | ((unsigned int)(code & 0xF0)<<8);

以下省略
---------------------------------------------

それで、バイナリー数値をand, orなどでいくつか組み合わせた場合の(上の例のような具合の)計算結果をバイナリーで表示してくれるような「簡易ロジック計算ソフト」みたいなモノがないか探しています。

そのようなソフトの知識をお持ちの方がいらしたら教えてくださいませ。
を使っているところを分かりやすく見てみたい

A 回答 (6件)

MPLABのシミュレータで動かせばよいのではないでしょうか。



他に、Excelを使うと入力を変えたときの結果が一覧できて便利です。
ただし式をExcel用に書き直す必要があり、またANDやORが無いのでVBAで作らなければならず面倒です。

また、JavaScriptで適当に書くのはどうでしょう。
単純な式ならCと似たようなものですから書き換えは楽で、ブラウザですぐ表示できます。

この回答への補足

ありがとうです。
>「MPLABのシミュレータ」
うーん、やっぱりこの手がイイですかねぇ。確かに便利ですよね。これで仮に入力しといて、シィミュレーションをそこだけオンにしてからストップさせてレジスタを拝見すれば分かることになりますね。

それでやってみますか、、、ちょっと試してみます。

補足日時:2014/04/29 17:12
    • good
    • 0

> 10と01をandしたら11じゃなかったの?って感じです。

これって、こっちの間違い?

間違いです。00が正しいです。
こればかりは納得しないと、これから先に進めないでしょう。
とりあえずC言語の前に、情報処理の基礎について一通り学んでみてはいかがでしょうか。

この回答への補足

間違いを教えてくれてありがとうです。
間違ってました。
まだまだです、、、がんばります。

補足日時:2014/04/30 23:05
    • good
    • 0

レジスタの使い方に係わる問題ですので、いちいち計算するのではなくて


この程度であれば暗算で出来るように訓練した方が良いと思います。

・16進表示で 'LCD_DATA' の下3桁を取りだし、
・16進表示で 'code' の2桁目を8ビット右シフトする、即ち、4桁目にする
上の2つを合成する
→ 新しいLCD_DATAはcodeの2桁目が4桁目になり、下3桁は元のLCD_DATAの物になる

この回答への補足

ありがとうです。
なかなかベテランの方ですね?暗算・手計算が間違いなく出来てるのか、まだ不安がつきまとうレベルなんですよー。
だからまずそれを確かめ算したい、というところです。
早く頭の中でささっと分かっちゃうようになりたいでする。

補足日時:2014/04/29 17:16
    • good
    • 0

「Cコンパイラ」というソフトがあります.

この回答への補足

ありがとうです。
マイクロソフトの「Visual C」のことですか?ダウンロードして見てみましたが、まだこれで何をどういじったら「目的の確かめ算」ができるのかが?

替わりに「FlipCal Version 1.1 」というのをさがして試してみましたが、バイナリーのand, orがどうも納得いかないんですよ。
> 10 and 01 と入力すると
BIN : 0000 と帰ってくる。
10と01をandしたら11じゃなかったの?って感じです。これって、こっちの間違い?

補足日時:2014/04/29 17:08
    • good
    • 0

探さなくても、Windowsに標準の電卓のメニューの表示をプログラマを選んで変えれば良いだけですが(Windows7)

この回答への補足

早速ありがとうです。まだしぶとくXPです。XPでもありますね。でも
(LCD_DATA & 0x0FFF) | ((unsigned int)(code & 0xF0)<<8)
みたいに連続で入力してから、ポンッと出したいんですよ。

補足日時:2014/04/28 22:38
    • good
    • 0

2進数の論理演算(AND,OR,NAND)機能を搭載した


関数電卓(ポケットコンピュータ)なら
昔からあります。

ソフトも探せばあるかも。

この回答への補足

早速ありがとうです。
試しに
rakurakulogicと
logic306と
CEDARlogic
の3つをインストールしてみましたが、これで正しいのかどうか?わかりません。これは使えそうですか?

補足日時:2014/04/28 22:12
    • good
    • 0

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