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

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

解決済みの質問

アセンブラ言語って何をするための言語なんですか?

CASL II を勉強しようと思うのですが、そもそもアセンブラ言語って何をするための言語なんですか?また、どんなことができるんですか?

投稿日時 - 2007-03-10 23:26:51

QNo.2821538

すぐに回答ほしいです

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

プログラム言語の中でも、もっとも機械よりの言語(機械語除く)ですね。
何ができるというより、何でもできます。
他の言語では実行する際にはコンパイルして機械語に翻訳して実行します。で、この機械語とアセンブラは1対1に対応しています。通常のC言語やCOBOLなどでコンパイルして100行になるプログラムでも、アセンブラですと50行ぐらいで記述する事も可能です。
命令自体が少ないですし、本番の問題には言語仕様も記述されます。非常にシンプルなプログラムになります。他の言語に比べて読解力を必要としませんので、試験の合格だけを求めるならおすすめの言語です。

投稿日時 - 2007-03-10 23:42:51

ANo.1

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

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

回答(8)

ANo.8

CASLはあくまで仮想言語です。
で機能も最低限の物しか実装されていません。
ですからCASLのアセンブラではできることは
他の言語より何もないと考えた方が良いです。
あくまで勉強用言語。(二種(基本)受験用言語)。
基本情報処理を受ける気がないならMASMなんかの
x86系CPU用物を使ってx86系CPUの物を覚えた方が
いいとおもいますよ。
ただしパソコンレベルだとほとんどの分野において
アセンブラで行う必要性はなくアセンブラを覚える
時間で他の言語を2~3個でも覚えた方がいいと思いますよ。

投稿日時 - 2007-03-11 08:07:28

ANo.7

★アセンブリ言語について
・CPU命令の1つ1つに対応したニーモニック(キーワード)が用意されている言語です。
・高級言語(人間が分かりやすいタイプ)に対して低級言語(人間にとって分かりづらい)という
 言葉があり、アセンブリ言語はその『低級言語』タイプです。
・今は高級言語で高級言語(C,C++,VB,Java…)のコンパイラを作成していますが、最初は
 アセンブリ言語で作られました。→さらにさかのぼると『アセンブリ言語』の前は機械語の
 CPU命令の 16 進コード一覧を元に作成していたようです。
・本題の『アセンブラ言語って何をするための言語なんですか?』というのは今となっては
 ソフトの高速化や、最適化などコンパイラには真似できないきめ細かな記述が行える最終手段
 のような位置づけになります。でも、知識や技術などのスキル不足で変なソースを書けば
 逆効果(速度の悪化など)に繋がります。
・利用するには、それなりの知識と経験がないと『アセンブリ言語』を使いこなせません。
 上手に活用すればプログラム・コードを減らせてメモリの節約や起動の高速化、その他の処理
 への高速化などいろいろ良いことがあります。なんだったら自作コンパイラや OS までもその
 言語で作成できます。C言語のコンパイラで 64 ビット整数の演算をサポートしていない処理系
 でも『インライン・アセンブラ』の機能を使えば 64 ビット整数が扱えます。→C99 の規格では
 『long long』型があるようですが、一部のコンパイラではその型が利用できないときには活躍します。
・それから『アセンブリ言語』を学ぶことで、より CPU 内部の仕組みも理解できるようになります。
 そうなれば高級言語も使いこなせるようになりますよ。きっとね。多分?→自分しだいですが…。
・ただし、『CASL』は仮想アセンブラですので、試験以外ではまともに利用できません。
 実際にアセンブリ言語を学ぶのならば『MASM』などのちゃんとプログラムが作成できるタイプに
 しましょう。よって、『CASL』は試験用に覚える以外に活用法がないと、私は思っています。
 でもアセンブラですので知っておいて損はしないはずです。その後のちゃんとしたアセンブリ言語を
 学習する為のイメージ・トレーニングになりますよ。

最後に:
・『アセンブリ』…CPU命令1つ1つにキーワードが対応したプログラミング言語の名前です。
・『アセンブラ』…ソースファイルから機械語に翻訳するソフトウェアです。
・『アセンブル』…ソースファイルから機械語に変換すること。
・用語使用例⇒『アセンブラ』で『アセンブリ』を『アセンブル』する。
・以上。おわり。→結論としては CPU 命令で出来ることは全て出来ます。それがアセンブラです。

投稿日時 - 2007-03-11 00:30:06

ANo.6

CPUの性能が上がりメモリーも安くなった現在では
一部を除いてそう必要とされる言語ではありません。

しかし、CPUが理解できるものに一番近い言語ですから
極めて早いスピードを要求される場合や、ハードウエアを直接操作するような場合には必須になる言語でもあります。

たとえばC++で作ったプログラムのオブジェクト(CPUが理解できる言語)とアセンブラで作成されたオブジェクトでは
アセンブラのほうが半分とか1/3と少なくなります。
オブジェクトのステップ数が少ない=高速となります。

投稿日時 - 2007-03-10 23:59:41

ANo.5

アセンブラ言語を知っていると何ができるかというと、たとえば新しいアーキテクチャのCPUのためのコンパイラを作る時には必要になります。あるいは新しい言語を作る場合に、その言語用のコンパイラを作る場合にも必要になります。まぁ、普通にはコンパイラそのものを自分で作るなどということはそうそう無い訳ですが、過去にコンパイラを作ってくれた人が居るお陰で今の高級言語が使える、というありがたみを実感するには良い機会かも。
あと、高級言語の一見不可解な仕様やおまじないコードも、アセンブラを知っていれば納得できることが多々あり、精神衛生上よろしいです。

投稿日時 - 2007-03-10 23:59:09

ANo.4

>アセンブラ言語って何をするための言語なんですか?

通常のプログラミングでは必要性はありませんが・・・。
BIOSや組み込みファームなど、ハードウェアの直接的な制御が必要な部分ではアセンブラが必要になる場合があります。

CやJavaなどの言語と違って、CPUの命令言語(マシン語)に近いものなので、プログラミングにはCPUやハードなどの知識も必要になります。

CALSでも仮想CPUの構成(仕様)を元にプログラミングする必要があるのでは無いでしょうか?

投稿日時 - 2007-03-10 23:44:51

ANo.3

アセンブリ言語とは、
機械が直接理解する機械語(0と1が大量に並んだ言語)と、
人間が比較的分かりやすく理解できる高級言語(C言語など)の中間にあたる言語です。
ハードウェアを直接操作することのできる言語で、
OSを作ったりデバイスドライバを作ったりできるそうです。

ちなみにCASLは試験で使用するための仮想的な言語であるらしく、
この言語を使って実際に動作する製品を開発することはなさそうです。

投稿日時 - 2007-03-10 23:43:32

ANo.2

アセンブラー言語は日本語では機械語と表される様に、そのCPU独自の言語で、各CPUはそのCPU用の言語でしか動作しません。
従ってもっとも効率の高いプログラムを書く事が出来ますが、反面、めんどくさいし、他の種類のCPUとの互換性はありません。
アセンブラーに出来ない事は、他の言語でも出来ません。C言語であっても、最終的にはアセンブラーレベルに落ちてオブジェクトプログラムと成ります。

投稿日時 - 2007-03-10 23:42:53

あなたにオススメの質問