Amstrad Plus Forum Index

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Division z80 16 Bits
Goto page: <  1, 2
 
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Calcul
Previous topic :: Next topic  
Author Message
Tronic


Offline

Joined: 20 May 2015
Posts: 33
Localisation: 77
Masculin
Point(s): 22
Moyenne de points: 0.67

PostPosted: Mon 22 Jul - 16:09 (2019)    Post subject: Division z80 16 Bits Reply with quote

2 autres versions :


 
Code:
; div12 - 5 nops
; HL = value to be divided (min 0 - max 767)
; A = down rounded result
; 768 bytes LUT generated by code (6470nops)

    org &1000
    nolist
    run start
start
mult12    equ &0

genmul12tab
; generation d'une table div12 (768 octets) logee de &0 a &2ff
; la table est a l'arrondi inferieur
; interruptions coupees...
    di
    ld hl,&2ff
    ld a,63
pool    ld b,12
loop    ld (hl),a
    dec hl
    djnz loop
    dec a
    jp p,pool

; ---- nop counter [on]
; valeur a diviser par 12 dans hl
    ld hl,767
; hl pointe directement au bon endroit dans la table LUT de div12
; on s'affranchit de ld bc,offset + add hl,bc
    ld a,(hl)
; ---- nop counter [off]
; 5 nops
    ret





 
Code:
; div12 - 13 nops
; HL = value to be divided (min 0 - max 767)
; A = up rounded result
; 192 bytes LUT generated by code (1966 nops)

    org &1000
    nolist
    run start
start
multab3    equ &0

genmul3tab
; generation d'une table div3 (192 octets) logee de &0 a &bf
; la table est a l'arrondi superieur
; interruptions coupees...
    di
    ld de,multab3
    xor a
    ld (de),a
    inc e
    ld (de),a
    inc e
    inc a
pool    ld b,3
loop    ld (de),a
    inc de
    djnz loop
    inc a
    cp 64
    jr nz,pool
    ld (de),a

; ---- nop counter [on]
; valeur a diviser par 12 dans hl
    ld hl,58
; hl div2
    srl h
    rr l
; hl div2 encore (div4 donc)
    srl h
    rr l
; hl pointe directement au bon endroit dans la table LUT de div3
; on s'affranchit de ld bc,offset + add hl,bc
    ld a,(hl)
; ---- nop counter [off]
; 13 nops
    ret


A+


Back to top
Publicité






PostPosted: Mon 22 Jul - 16:09 (2019)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Calcul All times are GMT + 2 Hours
Goto page: <  1, 2
Page 2 of 2

 
Jump to:  

Index | Administration Panel | Create a forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group