.macro DIVXBYY			;делит содержимое пары X на Y
		push R17
		push R18
		push R19
		push R20
		push R21
		push R22
		mov R17, YH
		mov R18, YL

		ldi R21, 0		;ответ
		ldi R22, 0

Iteration:
		ldi R19, 0		;счетчик сдвигов
		ldi R20, 1
		mov R17, YH
		mov R18, YL
		cp XL, R18
		cpc XH, R17
		brlo Done

ShiftLeft:
			lsl R18			;сдвигаем делитель на 1 влево
			rol R17
			brcs ShiftBack
			cp XL, R18
			cpc XH, R17
			brlo ShiftBack
				lsl R20		;увеличиваем счетчик сдвигов
				rol R19

				rol R17
				brcs ShiftedToEnd
				ror R17
				rjmp ShiftLeft
ShiftedToEnd:
		ror R17
		rjmp EndShift
ShiftBack:
		lsr R17
		ror R18
EndShift:
		add R22, R20	;добавить сдвиги к частному
		adc R21, R19

		sub XL, R18		;отнимаем от делимого
		brcc NoCarry
			dec XH
	NoCarry:
		sub XH, R17
		rjmp Iteration

Done:
		mov XL, R22
		mov XH, R21

		pop R22
		pop R21
		pop R20
		pop R19
		pop R18
		pop R17
.endm
