Revenir au plan du site


Divisions en assembleur Z80


Le Z80 est un processeur 8 bits, il n'est pas capable de réaliser nativement des divisions ou des multiplications. Voici une petite compilation de routines de division (wikiti, Z80 heaven, grauw, cpcwiki)


division 8 x 8 non signée => C
c_divise_par_d ; résultat dans le registre C
ld b,8
xor a
.loop
sla c
rla
cp d
jr c,.skip
inc c
sub d
djnz .loop
ret

division 16 x 8 non signée => C
hl_divise_par_c ; résultat dans HL, et le reste dans A
ld b,16
xor a
.loop
add hl,hl
rla
cp c
jr c,.skip
inc l
sub c
.skip
djnz .loop
ret

division 16 x 16 non signée => A:C
bc_divise_par_de ; résultat dans A:C, et le reste dans HL
ld hl,0
ld a,b
ld b,16
.loop
sll c
rla
adc hl,hl
sbc hl,de
jr nc,$+4
add hl,de
dec c
djnz .loop
ret

Vous pouvez jeter un oeil dans les liens pour trouver encore plus de routines différentes, en particulier sur les sites de calculatrices Texas Instrument.