div.inc
changeset 89 1b3cea759eff
parent 88 c923295ee520
child 90 13c2deb919d1
--- a/div.inc	Mon Jun 02 18:27:08 2014 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-;*************************************************************************** 
-;* 
-;* "div8u" - 8/8 Bit Unsigned Division 
-;* 
-;* This subroutine divides the two register variables "dd8u" (dividend) and  
-;* "dv8u" (divisor). The result is placed in "dres8u" and the remainder in 
-;* "drem8u". 
-;*   
-;* Number of words	:14 
-;* Number of cycles	:97 
-;* Low registers used	:1 (drem8u) 
-;* High registers used  :3 (dres8u/dd8u,dv8u,dcnt8u) 
-;* 
-;*************************************************************************** 
- 
-;***** Subroutine Register Variables 
- 
-.def	drem8u	=r15		;remainder 
-.def	dres8u	=r16		;result 
-.def	dd8u	=r16		;dividend 
-.def	dv8u	=r17		;divisor 
-.def	dcnt8u	=r18		;loop counter 
- 
-;***** Code 
- 
-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 
-		rjmp	d8u_1 
- 
-