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
| ;transforme un entier stocke dans un double en une chaine de caracteres
;==============
section .data
;===============
section .bss
;===============
global binstr
;==============
section .code
;==============
binstr:
push ebp
mov ebp,esp
sub esp,50
;[ebp+8] adresse
;ebp+12] type 0=non signe 1=signe
;[ebp+16] valeur du nombre
;[ebp-5] signe
;[ebp-10] valeur en base 10
;[ebp-6] position
mov byte [ebp-6],0
mov eax,[ebp+12]
cmp eax,0
je positif
cmp eax,1
je negatif
positif:
mov byte [ebp-5],'+'
negatif:
mov byte [ebp-5],'-'
bontype:
cmp byte [ebp-5],'+'
je nonNegatif
neg dword [ebp+16]
nonNegatif:
;ebp+16 recoit la valeur du nombre
;mov eax,[ebp+16]
mov ecx,10
mov esi,[ebp+8]
.boucle:
cmp byte [esi+1],0
je .fin
inc esi
jmp .boucle
.fin:
mov eax,[ebp+16]
chiffre:
;division successive par 10 pr avoir le dernier chiffre
xor edx,edx
div ecx
;mov [edi],eax
conversion:
add dl, '0'
mov [esi],dl
dec esi
cmp byte [esi],0
jle fin
cmp eax,0
jg chiffre
fin:
add esp,50
pop ebp
ret 12 |
Partager