.def drem24d8u = r3 ; Rest (8 bit) .def dv24d8u = r5 ; Divisor (8 bit) .def dcnt24d8u = r16 ; Schleifenzähler .def dd24d8u0 = r18 ; Dividend und Ergebnis Byte 0 (LSB) .def dd24d8u1 = r19 ; Dividend und Ergebnis Byte 1 .def dd24d8u2 = r20 ; Dividend und Ergebnis Byte 2 div24d8u: sub drem24d8u,drem24d8u ; Carry ldi dcnt24d8u,24 ; Schleifenzähler div24d8u_loop: ; lsl dd24d8u0 ; schieben, in LSB kommt 0 rol dd24d8u1 ; rol dd24d8u2 ; rol drem24d8u ; Carry in Rest schieben cp drem24d8u,dv24d8u ; falls Rest brcs div24d8u_skip ; kleiner Divisor -> Sprung inc dd24d8u0 ; größer Divisor -> LSB setzen sub drem24d8u,dv24d8u ; Divisor von Rest subtrah. div24d8u_skip: dec dcnt24d8u ; Schleifenzähler decrem. brne div24d8u_loop ; und evtl. fortsetzen ret