SHOW:
|
|
- or go back to the newest paste.
1 | ;=============================================================== | |
2 | BC_Div_DE: | |
3 | ;=============================================================== | |
4 | ;Performs BC/DE | |
5 | - | ;Speed: 1130+6b cycles |
5 | + | ;Speed: 1150+6b cycles when DE<256 (1/256 of the time) |
6 | - | ;Size: 27 bytes |
6 | + | ; 688+6b cycles when DE>=256 (255/256 of the time) |
7 | ; Avg = 716.88671875cc | |
8 | ;Size: 35 bytes | |
9 | ;Inputs: | |
10 | ; BC is the numerator | |
11 | ; DE is the denominator | |
12 | ;Outputs: | |
13 | ; BC is the quotient | |
14 | ; HL is the remainder | |
15 | ; DE is not changed | |
16 | ; A is 0 | |
17 | ; z flag is set | |
18 | ; c flag is reset | |
19 | ;=============================================================== | |
20 | ld hl,0 | |
21 | ld a,b | |
22 | ld b,16 | |
23 | inc d | |
24 | dec d | |
25 | jr z,loop | |
26 | ld l,a | |
27 | ld a,c | |
28 | ld b,8 | |
29 | loop: | |
30 | rl c | |
31 | rla | |
32 | adc hl,hl | |
33 | sbc hl,de | |
34 | jr nc,$+3 | |
35 | add hl,de | |
36 | djnz loop | |
37 | rl c | |
38 | rla | |
39 | cpl | |
40 | ld b,a | |
41 | ld a,c | |
42 | cpl | |
43 | ld c,a | |
44 | ret |