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

PICマイコンをはじめるにあたって、アセンブラかC言語、どちらにしようか迷っていたところ、下記の知恵袋で「まだ、C言語に手を出していないのであれば、絶対にアセンブラーから学んで下さい。」

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1386032198

と、書いてありました。実は以前よりC言語を勉強していたのですが、どちらにすればよいですか?
詳しくは上のサイトを見て頂きたいのですが、この知恵袋の回答者の方が言う「構造体・ポインター」の直前、アドレス・バイトとビット付近で現在つまずいていて、PICとまとめてC言語の書籍で補おうとしていたのですが、タイミングとしてはちょうど良いでしょうか?

C言語のレベルとしては、プログラミングで必ず出てくる、文章表示と繰り返し・条件分岐・論理演算くらいしかわかりません。

C言語とアセンブラ、現在の自分にどちらの方が適当かご教示ください。

A 回答 (3件)

「繰り返し・条件分岐・論理演算」が分かっているならとりあえずプログラミングの入門は済んでいるようですね。

この辺でアセンブラに手を出すのは面白いと思います。

ただ、アセンブラを学ぶにあたってPICマイコンは最悪です。
kabasanさんも「苦行以外の何物でもなく」とおっしゃっていますが、PICのアーキテクチャ(構造)は最近の流行から外れており、非常に癖があります。
私もPICはよく使っていますが、パズルとしての楽しさを求めてアセンブラを書いているように思います。
癖の詳細については割愛しますが、ざっと言うと「レジスタが1つのみ」「命令とデータのアドレスが別」「命令数が35個などと少ない」あたり。
なおこれはPICのうち、ベースライン・ミッドレンジ・Enhancedミッドレンジ・ハイエンド(PIC18)に当てはまります。
他の、PIC24・PIC32については上記の癖はありませんが、これらのPICはマイナーなので、あえてそれらを選ぶ理由はないように思います。
(PICを選ぶ理由は情報の多さと入手性のよさが主なので)

命令セットが素直なマイコンとしては、AVRマイコンが良いでしょう。PICに比べて情報が少ないのが難点ですが。
またARM(特にThumb命令セットのCortexM0(+)あたり)もよいですが、こちらも情報が少ないですし高性能なゆえの難解さがあります。
マイコンにかぎらずアセンブラを学びたいならx86という手もなきにしもあらず。命令セットは非常に複雑ですが、その分かゆいところに手が届く便利さがあります。情報が多いのも嬉しいところ。
    • good
    • 5
この回答へのお礼

ご回答頂きありがとうございます。
AVRも考えたのですが、まさかPICがそこまで癖があるとは思いませんでした。
とても興味深く、参考になります。
少し検討してみようと思います。ありがとうございました。

お礼日時:2016/04/03 16:38

組み込みマイコンではアセンブラの知識は必須と言っても良いです。


が、アセンブラ覚えてからCに移行するのって案外できないですよ。
覚えて慣れてしまった環境からはなかなか抜け出せないものです。
Cで始めて、必要に迫られたときに渋々アセンブラ勉強すればいいんじゃないでしょうか。

ビット、バイト、アドレスに至ってはCかアセンブラかなんて関係のないもっと低次元な話です。

それよりも私が「お勧めしない」のは、PIC16F84A等の化石と呼んでも良いくらいのマイコンを使うことです。
こいつのアセンブラなんて苦行以外の何物でもなく、趣味であっても時間の無駄です。
慣れた人なら使ってもいいですが、初心者には全くお勧めできません。
PICにもいろいろあるので、そのあたりも調べてみてください。
    • good
    • 0
この回答へのお礼

ご回答頂きありがとうございます。
お勧めされないというのは、PICの古いバージョンということですか?
ではMicrochipの提供する最新のモノであれば大丈夫ということなのでしょうか?
無知ですみません。
少し自分で調べてみようと思います。ありがとうございました。

お礼日時:2016/04/02 11:27

目指すところ、PICマイコンを学ぶ目的は何でしょう?


それによると思います。
それと何か目的があってC言語を学んでおられるのでしたら、あれこれ手を出さずきちんとC言語を学ばれた方がよいです。

C言語を学ぶこととは別に、これと並行してマイコンの仕組み、演算装置の基礎的部分を学びたいということでしたらレジスタを意識して使うアセンブラが適しています。
中途半端な状態、特に構造体やポインタについてきちんと取り扱い方を理解していない状態でマイコン上でC言語を使うのはよくないです。

参考まで。
    • good
    • 0
この回答へのお礼

ご回答頂きありがとうございます。
目的は両者とも、○○を作ってみたい!という知的好奇心で始めました。危ない理由ですね(笑)。
とりあえず、きちっと目標や期間など決めて検討してみようと思います。
参考になります。ありがとうございました。

お礼日時:2016/04/01 21:02

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