summaryrefslogtreecommitdiffstats
path: root/Bachelor/Mikroprozessorsysteme2/ARM202U/EXAMPLES/EXPLASM/UDIV10.S
blob: 787bb0bea3b30506b261120042ebf0f95f4cca6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
; generated by divc 1.01 (Advanced RISC Machines) [01 Jul 92]

	AREA |div10$code|, CODE, READONLY

	EXPORT udiv10

udiv10
; takes argument in a1
; returns quotient in a1, remainder in a2
; cycles could be saved if only divide or remainder is required
	SUB     a2, a1, #10
	SUB     a1, a1, a1, lsr #2
	ADD     a1, a1, a1, lsr #4
	ADD     a1, a1, a1, lsr #8
	ADD     a1, a1, a1, lsr #16
	MOV     a1, a1, lsr #3
	ADD     a3, a1, a1, asl #2
	SUBS    a2, a2, a3, asl #1
	ADDPL   a1, a1, #1
	ADDMI   a2, a2, #10
	MOV     pc, lr

	END