.def a0 = r16 .def a1 = r17 .def a2 = r18 .def a3 = r19 .def b0 = r20 .def b1 = r21 .def b2 = r22 .def b3 = r23 .def t0 = r24 .def t1 = r25 .def t2 = r26 .def t3 = r27 .def t4 = r28 ;************************************************************************ ;* * ;* unsigned rounded division 32 bit * ;* * ;************************************************************************ urdiv32: mov t0, b0 ;T = B mov t1, b1 mov t2, b2 mov t3, b3 lsr t3 ;B / 2 ror t2 ror t1 ror t0 add a0, t0 ;A = A + B / 2 adc a1, t1 adc a2, t2 adc a3, t3 ;************************************************************************ ;* * ;* unsigned division 32 bit * ;* * ;************************************************************************ ; a3..0 = a3..0 / b3..0 ; b3..0 = remainde ;cycle: max 684 udiv32: clr t0 clr t1 clr t2 clr t3 ldi t4, 32 udi1: lsl a0 rol a1 rol a2 rol a3 rol t0 rol t1 rol t2 rol t3 cp t0, b0 cpc t1, b1 cpc t2, b2 cpc t3, b3 brcs udi2 sub t0, b0 sbc t1, b1 sbc t2, b2 sbc t3, b3 inc a0 udi2: dec t4 brne udi1 mov b0, t0 mov b1, t1 mov b2, t2 mov b3, t3 ret