次のように大別できます。
命令は、大きく設定命令、演算命令、分岐命令、サブルーチン関連命令など
・・・約・28個の命令が存在します。
しかし、最初に覚えるべきは命令の操作対象の表現方法とその違いです。
一般的な命令の記述は、次のような書式です。
ラベル 命令 空白 オペランド
ラベルは、命令がある位置(アドレス)を意味し、他の行のオペランドなどに、そのラベルが位置するアドレスを表現するものとして使われますが、
無用なら省略できます。
オペランドとは、命令の処理対象のことですが、これが大きく次の3つのタイプに分かれます。
以下で前のプログラムサンプルで使った命令を例に説明します。
オペランドで直接に値を表現する方式。→(即値アドレス方式と呼ばれます)
例 LAD GR2, 2 ; GR2に、2を設定
例 LAD GR2, X ; GR2に、Xラベル(ラベルが位置するメモリ上のアドレス)を設定
メモリのアドレスを指定し、その記憶域をオペランドにする方式。
→(直接アドレス方式と呼ばれます)
例 LD GR1, X ; GR1にX番地メモリ内容を記憶
例 ST GR1, Y ; GR1の内容を、メモリY番地に記憶
レジスタをオペランドにする方式
例 ADDA GR1, GR2 ; GR1をGR2の内容だけ増やす(GR1 += GR2 に相当)
オペランドを持たない命令
例 RET ; 呼出し側へ戻る命令で、実行命令列挙の終わりに書く
擬似命令は、コードの生成を指示するものと、アセンブル(翻訳)を制御する命令に分かれます。
擬似命令の代表的な例として、 ソースコードを記述する時に、
プログラムのスタートを指示する START や、 終了を指示する END 命令、
そして、プログラムをロードする時に主記憶領域に確保を行う DS やDC命令などがあります。
DS は、Define Strage で、指定語長の領域を主記憶領域に確保せよ!と言う擬似命令で、
DC は、Define Constant で、指定の値(定数といいます)が記憶される領域を主記憶領域に確保せよ!と言う指示です。
これは、コンマで並べることができます。
定数には、10進数、 #から始める4桁の16進数、 シングルクォートで囲む文字定数があります。
次のプログラムに、次の指示の命令を追加してみよう。
指示: L1番地の記憶内容(13)に2足した値を、L2番地先頭の記憶域へ設定する。
(GR0を2に変更し、GR1をL1位置の記憶内容に変更し、
GR1をGR1+GR0に変更し、L2位置の記憶内容をGR1に変更する。)
←わからない場合は、クリック