アセンブラ(CASLⅡ)を理解しよう! 基本情報技術者試験の午後問題対策を解説!

PC画面を見ている女性

基本情報技術者試験の午後問題ではプログラミング言語問題が出題されます。プログラミング経験がない場合、プログラミング言語問題が基本情報技術者試験の最大の難関となるでしょう。

基本情報技術者試験では、いくつかのプログラミング言語から好きな言語を選択することができます。アセンブラ言語はその選択肢の一つとなります。

この記事では、基本情報技術者試験における言語選択の助けになるように、アセンブラの特徴や用途などの基本事項や基本的な構文についての解説を行います。

目次

アセンブラとは

まず、アセンブラの概要について以下で解説します。

アセンブラの特徴

アセンブラは実際のコンピュータ処理に近い形で記述する低水準言語であり、機械語と一対一で処理を記述し、コンピュータを動作させるという特徴があります。機械語とはCPUが実際に処理を行う際の動作を記載した言語であり、アセンブラも同様にCPUの処理レベルで記述を行うことになります。

なお、アセンブラは機械語と一対一対応で記述する関係上、利用するハードウェアにより記述内容が変わります。基本情報技術者試験ではアセンブラシミュレータCASLⅡを対象として問題が出題されます。

アセンブラの用途

過去にはアセンブラは組み込み処理などで利用されていましたが、現在ではあまり利用されていません。コンピュータが登場して間もない頃は、限られたリソースを最大限活用するために、厳格なメモリ管理やCPUの処理手順の効率化が必要でした。

機械語に近い形式で記述するアセンブラは、技術は必要ですがコンピュータのリソースを最大限に発揮することができます。

現代では、コンピュータのスペックが進化して処理に余裕ができたこともあり、効率面では劣るもののわかりやすさや生産性に勝る高水準言語の利用が一般的となっています。

アセンブラの将来性と学ぶメリット

アセンブラ自体を業務で利用するケースは少ないですが、アセンブラを学習することにはメリットもあります。上述の通り、アセンブラはコンピュータの実処理に近い形で記述を行うため、コンピュータが実際にどのような動作を行っているかを理解できるのです。

基本情報技術者試験ではCPUやメモリの動作などのコンピュータの内部処理についての問題が出題されます。アセンブラを学ぶことで、これらの問題への対策にもつながります。

アセンブラの基本構文

以下では、アセンブラの基本構文について解説します。この記事では、基本情報技術者試験で出題されるCASLⅡの基本構文を紹介します。

CASLⅡでは、一つの命令を以下の形式で記載します。

ラベル オペコード オペランド

ラベルに指定した文字列は、その命令に対する名称となります。

オペコードには、実施する命令の種類を記載します。オペランドには、命令の処理対象となるデータを記載します。

また、セミコロン「 ; 」以下の記述についてはコメント扱いとなり、プログラム処理の対象外となります。

プログラムの開始と終了

CASLⅡのプログラムは、START命令から始まります。そして、END命令でプログラムの終了となります。

START命令およびEND命令にはオペランドを指定する必要はありません。

;ラベル オペコード オぺランド コメント
TESTPG START ;何もしないプログラム
END
 
 

データの定義

CASLⅡでは、DC命令およびDS命令を用いてデータを定義します。

DC命令は、値が変わらない定数を定義する際に用います。また、DS命令はオペランドに設定した広さの領域を確保します。

定義した各データは、ラベル欄に指定した名称により区別します。

;ラベル オペコード オぺランド コメント
TESTPG START
DATA1 DC 150 ; 150という定数を定義
DATA2 DS 1 ; メモリ領域の確保
END

レジスタ

CASLⅡを含めたアセンブラでは、レジスタを用いてデータを保持します。

レジスタとは、CPU上に存在するメモリ領域のことです。レジスタはCPUの処理スピードに合わせて高速で動作します。

レジスタは目的に応じて領域が確保されている専用のものに加え、汎用的に利用できる汎用レジスタも存在します。CASLⅡではGR0~GR7までの8つの汎用レジスタを利用できます。

メモリとレジスタのデータ移動

CASLⅡでは、LD命令によりメモリからレジスタへ値をコピーします。また、ST命令によりレジスタからメモリに値をコピーします。

;ラベル オペコード オぺランド コメント
TESTPG START
DATA1 DC 150 ; 150という定数を定義
LD GR0, DATA1 ; レジスタGR0にDATA1をコピー
DATA2 DS 1 ; メモリ領域の確保
ST GR0, DATA2 ; DATA2にGR0をコピー
END

加算と減算

CASLⅡでは、ADDA命令により算術加算を実施できます。また、SUBAにより算術減算を実施できます。

;ラベル オペコード オぺランド コメント
TESTPG START
DATA1 DC 150 ; 150という定数を定義
LD GR0, DATA1 ; レジスタGR0にDATA1をコピー
ADDA GR0, 100 ; GR0に100を加算
SUBA GR0, 50 ; GR0から50を減算
DATA2 DS 1 ; メモリ領域の確保
ST DGR0, DATA2 ; DATA2にGR0をコピー
END

比較

CASLⅡでは、CPA命令により比較を実施できます。また、JPL命令により条件分岐を実現できます。

;ラベル オペコード オぺランド コメント
TESTPG START
DATA1 DC 150 ; 150という定数を定義
DATA2 DC 100 ; 100という定数を定義
ANS ST 1 ; メモリ領域を確保
LD GR0, DATA1 ; レジスタGR0にDATA1をコピー
CPA GR0, DATA2 ; GR0とDATA2を比較
JPL JMP ; GR0のほうが大きければJMPへ
ST 1, ANS ; ANSに1をコピー
RET ; プログラム終了
JMP ST 0, ANS ; ANSに0をコピー
END

まとめ

この記事では、基本情報技術者試験を受けようとされている方に向けて、アセンブラに関する基本的な内容の解説を行いました。

アセンブラは機械語に近い形で記述されるため、特に理解するのが難しい言語ですが、アセンブラを学習することでコンピュータが内部でどのような処理を行っているのかを知るのに役立ちます。

基本情報技術者試験で問われるコンピュータ技術関連問題の対策にもなるアセンブラを選択する価値はあるでしょう。