Gestion des chaines de caractères en assembleur Z80Conversion d'une chaine ASCII en entier 32 bits ; HL = chaine de caractères ; résultat dans DE:HL atoi ; nom de cette fonction en langage C exx xor a ; on initialise le résultat à zéro ld h,a : ld l,a : ld d,a : ld e,a exxld a,(hl) : inc hl sub 48 : jr c,.sortie cp 10 : jr nc,.sortie exx : ld l,a : exx ; on initialise la première unité ; itérations suivantes .loop ld a,(hl) : inc hl sub 48 : jr c,.sortie cp 10 : jr nc,.sortie exx ; multiplication par 10 du nombre 32 bits DE:HL add hl,hl : rl e : rl d ; multiplication par deux push de,hl ; on sauvegarde notre nombre x 2 add hl,hl : rl e : rl d ; multiplication par quatre add hl,hl : rl e : rl d ; multiplication par huit ; additionner la valeur x 2 à la valeur x 8 pour faire x 10 pop bc : add hl,bc ex hl,de : pop bc : adc hl,bc : ex hl,de ld b,0 : ld c,a : add hl,bc ; on ajoute la nouvelle unité au nombre exx jr .loop .sortie exx ; on active le jeu secondaire où est stocké notre résultat retRecopie d'une chaine de caractères (terminateur à zéro) ; HL=chaine source ; DE=destination strcpy xor a .loop cp (hl) ldi jr nz,.loop retConcaténer une chaine de caractères sur une autre ; HL=destination ; DE=chaine à concaténer strcat xor a ld b,a ld c,a cpir dec hl ex hl,de jp strcpyCalculer la longueur d'une chaine de caractères ; HL=chaine source ; résultat dans HL strlen xor a ld d,h : ld e,l ; copier le pointeur de la chaine cpir scf ; forcer la retenue pour créer un -1 supplémentaire à la soustraction sbc hl,de ; soustraire le pointeur de fin moins un donne la longueur retComparer deux chaines de caractères ; HL=première chaine ; DE=deuxième chaine ; résultat dans le flag Z, Z=chaines identiques NZ=différentes ; en cas de chaines différentes, C=1 si la chaine en HL est plus forte, 0 sinon strcmp ld a,(de) ; lire le caractère de la première chaine sub (hl) ; on réalise une soustraction avec celui de la deuxième ret nz ; si les caractères sont différents, on quitte add (hl) ; est-ce que les deux chaines sont terminées? ret z inc de inc hl jr strcmpRoudoudou CPCrulez[Content Management System] v8.732-desktop/c Page créée en 025 millisecondes et consultée 49 foisL'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. |
|