.def	drem8u	=r15		;remainder
.def	dres8u	=r16		;result
.def	dd8u	=r16		;dividend
.def	dv8u	=r17		;divisor
.def	dcnt8u	=r18		;loop counter

		ldi dd8u,0b11100101		; данные
		ldi dv8u,0b00000000		

div8u:
		sub	drem8u,drem8u	; clear remainder and carry
		ldi	dcnt8u,9		; init loop counter

d8u_1:	
		rol	dd8u			; shift left dividend
		dec	dcnt8u			; decrement counter
		brne	d8u_2			; if done
		ret						; return

d8u_2:	
		rol	drem8u			; shift dividend into remainder
		sub	drem8u,dv8u		; remainder = remainder - divisor
		brcc	d8u_3			; if result negative
		add	drem8u,dv8u		; restore remainder
		clc				; clear carry to be shifted into result
		rjmp	d8u_1			; else

d8u_3:	
		sec				; set carry to be shifted into result
		
		mov	temp3,drem8u
		andi 	temp3,0b00000001
		out 	SPDR,temp3 		; отправляем бит по SPI
		sbi	PORTB, 5		; дергаем SCL		
		nop	
		cbi	PORTB, 5		; дергаем SCL
		
		rjmp	d8u_1
