{ Subroutine to compute the reciprocal its floating point input. Q = 1.0/D Calling Registers F0 = D Input Value F11 = 2.0 Result Registers F7 = Reciprocal Altered Registers F0, F7, F12 Computation Time 8 Cycles Version 0.04 7/6/90 Gordon A. Sterling } #include "asm_glob.h" .SEGMENT/PM Assembly_Library_Code_Space; .PRECISION=MACHINE_PRECISION; .GLOBAL recip; recip: F7=RECIPS F0, F12=F0; {Get 4 bit seed R0=1/D} F12=F7*F12; {D(prime)=D*R0} F0=F11-F12; {F0=R1=2-D(prime)} F12=F0*F12; {F12=D(prime)=D(prime)*R1} F7=F0*F7, F0=F11-F12; {F7=N*R0*R1, F0=R2=2-D(prime)} RTS (DB), F12=F0*F12; {F12=D(prime)=D(prime)*R2} F7=F0*F7, F0=F11-F12; {F7=N*R0*R1*R2, F0=R3=2-D(prime)} F0=F0*F7; {F7=N*R0*R1*R2*R3} .ENDSEG;