Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- t de l'utiliser comme registre de travail
- PUSH R12
- // On annule entièrement R12 avant de l'utiliser
- MOV R12, 0
- // On manipule RDX pour contenir l'adresse après la dernière cellule du premier nombre
- ADD RDX, RDI
- _loop:
- // Gardien de boucle : on s'arrête quand l'adresse de la cellule courante du premier
- // nombre dans RDI atteint l'adresse après la dernière cellule contenue dans RDX
- CMP RDI, RDX
- JGE _end
- // On ajoute la première opérande au registre de calcul préalablement initialisé
- ADD R12B, byte ptr [RDI]
- // On ajoute la seconde opérande pour compléter la somme A+B+carry
- ADD R12B, byte ptr [RSI]
- // On place le résultat dans la cellule actuelle de la première opérande
- MOV byte ptr[RDI], R12B
- _unsigned:
- // On compare le résultat à l'opérande de droite qui n'a pas été écrasée
- CMP R12B, byte ptr[RSI]
- // Si le résultat est inférieur (non-signé) à une des opérandes, c'est
- // qu'on a eu un dépassement
- JB _overflow
- GNU nano 2.7.4 File: ex4.s
- MOV R12B, 1
- _next:
- // On avance au byte suivant des deux nombres
- INC RDI
- INC RSI
- // On retourne au gardien de boucle
- JMP _loop
- _end:
- // On dépile la valeur originelle de R12
- PO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement