CODINGApprendre pas à pas la programmation en assembleur Z80 ★ Programmation avancée, routines utiles ★

Routines en vrac (Neg 16 bits, Cp 16 bits, valeurs absolues, ...)

Mini routines Z80 utiles ou collection de Helpers optimisés


NEG HL

xor a
sub l
ld l,a
sbc a
sub h
ld h,a


Ajouter une valeur 8 bits signée à HL

; HL = HL + C
ld a,c
add a  ; récupère le signe de C
sbc a  ; si signé, alors A=255 sinon A=0
ld b,a ; répercuter le signe de C dans BC
add hl,bc


Valeur absolue de HL

absHL
bit 7,h : ret z ; positif, rien à faire
xor a : sub l : ld l,a
sbc a : sub h : ld h,a
ret


Valeur absolue de BC

absBC
bit 7,b : ret z ; positif, rien à faire
xor a : sub c : ld c,a
sbc a : sub b : ld b,a
ret


Valeur absolue de DE

absDE
bit 7,d : ret z ; positif, rien à faire
xor a : sub e : ld e,a
sbc a : sub d : ld d,a
ret


Valeur absolue de A

absA
or a : ret p ; positif, rien à faire
neg
ret


Comparaison de HL et DE :

CP_HL_DE
or a
sbc hl,de
add hl,de
ret


Effacer une zone mémoire sur une longueur donnée

memset
xor a
.loop
ld (hl),a
cpi
jp pe,.loop
ret


Désactiver le système temporairement :

desactiver_systeme
di
ld hl,(#38) : ld (restaure_systeme+1),hl
ld hl,#C9FB : ld (#38),hl
ei
ret
restaure_systeme
ld hl,#C9FB : ld (#38),hl
ret


Affichage décimal de la valeur de HL

dispHL
ld bc,-10000 : call num1
ld bc,-1000 : call num1
ld bc,-100 : call num1
ld c,-10 : call num1
ld c,-1
num1
ld a,'0'-1
num2
inc a
add hl,bc
jr c,num2
sbc hl,bc
call affiche_caractere_ascii
ret


Comment calculer la racine carré de HL? Voici une routine qui le fait en arrondissant à l'inférieur :

racineHL ; résultat dans le registre E
ld bc,#800
ld e,c
xor a
.shl4loop
add hl,hl
rl c
adc hl,hl
rl c
jr nc,$+4
set 0,l
ld a,e
add a
ld e,a
add a
bit 0,l
jr nz,$+5
sub c
jr nc,$+7
  ld a,c
  sub e
  inc e
  sub e
  ld c,a
djnz .shl4loop
bit 0,l
ret z
inc b
ret


Pensez à jeter un oeil dans la rubrique des [ liens ] , en particulier les sites pour calculatrices Texas Instrument qui regorgent de routines de calcul dont certaines ont été recopiées ici.

★ ANNÉE: 2025
★ AUTEUR: Roudoudou

Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 411 millisecondes et consultée 5 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.