🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
14 messages
14 total messages Started by Borneq Wed, 11 Aug 2010 12:19
Pierwsze kroki z assemblerem
#2374
Author: Borneq
Date: Wed, 11 Aug 2010 12:19
8 lines
1213 bytes
Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są różnice 
między nimi?
Szukam przykładów, jak zacząć np. utworzyć konsolę i użyć funkcji z WinApi 
aby wypisać coś w rodzaju printf("Hello world"). Czy główna funcja musi się 
nazywac main?
Poza tym - jak napisać minimalną okienkową aplikację tworząca okno i 
obłsugującą komunikat Paint z możliwością rysowania TextOut, i innynch 
rzeczy. 
Re: Pierwsze kroki z assemblerem
#2375
Author: Borneq
Date: Wed, 11 Aug 2010 13:39
13 lines
1560 bytes
Użytkownik "Borneq" <borneq@antyspam.hidden.pl> napisał w wiadomości 
news:i3u4hc$qa1$1@news.onet.pl...
> Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są
> różnice  między nimi?
> Szukam przykładów, jak zacząć np. utworzyć konsolę i użyć funkcji z

file:///C:/prog/asm/nasm/sample.shtml
są przykłady pod Linuksa,
przykłady ALink sa pod Tasm, wolałbym nasm, a poza tym zawierają includelib 
"win32.lib", chciałbym nie używać żadnych zewnętrznych bibliotek a jedynie 
wołać funkcje API Windows bezpośrednio z DLL przez LoadLibrary (ale samo 
LoadLibrary jest w kernel32.dll który jest zawsze załadowany ale jak w 
assemblerze wywołać którąś jego funkcję) 
Re: Pierwsze kroki z assemblerem
#2376
Author: Borneq
Date: Wed, 11 Aug 2010 14:42
13 lines
1680 bytes
Użytkownik "Borneq" <borneq@antyspam.hidden.pl> napisał w wiadomości 
news:i3u970$7hh$1@news.onet.pl...
> bibliotek a jedynie  wołać funkcje API Windows bezpośrednio z DLL przez
> LoadLibrary (ale samo  LoadLibrary jest w kernel32.dll który jest zawsze
> załadowany ale jak w  assemblerze wywołać którąś jego funkcję)

Znalazłem http://sourceforge.net/projects/nasmx/ i udało się skompilować 
przykład z funkcjami z DLL:ExitProcess i MessageBoxA. Ale jednak jest pewien 
problem: gdy próbuję debugować za pomoca GDB, nie rozpoznaje pliku jako 
execa. Zlinkowany jest za pomocą GoLink. Gdy próbuję użyć Alink, wypisuje że 
nie znalazł _MessageBoxA@16, _ExitProcess@4. Jak linkerowi Alink wskazac że 
ma brać te funkcje z DLL i dlaczego zmienił nazwy dodając podkreślenie i po 
nazwie liczbę? 
Re: Pierwsze kroki z assemblerem
#2378
Author: yesma
Date: Wed, 11 Aug 2010 18:12
15 lines
1369 bytes
Borneq pisze:
> Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są 
> różnice między nimi?

Ja poleciłbym Ci NASM bo jest przenośny na inne platformy np LINUX,
jest wolnym oprogramowaniem i dlatego że sam używałem go to pisania
okienek w window$. Tyle że ja tworzyłem sobie pliki lib z dll'i
a nie tak jak piszesz w poście niżej że chcesz używać bezpośrednio
przez loaddll, ALINK je utworzy
tyle że teraz niepamiętam jak to robiłem, sprawdź ALINK napewno dasz
rade

-- 
Pozdrawiam - Grzechu
Linux x86_64
Re: Pierwsze kroki z assemblerem
#2379
Author: yesma
Date: Wed, 11 Aug 2010 18:15
15 lines
1366 bytes
Borneq pisze:
 > Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są 
różnice między nimi?

Ja poleciłbym Ci NASM bo jest przenośny na inne platformy np LINUX,
jest wolnym oprogramowaniem i dlatego że sam używałem go to pisania
okienek w window$. Tyle że ja tworzyłem sobie pliki lib z dll'i
a nie tak jak piszesz w poście niżej że chcesz używać bezpośrednio
przez loaddll, ALIB je utworzy
tyle że teraz niepamiętam jak to robiłem, sprawdź ALIB napewno dasz
rade

-- 
Pozdrawiam - Grzechu
Linux x86_64
Re: Pierwsze kroki z assemblerem
#2377
Author: Wiktor S.
Date: Fri, 13 Aug 2010 11:36
15 lines
1541 bytes
> przykłady ALink sa pod Tasm, wolałbym nasm, a poza tym zawierają
> includelib "win32.lib", chciałbym nie używać żadnych zewnętrznych
> bibliotek a jedynie wołać funkcje API Windows bezpośrednio z DLL
> przez LoadLibrary

to win32.lib to biblioteka dla linkera statycznie importująca funkcje z 
dllek systemowych. Zaoszczędza ci pisanie kodu z LoadLibrary.
To tylko automatycznie wygenerowane informacje dla linkera i później 
systemowego loadera. Nie jest to jakaś "prawdziwa" zewnętrzna biblioteka.

Nie ma potrzeby by _wszystko_ ładować dynamicznie przez 
LoadLibrary/GetProcAddress.

-- 
Azarien
Re: Pierwsze kroki z assemblerem
#2380
Author: Bogdan (bogdro)
Date: Mon, 16 Aug 2010 16:27
63 lines
4153 bytes
W dniu 11.08.2010 14:19, Borneq pisze:
> Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są
> różnice między nimi?

 Różnią się w dyrektywach kompilatorów. Składnia języka jest ta sama.
LZASM jest zgodny z przestarzałym TASMem (Borland Turbo Assembler),
JWasm - z MASMem (Microsoft Macro Assembler), YASM jest zgodny z
NASMem i GNU as. Ja osobiście używam głównie NASMa, ale czasem też
FASMa, do testów. Porównanie dyrektyw i sposobów kompilacji znajdziesz
tu: http://rudy.mif.pg.gda.pl/~bogdro/dos/fntasm.htm.
 Dla Windows jest też rodzina narzędzi "Go": GoAsm - kompilator,
GoLink - linker, GoBug - debuger, GoRC - kompilator zasobów
(http://www.godevtool.com/).
 Dobrym debugerem jest też Olly Debugger (http://www.ollydbg.de/).

> Szukam przykładów, jak zacząć np. utworzyć konsolę i użyć funkcji z
> WinApi aby wypisać coś w rodzaju printf("Hello world").

 Poszukaj kursu Iczeliona dla Win32 (http://win32asm.cjb.net/; wersja
polska pod adresem http://www.i-lo.tarnow.pl/edu/inf/prg/win32asm/) -
tego potrzebujesz. Kurs jest napisany pod MASMa lub MASMa32, ale z
niewielkim wysiłkiem można go przenieść na FASMa (i tak też robiłem).
FASM dla Windows to edytor tekstu z wbudowanym kolorowaniem składni i
opcjami kompilacji i uruchamiania, ale dla tego kompilatora napisano
też środowisko o nazwie Fresh (dostępne ze stron FASMa). Na zrzutach
ekranu wygląda podobnie np. do Borland Buildera, może więc okazać się
przydatne do pisania aplikacji okienkowych.

> Czy główna
> funcja musi się nazywac main?

 Nie, chyba że linkujesz ze biblioteką standardową języka C.

> Poza tym - jak napisać minimalną okienkową aplikację tworząca okno i
> obłsugującą komunikat Paint z możliwością rysowania TextOut, i innynch
> rzeczy.

 Wszystko znajdziesz w tutorialach Iczeliona. Jeśli używasz
odpowiedniego kompilatora, nie musisz używać LoadLibrary, ani nawet
bibliotek importowych (win32.lib czy cokolwiek w tym guście) -
wystarczy napisać odpowiednie linijki w programie (lub jeszcze łatwiej
- dołączyć do programu plik już je zawierający). Tak na pewno było w
FASMie dla Windows. Co do innych - nie wiem.
 Co do dziwnych nazw ("_MessageBoxA@16") - są to nazwy funkcji i
bodajże ilość bajtów dla parametrów. Ich nazewnictwo musi być
uzgodnione między kompilatorem, linkerem i biblioteką DLL. Niektóre
kompilatory mają opcję importowania z inną nazwą, coś w stylu
	extern _MessageBoxA@16 as MessageBoxA
 dzięki czemu możesz używać normalnych nazw (bez ozdobników), a nie
będzie błędów linkera.
 Jeśli jednak zdecydujesz się linkować Alinkiem, to też polecam Alib
do tworzenia bibliotek importowych z bibliotek DLL, dzięki czemu Alink
się połapie, o jakie funkcje chodzi.

 Wejdź na http://rudy.mif.pg.gda.pl/~bogdro/linki.htm - znajdziesz tam
wiele odnośników do kompilatorów, narzędzi, kursów, książek i innych
stron o asemblerze.

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft
Re: Pierwsze kroki z assemblerem
#2381
Author: Wiktor S.
Date: Wed, 18 Aug 2010 16:55
13 lines
1320 bytes
> Różnią się w dyrektywach kompilatorów. Składnia języka jest ta sama.
> LZASM jest zgodny z przestarzałym TASMem (Borland Turbo Assembler),
> JWasm - z MASMem (Microsoft Macro Assembler), YASM jest zgodny z
> NASMem i GNU as.

Zapomniałeś jeszcze "FASM jest mniej więcej zgodny z NASM".
Jak dla mnie, składnia NASM/YASM/FASM jest najczytelniejsza.

GNU as to makabra.


-- 
Azarien
Re: Pierwsze kroki z assemblerem
#2382
Author: Wojciech Muła
Date: Wed, 18 Aug 2010 17:02
9 lines
1065 bytes
On Wed, 18 Aug 2010 18:55:45 +0200 "Wiktor S."
<wswiktor&poczta,fm@no.spam> wrote:

> GNU as to makabra.

Bez przesady, w miarę łatwo da się przestawić - kwestia
przyzwyczajenia.

w.
Re: Pierwsze kroki z assemblerem
#2385
Author: Marek Borowski
Date: Wed, 18 Aug 2010 19:45
19 lines
1601 bytes
On 18-08-2010 18:55, Wiktor S. wrote:
>> Różnią się w dyrektywach kompilatorów. Składnia języka jest ta sama.
>> LZASM jest zgodny z przestarzałym TASMem (Borland Turbo Assembler),
>> JWasm - z MASMem (Microsoft Macro Assembler), YASM jest zgodny z
>> NASMem i GNU as.
>
> Zapomniałeś jeszcze "FASM jest mniej więcej zgodny z NASM".
> Jak dla mnie, składnia NASM/YASM/FASM jest najczytelniejsza.
>
> GNU as to makabra.
>
>
Duzo pisalem w m68k. - Najcudowniejszy assembler do recznego pisania.
I skladnia intela byla dla mnie na poczatku katorga. (o trybie 
rzeczywistym nie wspominajac). Bardzo lubie GNU as. Takze sa wyjatki :-).

Pozdr

Marek
Re: Pierwsze kroki z assemblerem
#2384
Author: Wojciech Muła
Date: Wed, 18 Aug 2010 19:49
13 lines
1260 bytes
On Wed, 18 Aug 2010 20:02:15 +0200 "Wiktor S."
<wswiktor&poczta,fm@no.spam> wrote:

> >> GNU as to makabra.
> 
> > Bez przesady, w miarę łatwo da się przestawić
> 
> nie czuję potrzeby, skoro jak trzeba to jest NASM.

Ależ nie namawiałem Cię do zmiany religii. :)
Tylko niepotrzebnie straszysz młodych.

w.
Re: Pierwsze kroki z assemblerem
#2386
Author: yesma
Date: Wed, 18 Aug 2010 20:04
14 lines
1308 bytes
Wiktor S. pisze:

> GNU as to makabra.
>
"wojna" AT&T czy INTEL chyba nigdy się nie skończy :)
Ja też popieram składnie Intel w wykonaniu NASM
Jest minimalistyczna i w 100% zrozumiała, bez movb al,?
== mov al,? , wiadomo że al to 8bitów. Ale jak ktoś
dużo napisał w GNU AS to szacunek, napewno oprócz przyzwyczajenia
ma swoje zalety tym bardziej jak ktoś dużo pisze w C :)

-- 
Pozdrawiam - Grzechu
Linux x86_64
Re: Pierwsze kroki z assemblerem
#2387
Author: yesma
Date: Fri, 20 Aug 2010 18:02
12 lines
1108 bytes
yesma pisze:

> movb al,? == mov al,?

mam nadzieję że nikt się nie obraził za mój błąd,
rozpędziłem się :)

oczywiście movb ?,%al == mov al,?

-- 
Pozdrawiam - Grzechu
Linux x86_64
Re: Pierwsze kroki z assemblerem
#2388
Author: Remek
Date: Fri, 22 Oct 2010 15:59
11 lines
1230 bytes
Użytkownik "Borneq" napisał:

> Szukam przykładów, jak zacząć np. utworzyć konsolę i użyć funkcji z WinApi
> aby wypisać coś w rodzaju printf("Hello world").

Jeśli za późno sie obudziłem to sorry. Do rzeczy.

Jeśli WinApi to jak rozumiem Windows32. Do tego jest niezawodny, dedykowany
i wspierany Masm32. Darmowy i jest do niego masa tutoriali.

Remek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads