[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

[NASM} wypisanie EAXa

piotrek

4/10/2007 7:03:00 PM

Hej,

jak w linuxowym NASMIe najpro?ciej wypisaa
szestnastkowo tego co siedzi w EAXie?
Jak ma kto? jaki? szybki pomys3, to bede
wdzieczny za ?ród3o + komentarz,

pozdrawiam,
piotrek

--
Wys3ano z serwisu OnetNiusy: http://niu...
17 Answers

Wiktor S.

4/10/2007 10:54:00 PM

0

> jak w linuxowym NASMIe najpro?ciej wypisaa
> szestnastkowo tego co siedzi w EAXie?
> Jak ma kto? jaki? szybki pomys3, to bede
> wdzieczny za ?ród3o + komentarz,


konwersja liczby - wersja dla 16-bitów. dla 32 bitów odpowiednio musia3by?
przerobia...

dana w AX, zapis czterech cyfr do [ESI].

-----------------------------
wrd_asc:
pusha
mov BX,0F000h
mov DL,12
mov ECX,4
.cccc:
push ECX
push AX
and AX,BX
mov CL,DL
shr AX,CL
call bin_asc
mov [ESI],AL
inc ESI
pop AX
shr BX,4
sub DL,4
pop ECX
loop .cccc
popa
ret

bin_asc:
cmp AL,9
ja .lettr
add AL,30h
jmp .ok
.lettr:
add AL,37h
.ok:
ret

-----------------------------


PS. przekierowuje w?tek na pl.comp.lang.asm

--
Azarien

gophi.at.chmurka.net

4/11/2007 3:03:00 AM

0

In pl.comp.programming Wiktor S. <ANTISPAM@wswiktor.at.poczta.dot.fm> wrote:

> konwersja liczby - wersja dla 16-bitów.

Po co, skoro w bibliotece standardowej jest funkcja printf? :)

--
Adam Wysocki * Warszawa * http://www.ch... * GSM: 514 710 213
FidoNet: 2:480/138, SWL: SP5-250730, QTH: KO02MF, CB: 19 |ródmie?cie
14:50 <szumi-> musialem zapoznac mica z gophim, ale sie nie polubili
-> Zosta3o zaledwie 1351 dni do konca kadencji Lecha Kaczynskiego <-

piotrek

4/11/2007 6:42:00 PM

0


> dana w AX, zapis czterech cyfr do [ESI].
>
> -----------------------------
> wrd_asc:
>        pusha
>        mov BX,0F000h
Dzieki wielkie! Kurcze, a jak to przerobic na 32 bity? Bo z ASM jestem lame
totalny, a potrzebuje cos takiego zrobic.

pozdrawiam,
piotrek

--
Wys3ano z serwisu OnetNiusy: http://niu...

guest

4/11/2007 7:00:00 PM

0

> > dana w AX, zapis czterech cyfr do [ESI].
> >
> > -----------------------------
> > wrd_asc:
> >        pusha
> >        mov BX,0F000h
> Dzieki wielkie! Kurcze, a jak to przerobic na 32 bity? Bo z ASM jestem lame
> totalny, a potrzebuje cos takiego zrobic.

dla tego dostales 16 bit zeby sie troche wysilic
czemu ktos mial by za ciebie "odrabiac zadanie" ?

piotrek

4/11/2007 7:28:00 PM

0

> > > dana w AX, zapis czterech cyfr do [ESI].
> > >
> > > -----------------------------
> > > wrd_asc:
> > >         pusha
> > >         mov BX,0F000h
> > Dzieki wielkie! Kurcze, a jak to przerobic na 32 bity? Bo z ASM jestem lame
> > totalny, a potrzebuje cos takiego zrobic.
>
> dla tego dostales 16 bit zeby sie troche wysilic
> czemu ktos mial by za ciebie "odrabiac zadanie" ?
Tak sie sklada ze to nie jest moje zadanie, i assemblera znam podstawowo
i nie mam tez takiego przedmiotu na studiach poki co, zeby nie bylo,

pozdrawiam,
piotrek

--
Wys3ano z serwisu OnetNiusy: http://niu...

Bernard

4/11/2007 8:03:00 PM

0

Wiktor S. wrote:
>> jak w linuxowym NASMIe najpro?ciej wypisaa
>> szestnastkowo tego co siedzi w EAXie?
>> Jak ma kto? jaki? szybki pomys3, to bede
>> wdzieczny za ?ród3o + komentarz,
>
> konwersja liczby - wersja dla 16-bitów. dla 32 bitów odpowiednio
> musia3by? przerobia...
>
> 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.

Wiktor S.

4/11/2007 9:56:00 PM

0

>> 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...

--
Azarien

Wiktor S.

4/12/2007 12:24:00 PM

0

> Dzieki wielkie! Kurcze, a jak to przerobic na 32 bity? Bo z ASM
> jestem lame totalny, a potrzebuje cos takiego zrobic.


wyj?tkowo dzien dobroci ;-)


wrd_asc32:
pusha
mov EBX,0F0000000h
mov DL,28
mov ECX,8
.cccc:
push ECX
push EAX
and EAX,EBX
mov CL,DL
shr EAX,CL
call bin_asc
mov [ESI],AL
inc ESI
pop EAX
shr EBX,4
sub DL,4
pop ECX
loop .cccc
popa
ret

--
Azarien

Bernard

4/12/2007 3:30:00 PM

0

Wiktor S. wrote:
>>> 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. Sam? procedure
wypisywanie cyfry daje sie zapisaa z jednym skokiem lub bez ?adnego
skoku - 4 instrukcje i ret.

Wiktor S.

4/12/2007 11:16:00 PM

0

>>>> 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