--- /dev/null
+FADD START ; Z ← X + Y
+ RPUSH
+ PUSH 0,GR3 ; 結果 Z の格納領域の先頭番地を退避
+ LD GR4,0,GR1
+ AND GR4,=#00FF ; Ex: X の指数
+ LD GR5,0,GR2
+ AND GR5,=#00FF ; Ey: Y の指数
+ LD GR6,1,GR1 ; Mx: X の仮数
+ LD GR7,1,GR2 ; My: Y の仮数
+; 加算前の準備 (指数をそろえる)
+; GR4 ← max(Ex,Ey) , GR6 ← 調整済 Mx , GR7 ← 調整済 My
+ LD GR3,GR4
+ CPL GR4,GR5
+ JZE MADD ; Ex = Ey の場合
+ JMI BIGEY ; Ex < Ey の場合
+ SUBL GR3,GR5
+ SRL GR7,0,GR3 ; My を調整
+ JUMP MADD
+BIGEY LD GR4,GR5
+ SUBL GR5,GR3
+ SRL GR6,0,GR5 ; Mx を調整
+; 符号を考慮した仮数の加算
+; Sz: Z の符号 , Ez: Z の指数 , Mz: Z の仮数
+; GR4 ← (Sz,Ez) , GR5 ← Mz
+MADD LD GR1,0,GR1 ; X の符号の検査
+ JMI XMINUS ; 負の場合
+ LD GR2,0,GR2 ; Y の符号の検査
+
+ LD GR5,GR6 ; X ≧ 0 , Y ≦ 0 の場合
+ SUBL GR5,GR7 ; Mz ← 調整済 Mx − 調整済 My
+ JUMP SCHECK
+XMINUS LD GR2,0,GR2
+ JMI YMINUS
+ LD GR5,GR7
+ SUBL GR5,GR6
+
+YMINUS OR GR4,=#8000 ; Z に負符号を設定
+ADDMXY LD GR5,GR6
+ ADDL GR5,GR7 ; Mz ← 調整済 Mx + 調整済 My
+ JOV ADJST ; けた上がりがある場合の正規化
+ JUMP NORM
+SCHECK JOV NEGMZ ; Mz の符号を検査
+ JUMP NORM
+NEGMZ OR GR4,=#8000 ; Sz に負符号を設定
+ XOR GR5,=#FFFF ; Mz ← −Mz
+ ADDL GR5,=1
+;加算結果の正規化
+NORM LD GR5,GR5 ; ゼロチェック
+ JNZ LOOP
+ LD GR4,=0
+ JUMP FIN
+LOOP LD GR5,GR5 ; 正規化完了?
+ JMI FIN
+
+ SUBL GR4,=1
+ JUMP LOOP
+ADJST SRL GR5,1
+ OR GR5,=#8000 ; Mz の最上位ビットを 1 に設定
+
+FIN POP GR3
+ ST GR4,0,GR3 ; 結果 Z の格納
+ ST GR5,1,GR3
+ RPOP
+ RET
+ END