*.caslファイルの整理
[YACASL2.git] / as / FUNC / addl32.casl
diff --git a/as/FUNC/addl32.casl b/as/FUNC/addl32.casl
new file mode 100644 (file)
index 0000000..63a6bba
--- /dev/null
@@ -0,0 +1,22 @@
+;;; 2つの32ビット数値を加算する
+;;; 32ビットの値は、連続する2語の領域に格納
+MAIN    START   BEGIN
+BEGIN   LAD     GR1,1           ; GR1にAの下位語を転送
+        LD      GR1,A,GR1       ; ↓
+        LAD     GR2,1           ; GR2にBの下位語を転送
+        LD      GR2,B,GR2       ; ↓
+        ADDL    GR1,GR2         ; GR1 <- GR1 + GR2
+        JOV     CARR            ; オーバーフロー時は、CARRにジャンプ
+        JUMP    STL
+CARR    LAD     GR2,1           ; Cの上位語に1を格納
+        ST      GR2,C           ; ↓
+STL     LAD     GR2,1           ; Cの下位語にGR1の内容を格納
+        ST      GR1,C,GR2       ; ↓
+        LD      GR1,A           ; GR1にAの上位語を転送
+        ADDL    GR1,B           ; GR1 <- GR1 + B
+        ADDL    GR1,C           ; GR1 <- GR1 + C
+        RET
+A       DC      0,65534
+B       DC      0,65535
+C       DS      2
+        END