+;;; ADDA r,adr
MAIN START
-BEGIN LAD GR1,A
+BEGIN LD GR1,A
ADDA GR1,B
RET
A DC 3
+;;; ADDA r,adr 正数でオーバーフロー
MAIN START
LD GR1,A
ADDA GR1,B
+;;; ADDA r,adr 負数でオーバーフロー
MAIN START
LD GR1,A
ADDA GR1,B
+;;; ADDA r,adr 演算結果が負数(r > adr)
MAIN START
LD GR1,A
ADDA GR1,B
+;;; ADDA r,adr 演算結果が負数(r < adr)
MAIN START
LD GR1,A
ADDA GR1,B
--- /dev/null
+;;; ADDA r,adr 演算結果が零
+MAIN START
+ LD GR1,A
+ ADDA GR1,B
+ RET
+A DC -10
+ DC 10
+ END
--- /dev/null
+;;; ADDA r,adr,x
+MAIN START
+BEGIN LD GR1,A
+ LAD GR2,1
+ ADDA GR1,A,GR2
+ RET
+A DC 3
+ DC 1
+ END
+;;; ADDA r,adr,x 負数でオーバーフロー
MAIN START
LD GR1,A
- LD GR2,B
- ADDA GR1,GR2
+ LAD GR2,1
+ ADDA GR1,A,GR2
RET
-A DC 32767
-B DC 10
+A DC #8001 ; -32767
+ DC #FFF6 ; -10
END
+;;; ADDA r,adr,x 負数でオーバーフロー
MAIN START
LD GR1,A
- LD GR2,B
- ADDA GR1,GR2
+ LAD GR2,1
+ ADDA GR1,A,GR2
RET
-A DC -32767
-B DC -10
+A DC #8001 ; -32767
+ DC #FFF6 ; -10
END
+;;; ADDA r,adr,x 演算結果が負数(r > adr)
MAIN START
LD GR1,A
- LD GR2,B
- ADDA GR1,GR2
+ LAD GR2,1
+ ADDA GR1,A,GR2
RET
A DC 10
-B DC #FFEC ; -20
+ DC #FFEC ; -20
END
+;;; ADDA r,adr,x 演算結果が負数(r < adr)
MAIN START
LD GR1,A
- LD GR2,B
- ADDA GR1,GR2
+ LAD GR2,1
+ ADDA GR1,A,GR2
RET
A DC -10
-B DC 20
+ DC 20
END
--- /dev/null
+;;; ADDA r1,adr,x 演算結果が零
+MAIN START
+ LD GR1,A
+ LAD GR2,1
+ ADDA GR1,A,GR2
+ RET
+A DC -10
+ DC 10
+ END
+;;; ADDA r1,r2
MAIN START
BEGIN LD GR1,A
LD GR2,B
--- /dev/null
+;;; ADDA r1,r2 正数でオーバーフロー
+MAIN START
+ LD GR1,A
+ LD GR2,B
+ ADDA GR1,GR2
+ RET
+A DC 32767
+B DC 10
+ END
--- /dev/null
+;;; ADDA r1,r2 負数でオーバーフロー
+MAIN START
+ LD GR1,A
+ LD GR2,B
+ ADDA GR1,GR2
+ RET
+A DC -32767
+B DC -10
+ END
--- /dev/null
+;;; ADDA r1,r2 演算結果が負数(r1 > r2)
+MAIN START
+ LD GR1,A
+ LD GR2,B
+ ADDA GR1,GR2
+ RET
+A DC 10
+B DC #FFEC ; -20
+ END
--- /dev/null
+;;; ADDA r1,r2 演算結果が負数(r1 < r2)
+MAIN START
+ LD GR1,A
+ LD GR2,B
+ ADDA GR1,GR2
+ RET
+A DC -10
+B DC 20
+ END
--- /dev/null
+;;; ADDA r1,r2 演算結果が零
+MAIN START
+ LD GR1,A
+ LD GR2,B
+ ADDA GR1,GR2
+ RET
+A DC -10
+B DC 10
+ END
+;;; ADDL r,addr[,x]
MAIN START
BEGIN LAD GR1,A
ADDL GR1,B
+;;; ADDL r,addr[,x] 正数でオーバーフロー発生
MAIN START
LD GR1,A
ADDL GR1,B
+;;; ADDL r,addr[,x] 負数でオーバーフロー発生
MAIN START
LD GR1,A
ADDL GR1,B
+;;; ADDL r,addr[,x] 演算結果の符号が負(r > adr)
MAIN START
LD GR1,A
ADDL GR1,B
RET
A DC 10
-B DC #FFEC ; 65516
+B DC #FFEC ; -20
END
--- /dev/null
+;;; ADDL r,addr[,x] 演算結果の符号が負(r < adr)
+MAIN START
+ LD GR1,A
+ ADDL GR1,B
+ RET
+A DC #FFEC ; -20
+B DC 10
+ END
--- /dev/null
+;;; ADDL r,addr[,x] 演算結果が零
+MAIN START
+ LD GR1,A
+ ADDL GR1,B
+ RET
+A DC 10
+B DC #FFF6 ; -10
+ END
+;;; ADDL r1,r2
MAIN START
BEGIN LD GR1,A
LD GR2,B
+;;; ADDL r1,r2 正数でオーバーフロー発生
MAIN START
LD GR1,A
LD GR2,B
+;;; ADDL r1,r2 負数でオーバーフロー発生
MAIN START
LD GR1,A
LD GR2,B
+;;; ADDL r1,r2 演算結果の符号が負(r1 > r2)
MAIN START
LD GR1,A
LD GR2,B
ADDL GR1,GR2
RET
A DC 10
-B DC #FFEC ; 65516
+B DC #FFEC ; -20
END
--- /dev/null
+;;; ADDL r1,r2 演算結果の符号が負(r1 < r2)
+MAIN START
+ LD GR1,A
+ LD GR2,B
+ ADDL GR1,GR2
+ RET
+A DC #FFEC ; -20
+B DC 10
+ END
--- /dev/null
+;;; ADDL r1,r2 演算結果が零
+MAIN START
+ LD GR1,A
+ LD GR2,B
+ ADDL GR1,GR2
+ RET
+A DC 10
+B DC #FFF6 ; -10
+ END
+;;; AND r,adr[,x]
MAIN START
LD GR1,A
AND GR1,B
+;;; AND r,adr[,x] 演算結果の符号が負
MAIN START
LD GR1,A
AND GR1,B
+;;; AND r,adr[,x] 演算結果が零
MAIN START
LD GR1,A
AND GR1,B
+;;; AND r1,r2
MAIN START
LD GR1,A
LD GR2,B
+;;; AND r1,r2 演算結果の符号が負
MAIN START
LD GR1,A
LD GR2,B
+;;; AND r1,r2 演算結果が零
MAIN START
LD GR1,A
LD GR2,B
-MAIN START
+;;; CALL ほかのプログラムの入口名を指定
+ MAIN START
LAD GR1,29
CALL COPY
RET
+;;; CALL 同じプログラムの中にあるラベルを指定
MAIN START BEGIN
BEGIN LAD GR1,29
CALL COPY
+++ /dev/null
-MAIN START BEGIN
-BEGIN LD GR1,=29
- CALL INCR
- ST GR1,A
- RET
-A DS 1
- END
-INCR START
- ADDA GR1,=1
- RET
-FIN END
--- /dev/null
+MAIN START BEGIN
+BEGIN LD GR1,A
+ CPA GR1,B
+ RET
+A DC #5000
+B DC #7000
+ END
--- /dev/null
+MAIN START BEGIN
+BEGIN LD GR1,A
+ CPA GR1,B
+ RET
+A DC #5000
+B DC #3000
+ END
--- /dev/null
+MAIN START BEGIN
+BEGIN LD GR1,A
+ CPA GR1,B
+ RET
+A DC #5000
+B DC #5000
+ END
--- /dev/null
+MAIN START BEGIN
+BEGIN LD GR1,A
+ CPA GR1,B
+ RET
+A DC #5000
+B DC #8000
+ END
MAIN START BEGIN
BEGIN LAD GR1,#5000
- LAD GR2,#F000
+ LAD GR2,#7000
CPA GR2,GR1
RET
END
--- /dev/null
+MAIN START BEGIN
+BEGIN LAD GR1,#5000
+ LAD GR2,#3000
+ CPA GR2,GR1
+ RET
+ END
--- /dev/null
+MAIN START BEGIN
+BEGIN LAD GR1,#5000
+ LAD GR2,#5000
+ CPA GR1,GR2
+ RET
+ END
--- /dev/null
+MAIN START BEGIN
+BEGIN LD GR1,A
+ LD GR2,B
+ CPA GR1,GR2
+ RET
+A DC #5000
+B DC #8000
+ END
--- /dev/null
+MAIN START
+ LAD GR1,=';' ; 「;」の処理が正常にできるか
+FIN RET
+ END
--- /dev/null
+;;; ADDA r,adr,x 演算結果が負数(r < adr)
+MAIN START
+ LD GR1,A
+ LAD GR2,1
+ ADDA GR1,A,1
+ RET
+A DC -10
+ DC 20
+ END