Article View: pl.comp.lang.asm
Article #2380Re: Pierwsze kroki z assemblerem
From: Bogdan (bogdro)
Date: Mon, 16 Aug 2010 16:27
Date: Mon, 16 Aug 2010 16:27
63 lines
4153 bytes
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-mailReferences:
<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