View difference between Paste ID: YiLZ5we0 and nDgEfGwH
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