{ Subroutine to compute the quotient of its floating point inputs. Q = N/D Calling Registers F0 = N Input Value F12 = D Input Value F11 = 2.0 Result Registers F0 = Quotient of input Altered Registers F0, F7, F12 Computation Time 8 Cycles Version 0.03 7/7/90 Gordon A. Sterling } #include "asm_glob.h" .SEGMENT/PM Assembly_Library_Code_Space; .PRECISION=MACHINE_PRECISION; .GLOBAL divide; divide: F0=RECIPS F12, F7=F0; {Get 4 bit seed R0=1/D} F12=F0*F12; {D(prime) = D*R0} F7=F0*F7, F0=F11-F12; {F0=R1=2-D(prime), F7=N*R0} 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; {F0=N*R0*R1*R2*R3} .ENDSEG;