アセンブリ言語 【assembly language】

概要

アセンブリ言語(assembly language)とは、プログラミング言語の類型の一つで、コンピュータCPU(MPU/マイクロプロセッサ)が直接解釈・実行できる機械語(マシン語)と正確に対応する命令語で構成された言語。

人間が実用的に使用できるプログラミング言語で最も機械に近い低水準(低級)な言語で、具体的な仕様はプロセッサの機種(命令セットアーキテクチャの種類)ごとに異なる。

コンピュータCPUプログラムとして与えられた機械語の命令列を順番に実行することで処理をうが、機械語の命令は「オペコード」(opcode)と呼ばれる識別番号(正確にはビット)で表されるため、これを直に人間が記述してプログラムを作ることは困難で、無理に書いたとしても後から読み解くのが難しく、書き間違いも起きやすい。

そこで、それぞれのオペコードに対応する「ニーモニック」(mnemonic)と呼ばれる短いアルファベットの命令語を定義し、これを用いてプログラムを記述する手法が考案された。あるプロセッサオペコードの体系に対応するニーモニックの集合を定義したものを、そのプロセッサに対するアセンブリ言語という。

例えば、米インテルIntel)社の8086プロセッサにおいて、指定されたレジスタを指定されたメモリ番地に書き込む命令は「10001000」というビットで表され、十進表記では136、16進表記では88となるが、これに「mov」というニーモニックを対応付ければ何をする命令なのか分かりやすい。

オペコードとニーモニックの対応関係

機械語の場合、代入するという同じ動作でもオペランド引数)として指定される対象の組み合わせ(即値レジスタレジスタレジスタレジスタメモリなど)によって異なるオペコードが割り当てられている場合がある。これらは動作に即して同じニーモニックで表されることが多く、オペランドの組み合わせから適切なオペコードに変換される。

このため、オペコードニーモニックは必ずしも正確に一対一には対応していないが、ある命令セットを完全に実装したアセンブリ言語では、どのオペコードにも必ず対応するニーモニックが用意されている。

アセンブラ/アセンブル

アセンブリ言語で記述されたソースコードはそのままでは実行できないため、アセンブラassembler)と呼ばれるソフトウェア機械語プログラムに変換されてから実行される。この変換処理をアセンブルassemble)という。

アセンブラ機械語への置き換えだけでなく、マクロの展開や、シンボル名を実際のメモリアドレスに置き換えたりといった処理もなう。

ニーモニックの体系はアセンブラ実装されるため、同じ命令セットに対応したアセンブラでもアセンブリ言語は異なっていることがある。ただし、通常はプロセッサの開発元が命令セットの仕様を公開・提供する際に標準のニーモニックを公表するため、これに沿った実装われる。

(2019.1.31更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる