ďťż
 
[NASM} wypisanie EAXa ďťż
 
[NASM} wypisanie EAXa
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[NASM} wypisanie EAXa



piotrek - 11-04-2007 00:03
[NASM} wypisanie EAXa
  Hej,

jak w linuxowym NASMIe najprościej wypisać
szestnastkowo tego co siedzi w EAXie?
Jak ma ktoś jakiś szybki pomysł, to bede
wdzięczny za źródło + komentarz,

pozdrawiam,
piotrek

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





Wiktor S. - 11-04-2007 00:03

  > jak w linuxowym NASMIe najprościej wypisać
> szestnastkowo tego co siedzi w EAXie?
> Jak ma ktoś jakiś szybki pomysł, to bede
> wdzięczny za źródło + komentarz,

konwersja liczby - wersja dla 16-bitów. dla 32 bitów odpowiednio musiałbyś
przerobić...

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. przekierowuję wątek na pl.comp.lang.asm

--
Azarien




Adam Wysocki - 12-04-2007 00:09

  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.chmurka.net/ * 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
-> Zostało zaledwie 1351 dni do końca kadencji Lecha Kaczyńskiego <-




piotrek - 12-04-2007 00:09

 
> 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

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





guest - 12-04-2007 00:09

  > > 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 - 12-04-2007 00:09

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

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




Bernard - 12-04-2007 00:09

  Wiktor S. wrote:
>> jak w linuxowym NASMIe najprościej wypisać
>> szestnastkowo tego co siedzi w EAXie?
>> Jak ma ktoś jakiś szybki pomysł, to bede
>> wdzięczny za źródło + komentarz,
>
> konwersja liczby - wersja dla 16-bitów. dla 32 bitów odpowiednio
> musiałbyś przerobić...
>
> dana w AX, zapis czterech cyfr do [ESI].

Jeśli miał to być przykład jak nie robić konwersji na ASCII HEX, to
naprawdę jest rewelacyjny. Uśmiałem się jak norka.




Wiktor S. - 12-04-2007 00:09

  >> dana w AX, zapis czterech cyfr do [ESI].
>
> Jeśli miał to być przykład jak nie robić konwersji na ASCII HEX, to
> naprawdę jest rewelacyjny. Uśmiałem się jak norka.

....ale dziala! ;-)

z reklamacja do mojego wykladowcy, on to tak wymyslil...

--
Azarien




Wiktor S. - 13-04-2007 00:04

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

wyjątkowo dzień 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 - 13-04-2007 00:04

  Wiktor S. wrote:
>>> dana w AX, zapis czterech cyfr do [ESI].
>>
>> Jeśli miał to być przykład jak nie robić konwersji na ASCII HEX, to
>> naprawdę jest rewelacyjny. Uśmiałem się jak norka.
>
>
> ...ale dziala! ;-)
>
> z reklamacja do mojego wykladowcy, on to tak wymyslil...

Hmmmm... zmień wykładowcę, bo to, co pokazałeś, to jest przykład
ilustrujący jak nie należy programować. Zaczynając od środka - gdyby na
początku procedury wypisywania cyfry umieścić and ax, 0fh, to żonglerka
przesuwaną maską w rejestrze BX i wewnętrzne użycie CL stają się zbędne
- jesteśmy o jeden rejestr i dwie instrukcje do przodu. Samą procedurę
wypisywanie cyfry daje się zapisać z jednym skokiem lub bez żadnego
skoku - 4 instrukcje i ret.




Wiktor S. - 13-04-2007 00:21

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

>>> Jeśli miał to być przykład jak nie robić konwersji na ASCII HEX, to
>>> naprawdę jest rewelacyjny. Uśmiałem się jak norka.

>> ...ale dziala! ;-)

>> z reklamacja do mojego wykladowcy, on to tak wymyslil...

> Hmmmm... zmień wykładowcę, bo to, co pokazałeś, to jest przykład
> ilustrujący jak nie należy programować. Zaczynając od środka - gdyby
> na początku procedury wypisywania cyfry umieścić and ax, 0fh, to
> żonglerka przesuwaną maską w rejestrze BX i wewnętrzne użycie CL
> stają się zbędne - jesteśmy o jeden rejestr i dwie instrukcje do
> przodu.

Aa. Bo pierwotnie było tylko bin_asc - jedna cyfra, później ujęto ją w
pętlę.

> Samą procedurę wypisywanie cyfry daje się zapisać 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 dawać pusha/popa, czy takie litanie? ;-)

--
Azarien




Bogdan (bogdro) - 14-04-2007 00:08

  Wiktor S. napisał(a):
[...]
> przy okazji, lepiej dawać pusha/popa, czy takie litanie? ;-)
>
>

Zależy, co oznacza "lepiej". Jak mniej pisania i mniejszy rozmiar
kodu, to lepiej pusha/popa. A jeśli chodzi o wydajność, to moim
skromnym zdaniem: z tych dwóch to "litanie", bo pusha/popa (chyba) nie
za szybkie są (o efektach ubocznych nie wspominając). Ale podobno
rekordy bije ... MOV:

sub esp, 4*4
mov [esp+12], eax
mov [esp+8], ebx
mov [esp+4], ecx
mov [esp], edx

I z resztą trudno się dziwić. Każde PUSH zależy od ESP, więc kilka
takich z rzędu powoduje pojawianie się zależności między każdymi 2
sąsiednimi instrukcjami. W przykładzie powyżej mamy tylko zależność
instrukcji drugiej od pierwszej.

P.S. Sorki za ewentualny podwójny post, u mnie poprzedniej próby nie
widać. Wszystko przez adminów news.gazeta.pl ;)

--
Pozdrawiam, Bogdan (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Rozmawiaj bezpiecznie: www.JabberPL.org Surfuj anonimowo: tor.eff.org




Matuzalem - 14-04-2007 00:15

  On 11 Kwi, 23:56, "Wiktor S." <ANTIS...@wswiktor.AT.poczta.DOT.fm>
wrote:
> >> dana w AX, zapis czterech cyfr do [ESI].
>
> > Jeśli miał to być przykład jak nie robić konwersji na ASCII HEX, to
> > naprawdę jest rewelacyjny. Uśmiałem się jak norka.
>
> ...ale dziala! ;-)
>
> z reklamacja do mojego wykladowcy, on to tak wymyslil...
>
> --
> Azarien

Witam

Nie tylko zmień wykładowce, ale i wykłady ba uczelnie... to, ten
potworek wrrr straszne ;]

Pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Jak wypisać Co oznacza =?ISO-8859-2?Q?skr=F3t_UPSL=3F?= remote firebird zakup CS2 czy czekanie na CS3 blad sql dlaczego automatyzowanie [automate i batch] w photoshopie SQL Server 2000 - problem z zasobami. M SQL 2005 - kurs online poszukiwany [MSSQL 2000] konwersja typów - czy potrzebna?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • tejsza.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com