AA START ;; GR1 * 2^GR2 + GR3 * 2^GR4 --> GR5 * 2^GR6 ;; GR1*2^(GR2-15) ( 0x7000*2^(3-15); by asir ) ;; GR5=5400, GR6=0005 LAD GR1,#7001 LAD GR2,4 LAD GR3,#7000 LAD GR4,3 CALL FADD LD GR1,GR5 LD GR2,GR6 CALL FNORM RET FADD LD GR6,GR2 CPA GR2,GR4 JMI AAA LD GR6,GR2 ;; GR2 >= GR4桁そろえ LD GR7,GR2 SUBA GR7,GR4 SRL GR3,0,GR7 JUMP BBB AAA LD GR6,GR4 ;; GR2 < GR4桁そろえ LD GR7,GR4 SUBA GR7,GR2 SRL GR1,0,GR7 BBB LD GR5,GR1 ADDL GR5,GR3 PUSH 0,GR5 AND GR5,=#8000 ;;一番上の桁が 1 なら 0 に. JZE DDD POP GR5 SRL GR5,1 ADDA GR6,=1 RET DDD POP GR5 RET ;; normailze GR1=0.1xxxx, GR2 : exponent FNORM CPA GR1,=0 JNZ FNORM0 RET FNORM0 LD GR3,GR1 AND GR3,=#8000 JZE PPP1 SRL GR1,1 ADDA GR2,=1 RET ;; 1xxxx PPP1 LD GR3,GR1 AND GR3,=#4000 JZE PPP2 RET ;; 01xxx PPP2 SLL GR1,1 ;; 00xxx SUBA GR2,=1 JUMP FNORM0 END