機械語命令とアセンブラ
指定アドレス+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演習3
ARYSUM 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