;２０１７年平成２９年度春の問題プログラム１
;６４ビット符号なし整数の加算：条件：桁あふれは発生しない。
;-------------
; 以下の MAIN は、題意に沿うように
; 自作したADD64呼び出しコード
; N1 と N2 の値を変更して試行実行できる。
MAIN START 
    LAD GR1,N1
    LAD GR2,N2
    CALL ADD64
    RET
;N1 DC #3F1D
;   DC #B759
;   DC #2E0C
;   DC #A684
;N2 DC #2E0C
;   DC #A684
;   DC #3F1D
;   DC #B759
N1  DC #0A00
    DC #0000
    DC #0000
    DC #00F0
N2  DC #0000
    DC #0000
    DC #0000
    DC #000A
    END
;---------------------
;以下の ADD64 は、問題にあるコードそのままです。
ADD64 START
    RPUSH
    LD GR0,=0
    LAD GR3,3,GR1
    LAD GR4,3,GR2
LOOP LD GR5,=0
    ADDL GR0,0,GR3
    JOV OV1
    JUMP NOV1
OV1 LD GR5,=1 ; 問a 答オ　桁上がり確保
NOV1 ADDL GR0,0,GR4
    JOV OV2
    JUMP NOV2
OV2 LD GR5,=1  ; 問a 答オ　桁上がり確保
NOV2 ST GR0,0,GR3
    LD GR0,GR5 ; 桁上がりを上位桁に加算用
    CPL GR3,GR1 ;問ｂ答ウ GR3 が最上位アドレスと同じか？
    JZE EXIT
    SUBL GR3,=1
    SUBL GR4,=1 ; 問Ｃ　答オ
    JUMP LOOP
EXIT RPOP
    RET
    END
;----------------------   -
