1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| segment .text
global _start
_start:
mov eax, 732 ; eax vaut 732 = aussi le numérateur
mov edi, total ; Avant la boucle stocker dans edi ladresse de ta variable qui stockera la chaine ASCII.
operation :
mov ebx, 10 ; ebx est le dénominateur.
div ebx ; on divise eax par 10
add edx, 0x30 ; on ajoute a edx (qui contient le reste) 0x30 pour la convertion ASCII
xchg eax, edx ; échanger eax et edx
stosb ; stocker le contenu de al dans la variable avec stosb
mov eax, edx ; mettre le contenu de edx dans eax
xor edx, edx ; mettre edx à 0
cmp eax, 10 ; on compare eax a 10, eax > 10 ?
jge operation ; saut conditionnel jump if greater equal, saut a l'étiquette operation si eax > 10
add eax, 0x30 ; on ajoute a ecx 30h pour la convertion ASCII
stosb
mov eax, 4
mov ebx, 1
mov ecx, total
mov edx, 1
int 0x80
xor eax, eax
mov edi, total
mov ebx, 10
div ebx
add ebx, 0x30
xchg eax, ebx
stosb
;Fin du programme
mov eax, 1
mov ebx, 0
int 0x80
segment .bss
centaines resb 100
dizaines resb 10
unite resb 1
total resb 732 |
Partager