アセンブリ・CPUの基本的用語の解説

アセンブリ言語は、機械語と1対1で対応する命令を並べて記述するプログラミング言語です。

この仕組みの背景について理解するためには、まずノイマン型コンピュータの動作原理について理解しておく必要があります。

ノイマン型コンピュータとは

ノイマン型コンピュータとは、主記憶装置から命令を読み出し、中央処理装置で演算を行い、演算結果を指定された場所に書き込むコンピュータのことを言います。一般的に現在「コンピュータ」と呼ばれているものの多くは、このノイマン型コンピュータに当てはまります。我々が使用しているパソコンもそうです。

ノイマン型コンピュータの処理内容はプログラムによって規定されるので、プログラムを変えることで、思い通りの処理を実行させることができます。プログラムを作成する方法としてプログラミングがありますが、プログラミングによって作成されたプログラムは最終的に機械語に変換されてから実行されます。

アセンブリ言語とは

アセンブリ言語は、人間が理解しやすいプログラムの記述方法の中で、機械語に最も近いものです。

コンピュータはオンとオフという2つの電圧しか扱えないので、機械語は2進数の羅列として表現することになります。機械語の1つの命令は、命令の種類やデータの読出元などから成りますが、それぞれ何ビットで表現するのかが決まっています。そのため意味のある数字の羅列ではありますが、それを人間が手で書くのはしんどいですよね。 アセンブリ言語を使うと、各命令の種類やデータの読出元といった命令の内容を、アルファベットなどを用いて書けるようになります。

CPUとメモリの関係

以上のように説明すると、アセンブリ言語は機械語よりもわかりやすい言語に見えます。しかし、実際は機械語の数字の羅列をアルファベットで書けるようになっただけと言えるのではないでしょうか。アセンブリ言語を使いこなすには、CPUとメモリ(主記憶装置)の関係について理解することが必要です。

まず、CPUとメモリの基本的な関係について、次のように理解するとよいでしょう。

CPUにはプログラムの実行に必要な機能が集約されています。CPUは「演算部」と「制御部」に分かれていますが、制御部はCPUを動かすために電気信号などをコントロールする部分なので、演算に関係する処理はCPUの演算部で行われることになります。演算部はさらに、命令の内容を読み取り演算の準備やその結果の管理などを行う「命令実行部」と、実際に算術演算などを行う「演算実行部」に分かれています。

どのようにプログラムを書き進めるか

シス概の授業ではアセンブリ言語としてCASLⅡを取り上げます。CASLⅡは情報処理技術者試験に登場するCOMETⅡという架空のコンピュータのために用意された架空のアセンブリ言語です。

COMETⅡの命令実行部には、演算結果を一時的に保存しておくためのレジスタ(汎用レジスタ)や、算術比較の結果を保存しておくためのレジスタなど、さまざまなレジスタが備わっています。ただし汎用レジスタ以外のレジスタは、私たちが直接値を指定して使用することは基本的にありません。

そのため、操作したいデータを格納するためには汎用レジスタを使うことを基本とするのがよいでしょう。ただしレジスタの数には限りがあるので、使い終わったが結果として残しておく必要があるデータや、まだ使わないが今後使うデータは、メモリに格納することになります。