みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

アセンブラ言語がわかりません。

初心者です。まとを得ていない質問でしたらすみません。

C言語は理解できる程度なのですが、アセンブラのコードを書く事ができません。

今アセンブラ言語を学び始めた所ですが、「jr」「jarl」「jmp」などの分岐命令の指定の方法がわかりません。

C言語でいうとどういうコードを書いた時に、このような命令を出力できますでしょうか。
本を読んでも、この上記の命令の意味は書いてあるのですが、実際出力が出来なかったもので。

またアセンブラ言語を学ぶためにいい方法などありましたらお教えく頂けないでしょうか。

よろしくお願いします。

投稿日時 - 2004-08-31 19:37:23

QNo.983511

困ってます

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

使っているCコンパイラが、アセンブリソースを出力できるなら、勉強するにはお得な環境ですよ。

ちなみに、↓のやつを最適化せずにコンパイルすると、全部でてきませんか?

int sub() { return 0; }
int main() { while (sub()); return 0; }

投稿日時 - 2004-09-01 03:54:15

お礼

皆様どうもありがとうございます。
アセンブラの種類もそんなにあるなんて事も知りませんでした。
知識がない事がわかりました・・・。

環境を整えて頑張ってみます。

投稿日時 - 2004-09-01 21:23:26

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

アセンブラの種類も書かないで、質問するのは見とおしの狭さを物語る。まあしかし経験者なら指令を見ただけであれだとわかるのかも知れない。Cに拘るから、上から下を見ると良く見えないのでは。下(アセンブラ)から学ぶとそうでもないかも知れない。
V850プログラミングテクニックhttp://www.necel.com/micro/product/development/thirdpartytool/v850prog/4syou/fq_a4_1.html
に出て来てる、V850とかのようです。間違ってますか。
jmp,jarlが出てきている。
私は未経験で判りませんが、推測すると
jarlは戻り番地をlpレジスタに入れて、サブルーチンに飛んでいるようですね。実行したら、そのレジスタの番地の次ぎへ戻るのです。
jmpは、jarlで飛んできたとき、戻り番地(飛んだ番地の次ぎ番地)をlpレジにもっているから、そのレジの番地に無条件ジャンプ(と言うことはサブルーチンを実行して帰るかってIBM大型機のアセンブラにも似たものがありましたなあ。

投稿日時 - 2004-08-31 20:50:25

ANo.2

windowsなら
「NASM」や「MASM」、「インラインアセンブラ」で検索するとよいでしょう。

とりあえずNASMについてのページです。
http://homepage1.nifty.com/mcn/weekly/000730.htm
書籍では
「8086マクロアセンブラ入門」
技術評論社 (ISBN:4-7741-1442-1)
などが参考になります。

参考URL:http://homepage1.nifty.com/mcn/weekly/000730.htm

投稿日時 - 2004-08-31 20:27:37

ANo.1

アセンブラーと言うのは大げさに言うと何千種類もあります。
どのアセンブラーかを言わないと判らないと思います。

投稿日時 - 2004-08-31 20:21:59

あなたにオススメの質問