🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2380

Re: Pierwsze kroki z assemblerem

#2380
From: 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
Technical Details
Message-ID: <i4botu$lra$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <i3u4hc$qa1$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: Pierwsze kroki z assemblerem
Date: Mon, 16 Aug 2010 18:27:40 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 63
Message-ID: <i4botu$lra$1@inews.gazeta.pl>
References: <i3u4hc$qa1$1@news.onet.pl>
NNTP-Posting-Host: rudy.mif.pg.gda.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1281976064 22378 153.19.42.16 (16 Aug 2010 16:27:44 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Mon, 16 Aug 2010 16:27:44 +0000 (UTC)
X-User: bog.d
In-Reply-To: <i3u4hc$qa1$1@news.onet.pl>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit