u biti isto je sve samo sto umjesto djeljenja je mnozenje sa magic konstantom
vise procitati ovdje :
[url]http://www.agner.org/assem/pentopt.pdf[/url]
pod 18.7 je to djeljenje, naravno i sve ostalo procitati
a gle ovo :P (nije moj kod)
Code:
DwToStr proc uses edi dwValue:dword,pBuffer:dword
; Made by tE!
mov eax,dwValue
mov edi,pBuffer
push 0h ;get some additional space on stack (10 bytes min.)
push 0h ;'' upper dword is 0
push eax ;'' lower dword -> 32 bit integer to convert
fild qword ptr[esp] ;load 64 bit integer value on TOS
fbstp real10 ptr[esp] ; store value as 80bit BCD value
pop ecx
pop eax
mov edx,ecx
mov ebx,eax
shr ecx,4
shr eax,4
and ebx,0000000Fh ;mask nibbles
and edx,0F0F0F0Fh ;...
and ecx,0F0F0F0Fh
add edx,30303030h ;build ascii numbers
add ecx,30303030h ;...
add eax,30h
add ebx,30h
mov [edi+0],al;store in buffer
mov [edi+1],bl ;...
mov [edi+10],ah
mov [edi+8],cl
mov [edi+9],dl
mov [edi+6],ch
mov [edi+7],dh
bswap ecx ;endian conversion (486 processor needed)
bswap edx ;dto.
mov [edi+2],cl
mov [edi+3],dl
mov [edi+4],ch
mov [edi+5],dh
pop eax ;correct stack
ret
DwToStr endp
i da:
cmp eax,0
je
je brze od
mov ecx, eax
jecxz
:P