機械語命令とアセンブラ

指定アドレス+GRが実効アドレス(実際に読み書きする番地)となります。
IN INBUF,INLNGOUT命令は命令で指定した番地(OUTBUF)から指定した番地(OUTLEN)の数だけ出力装置に書き出します。
OUT OUTBUF,OUTLEN
| 命令コード | オペランド | 機能処理 | 記述例 |
| LD | GRx ,[adr], [GRy] | op を GRx に設定。 | LD GR0 10 |
| ST | GRx ,[adr], [GRy] | (GRx)を op が示す番地に格納。 | ST GR0 10 |
| LAD | GRx ,[adr], [GRy] | op を GRx に設定。 | LAD GR0 1 |
| ADDA | GRx ,[adr], [GRy] | (GRx)とopを加算して GRx に格納 | ADDA GR0 GR1 |
| ADDL | GRx ,[adr], [GRy] | (GRx)とopを加算(符号なし)して GRx に格納 | ADDL gr0,5,GR1 |
| SUBA | GRx ,[adr], [GRy] | (GRx)からopを減算して GRx に格納 | |
| SUBL | GRx ,[adr], [GRy] | (GRx)からopを減算(符号なし)して GRx に格納 | |
| AND | GRx ,[adr], [GRy] | (GRx)とopの論理積を GRx に格納。 | AND GR0 GR1 |
| OR | GRx ,[adr], [GRy] | (GRx)とopの論理和を GRx に格納。 | OR GR0 GR1 |
| XOR | GRx ,[adr], [GRy] | (GRx)とopの排他的論理和をGRxに格納。 | XOR GR0 GR1 |
| CPA | GRx ,[adr], [GRy] | (GRx)とopの大小関係でFRをセット | CPA GR0 GR1 |
| CPL | GRx ,[adr], [GRy] | (GRx)とopの大小関係(符号梨なし)でFRをセット | |
| JMI | adr[,GRx] | (SF)が1のときにadrの指す番地へ分岐 | JMI 10 |
| JPL | adr[,GRx] | (SF)が0のときにadrの指す番地へ分岐 | JPL ad,GR0 |
| JNZ | adr[,GRx] | (ZF)が0のときにadrの指す番地へ分岐 | |
| JZE | adr[,GRx] | (ZF)が1のときにadrの指す番地へ分岐 | |
| JOV | adr[,GRx] | (OF)が1のときにadrの指す番地へ分岐 | |
| JMP | adr[,GRx] | 無条件にadrの指す番地へ分岐。 | JMP |
| PUSH | adr[,GRx] | adr をスタックに保存 | PUSH 0,GR3 |
| POP | GRx | スタックからとりだしGRxにコピー | POP GR3 |
| CALL | adr[,GRx] | adrを呼び出す | CALL fun |
| RET | 戻る | RET | |
| NOP | なにもしない | ||
| SVC | num | システムサービスを呼び出す | SVC 1 |
SUM2 START
;二つの数の和
;
LD GR1,A
ADDA GR1,B
ST GR1,C
RET
;
A DC 5
B DC 3
C DS 1
END
SUM10 START
;10までの和
;
XOR GR1,GR1 ;GR1=0
LD GR4,N ;GR4は繰り返しの数 N を記憶
LAD GR2,1 ;GR2は定数1
XOR GR3,GR3 ;GR3=0
;
LOOP ADDA GR1,GR2 ;回数を増す
ADDA GR3,GR1 ;和を求める
CPA GR1,GR4 ;比較をして終了判断
JMI LOOP ;負なら繰り返す
;
ST GR3,SUM ;結果をSUMに保存
RET
;
SUM DS 1 ;結果を保存する
N DC 10 ;回数を保存する
;
END
演習3ARYSUM START
;配列の和を求める
XOR GR1,GR1 ;くりかえし回数
XOR GR2,GR2 ;合計
LAD GR3,1 ;定数1
LD GR4,NUM ;繰り返し限度
;
LOOP ADDA GR2,ARY,GR1 ;配列の値を加える
ADDA GR1,GR3 ;繰り返し数を増加
CPA GR1,GR4 ;回数判断
JMI LOOP ;負なら繰り返す
;
ST GR2,SUM ;合計を保存
RET
;
SUM DS 1 ;和
NUM DC 7 ;繰り返し上限
ARY DC 12,42,56,86,27,16,84 ;配列データ
;
END
ARYMAX START
;最大値を求める
XOR GR1,GR1 ;くりかえし回数
LD GR2,ARY;
LAD GR3,1 ;定数1
LD GR4,NUM ;繰り返し限度
;
LOOP LD GR5,ARY,GR1 ;配列の値を取り出す
CPA GR2,GR5 ;仮の最大値と比較
JPL SKIP
LD GR2,GR5 ;最大値を交換する
SKIP ADDA GR1,GR3 ;繰り返し数を増加
CPA GR1,GR4 ;回数判断
JMI LOOP ;負なら繰り返す
;
ST GR2,MAX ;最大値を保存
RET
;
MAX DS 1 ;最大値
NUM DC 7 ;繰り返し上限
ARY DC 12,42,56,86,27,16,84 ;配列データ
;
END
FMULT START
;乗算サブルーティン
LD GR5,A
LD GR6,B
CALL MULT ;GR7=GR5*GR6
ST GR7,C ;結果を保存
LD GR6,GR7 ;GR6=A*B
CALL MULT ;GR7=A*B*C
ST GR7,D ;結果を保存
RET
;
MULT XOR GR7,GR7 ;GR7=0
PUSH 0,GR3 ;GR3を一時保存
OR GR6,GR6 ;GR6の判断
JZE EXIT ;0なら終了
LAD GR3,1 ;定数1
;
MLOOP ADDA GR7,GR5 ;GR7=GR7+GR5
SUBA GR6,GR3 ;GR6=GR6-1
JPL MLOOP ;繰り返し
;
EXIT POP GR3 ;GR3を戻す
RET
;
A DC 16
B DC 16
C DS 1
D DS 1
;
END