Wiktor S.
4/12/2007 11:16:00 PM
>>>> dana w AX, zapis czterech cyfr do [ESI].
>>> Je?li mia3 to bya przyk3ad jak nie robia konwersji na ASCII HEX, to
>>> naprawde jest rewelacyjny. U?mia3em sie jak norka.
>> ...ale dziala! ;-)
>> z reklamacja do mojego wykladowcy, on to tak wymyslil...
> Hmmmm... zmien wyk3adowce, bo to, co pokaza3e?, to jest przyk3ad
> ilustruj?cy jak nie nale?y programowaa. Zaczynaj?c od ?rodka - gdyby
> na pocz?tku procedury wypisywania cyfry umie?cia and ax, 0fh, to
> ?onglerka przesuwan? mask? w rejestrze BX i wewnetrzne u?ycie CL
> staj? sie zbedne - jeste?my o jeden rejestr i dwie instrukcje do
> przodu.
Aa. Bo pierwotnie by3o tylko bin_asc - jedna cyfra, pó?niej ujeto j? w
petle.
> Sam? procedure wypisywanie cyfry daje sie zapisaa z jednym
> skokiem lub bez ?adnego skoku - 4 instrukcje i ret.
write_hex_32:
push edx
push eax
push ecx
push esi
mov edx,eax
mov ecx,8
.cccc:
rol edx,4
mov al,dl
and al,0Fh
cmp al,9
jna .dalej
add al,7
.dalej:
add al,30h
mov [esi],al
inc esi
loop .cccc
pop esi
pop ecx
pop eax
pop edx
ret
przy okazji, lepiej dawaa pusha/popa, czy takie litanie? ;-)
--
Azarien