- 算術演算(引き算)
PROG1 START
; プログラム
LD GR0, X
LD GR1, Y
SUBA GR0, GR1
ST GR0, Z
RET
; データ
X DC 15
Y DC 6
Z DS 1
END
- 条件分岐(if)
PROG2 START MAIN
; データ
DATA1 DC 5
DATA2 DC 5
ANS DS 1
; プログラム
MAIN LD GR0, DATA1
CPA GR0, DATA2
JZE SKIP1
LAD GR0, 0
JUMP SKIP2
SKIP1 LAD GR0, 1
SKIP2 ST GR0, ANS
RET
END
- アドレス修飾(配列)
PROG3 START
; プログラム
LAD GR0, 10
LAD GR1, 0
LD GR2, N
LAD GR3, 1
LOOP ST GR0, A, GR1
ADDA GR1, GR3
CPA GR1, GR2
JMI LOOP
RET
; データ
A DS 5
N DC 5
END
- 繰り返し(ループ)
PROG4 START MAIN
; プログラム
MAIN XOR GR0, GR0
LD GR1, N
LDA GR2, 1
LOOP ADDA GR0, GR1
SUBA GR1, GR2
JNZ LOOP
ST GR0, TOTAL
RET
; データ
N DC 10
SUM DS 1
END
- サブルーチン(レジスタ渡し)
PROG5 START MAIN
DATA1 DC 5
DATA2 DC 10
ANS DS 1
; メインルーチン
MAIN LD GR0, DATA1
LD GR1, DATA2
CALL MAX
ST GR0, ANS
RET
; サブルーチン
MAX CPA GR0, GR1
JPL MAXR
LD GR0, GR1
MAXR RET
END
- サブルーチン(スタック渡し)
PROG6 START MAIN
DATA1 DC 5
DATA2 DC 10
ANS DS 1
; メインルーチン
MAIN LD GR0, DATA1
PUSH GR0
LD GR0, DATA2
PUSH GR0
CALL MAX
ST GR0, ANS
RET
; サブルーチン
; 戻り先番地をGR7に退避
MAX POP GR7
POP GR0
POP GR1
CPA GR0, GR1
JPL MAXR
LD GR0, GR1
; 戻り先番地をスタックに戻す
MAXR PUSH 0, GR7
RET
END