- 算術演算(引き算)
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