Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. t de l'utiliser comme registre de travail
  2. PUSH R12
  3. // On annule entièrement R12 avant de l'utiliser
  4. MOV R12, 0
  5. // On manipule RDX pour contenir l'adresse après la dernière cellule du premier nombre
  6. ADD RDX, RDI
  7.  
  8. _loop:
  9. // Gardien de boucle : on s'arrête quand l'adresse de la cellule courante du premier
  10. // nombre dans RDI atteint l'adresse après la dernière cellule contenue dans RDX
  11. CMP RDI, RDX
  12. JGE _end
  13.  
  14. // On ajoute la première opérande au registre de calcul préalablement initialisé
  15. ADD R12B, byte ptr [RDI]
  16. // On ajoute la seconde opérande pour compléter la somme A+B+carry
  17. ADD R12B, byte ptr [RSI]
  18. // On place le résultat dans la cellule actuelle de la première opérande
  19. MOV byte ptr[RDI], R12B
  20.  
  21. _unsigned:
  22. // On compare le résultat à l'opérande de droite qui n'a pas été écrasée
  23. CMP R12B, byte ptr[RSI]
  24. // Si le résultat est inférieur (non-signé) à une des opérandes, c'est
  25. // qu'on a eu un dépassement
  26. JB _overflow
  27. GNU nano 2.7.4 File: ex4.s
  28.  
  29. MOV R12B, 1
  30.  
  31. _next:
  32. // On avance au byte suivant des deux nombres
  33. INC RDI
  34. INC RSI
  35. // On retourne au gardien de boucle
  36. JMP _loop
  37.  
  38. _end:
  39. // On dépile la valeur originelle de R12
  40. PO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement