asmwin-5.pdf

(520 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Win32ASM.
Asembler w Windows
Autor: Adam B³aszczyk
ISBN: 83-7361-022-7
Format: B5, stron: 360
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Przekonanie, ¿e programowanie w asemblerze odesz³o w przesz³o æ wraz z opartymi
na interfejsie tekstowym systemami w rodzaju DOS i upowszechnieniem siê
wysokopoziomowych jêzyków programowania takich jak Visual Basic, C++ czy Java,
jest b³êdne. Ca³kiem spora grupa osób nadal u¿ywa asemblera w rodowisku Windows.
Je li chcesz do nich do³¹czyæ, znalaz³e w³a ciw¹ ksi¹¿kê.
Asembler daje programi cie poczucie ogromnej wolno ci i pe³nego panowania nad
sprzêtem. Dziêki tej ksi¹¿ce nauczysz siê programowaæ w tym jêzyku, poznasz równie¿
ca³y zestaw aplikacji, które programowanie to u³atwi¹. W tek cie ksi¹¿ki znajdziesz
wiele przyk³adów kodu ilustruj¹cych najwa¿niejsze omawiane zagadnienia.
Ksi¹¿ka przedstawia:
• Podstawowe informacje zwi¹zane z asemblerem: systemy kodowania,
zapis liczb i znaków
• Rejestry i pamiêæ maszyny z punktu widzenia programisty asemblera, adresowanie
• Instrukcje asemblera i listê rozkazów procesora
• Programowanie z u¿yciem MASM — Makro Asemblera
• U¿ycie programu NMAKE i tworzenie plików Makefile
• Programowanie w Windows: WinAPI
• Biblioteki DLL
• Technologie COM i OLE
• Zasoby programów Windows
Jeszcze jedna metoda tworzenia programów w Windows, która mo¿e zafascynowaæ
osoby lubi¹ce „d³ubanie w kodzie”? Dlaczego nie! Przeczytaj tê ksi¹¿kê, a sam bêdziesz
móg³ oceniæ, czy asembler siê zdewaluowa³.
Programowanie w Windows dla wtajemniczonych.
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
• Poznaj jêzyk asembler dla procesorów Intel i kompatybilnych
• Naucz siê u¿ywaæ Windows API z poziomu asemblera
• Poznaj narzêdzia u³atwiaj¹ce programowanie
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Spis treści
Od Autora.......................................................................................... 9
Wstęp ............................................................................................. 11
Rozdział 1. Zanim zaczniemy na poważnie.......................................................... 15
Platform SDK, MSDN ......................................................................................................15
Pakiet Masm32..................................................................................................................16
Narzędziownia...................................................................................................................17
Rozdział 2. Asembler kontra Windows................................................................ 19
Krótko o ró nych rodzinach okienek ................................................................................19
Gdzie się podziały przerwania?.........................................................................................23
Windows API ....................................................................................................................24
Windows z perspektywy asemblera ..................................................................................27
Rozdział 3. Co trzeba wiedzieć? ......................................................................... 31
Systemy liczbowe i nie tylko ............................................................................................31
Informacja i system dwójkowy (binarny) ...................................................................32
Potęgi liczby 2...................................................................................................................33
Jednostki objętości danych................................................................................................37
Kodowanie liczb................................................................................................................37
NKB (naturalny kod binarny) .....................................................................................40
Kod dwójkowo-dziesiętny BCD (Binary Coded Decimal) ........................................41
Reprezentacja liczb ujemnych ....................................................................................42
Reprezentacja stałoprzecinkowa.................................................................................45
Reprezentacja zmiennoprzecinkowa...........................................................................45
Problemy związane z błędami obliczeń......................................................................46
Kodowanie znaków ...........................................................................................................47
ASCII (ISO 646) .........................................................................................................47
ASCII rozszerzone (ASCII Extended, HI-ASCII)......................................................47
Polskie znaki diaktryczne w ró nych systemach kodowania znaków ........................54
ASCIIZ (ASCII Zero) .................................................................................................55
Systemy kodowania MBCS (Multibyte Character Set) i DBCS
(Double Character Set) ............................................................................................55
Unicode .......................................................................................................................56
6
Win32ASM. Asembler w Windows
Rozdział 4. Asembler......................................................................................... 63
Z czego składa się typowy program? ................................................................................63
Program wykonywalny — od środka................................................................................70
Gdzie umieszczać kod i dane? ..........................................................................................73
Zamiana tekstu programu na kod wykonywalny ..............................................................74
Procesory 80x86 — krótkie wprowadzenie ......................................................................77
Pamięć — model płaski.....................................................................................................77
Rejestry..............................................................................................................................80
Rejestry tzw. ogólnego przeznaczenia........................................................................80
Rejestr EIP ..................................................................................................................82
Rejestry segmentowe ..................................................................................................82
Rejestr eflags...............................................................................................................83
Moment uruchomienia programu......................................................................................86
Dostęp do pamięci i sposoby jej adresowania...................................................................87
Adresowanie bezpośrednie .........................................................................................87
Adresowanie pośrednie...............................................................................................88
Adresowanie a wielkość danych .......................................................................................89
Adresowanie a rejestry segmentowe .................................................................................90
Adresowanie łańcuchów ...................................................................................................91
Instrukcje 32- i 16-bitowe .................................................................................................92
Stos ....................................................................................................................................93
Wywoływanie procedur ....................................................................................................94
Przekazywanie parametrów przez rejestry..................................................................95
Przekazywanie parametrów przez stos .......................................................................95
Deklarowanie zmiennych..................................................................................................95
Zmienne, wskaźniki — adresowanie ................................................................................97
Najwa niejsze instrukcje programu ..................................................................................99
Instrukcja mov ............................................................................................................99
Para instrukcji push/pop............................................................................................100
Rozkazy dotyczące operacji na łańcuchach ..............................................................100
Rozkazy arytmetyczne ..............................................................................................101
Etykiety, pętle, skoki.................................................................................................102
Rozkazy związane z procedurami.............................................................................103
Rozkazy logiczne ......................................................................................................105
Rozkazy przesunięć ..................................................................................................106
Lista rozkazów IA-32 — opis skrócony .........................................................................108
Instrukcje transferu danych.......................................................................................108
Instrukcje arytmetyczne ............................................................................................108
Instrukcje porównujące i testujące ustawienie danego bitu......................................108
Instrukcje arytmetyczne (kod BCD) .........................................................................109
Instrukcje logiczne ....................................................................................................109
Instrukcje przesunięć ................................................................................................109
Instrukcje obrotów ....................................................................................................109
Intrukcje operujące na bitach ....................................................................................109
Intrukcje przenoszące kontrolę do innego miejsca w programie..............................109
Intrukcje operujące na łańcuchach............................................................................110
Instrukcje dotyczące rejestru znaczników ................................................................110
Instrukcje dotyczące segmentów ..............................................................................110
Instrukcje ró ne.........................................................................................................110
Rozdział 5. Macro Assembler........................................................................... 131
MASM — Macro Assembler ..........................................................................................131
Jak powstają makra? .................................................................................................133
Spis treści
7
Najwa niejsze informacje o makrach .............................................................................134
Znaki specjalne .........................................................................................................134
Zapis liczb.................................................................................................................134
Przedefiniowane symbole i funkcje ..........................................................................134
Operatory ..................................................................................................................136
Makra związane z procesem asemblacji ...................................................................138
Operatory związane z programowaniem ..................................................................147
Tworzenie własnych makr ........................................................................................155
Plik macro.inc — przykłady u ytecznych makr .......................................................155
Słowa zarezerwowane w języku Macro Assembler........................................................169
Rozdział 6. Pisanie plików makefile — program NMAKE ................................... 175
Zawartość pliku projektowego ........................................................................................175
Bloki komentarzy......................................................................................................176
Bloki opisowe ...........................................................................................................176
Pora na praktykę — budowanie własnych projektów.....................................................178
Uniwersalny makefile (plik makefile.mak).....................................................................179
Rozdział 7. Parametry wywołania programów MASM, LINK, RC i NMAKE .......... 185
Parametry wywołania ML.EXE ......................................................................................185
Parametry wywołania LINK.EXE...................................................................................187
Parametry wywołania RC.EXE.......................................................................................188
Parametry wywołania NMAKE ......................................................................................189
Rozdział 8. Podstawy programowania Windows ................................................ 191
Pojęcie okna ....................................................................................................................192
Komunikaty okna ............................................................................................................193
Szkielet aplikacji dialogowej ..........................................................................................194
Konsola............................................................................................................................195
Podsumowanie ................................................................................................................197
Rozdział 9. Jak korzystać z dokumentacji SDK? ............................................... 209
Notacja węgierska ...........................................................................................................209
Funkcje Win API.............................................................................................................209
Parametry funkcji Win API.............................................................................................213
Funkcje Unicode kontra funkcje ANSI...........................................................................215
Rozdział 10. Win32ASM — graficzny interfejs użytkownika GUI .......................... 223
Rola interfejsu u ytkownika .....................................................................................223
Elementy interfejsu ...................................................................................................225
Zmiany wprowadzone przez Windows XP...............................................................226
Wszystko o oknach ...................................................................................................226
Menu .........................................................................................................................262
Rozdział 11. Zasoby programów Windows .......................................................... 269
Skrypty zasobów w plikach .rc i .res...............................................................................269
Binaria, czyli zasoby w plikach wykonywalnych ...........................................................272
Dostęp do zasobów z poziomu programu.................................................................273
Jeszcze raz o narzędziach..........................................................................................273
Tworzenie plików z zasobami ..................................................................................274
Piszemy własny edytor tekstu...................................................................................275
Inne rodzaje zasobów................................................................................................287
Manifest w Windows XP ..........................................................................................288
Zakładka Wersja — informacje o programie............................................................291
8
Win32ASM. Asembler w Windows
Rozdział 12. WinAPI — najczęściej wykorzystywane funkcje............................... 301
Wersja systemu ...............................................................................................................301
Odczyt parametrów systemu ...........................................................................................301
Dostęp do katalogów systemowych ................................................................................302
Powiadomienia o zmianach (stanu systemu, jego ustawień lub stanu okna itp.)............303
Dostęp do linii poleceń programu ...................................................................................303
Operacje na liczbach i łańcuchach ..................................................................................305
Pliki w systemie Windows ..............................................................................................305
Dostęp do Rejestru ..........................................................................................................306
Liczniki czasowe .............................................................................................................308
Rozdział 13. Zagadnienia wcale niezaawansowane............................................. 309
Biblioteki DLL ................................................................................................................309
Haki w systemie Windows..............................................................................................312
Internet ............................................................................................................................313
Uaktualnianie wersji programu przez internet..........................................................313
Piszemy „konia trojańskiego”, czyli oprogramowanie typu serwer-klient...............317
Rozdział 14. Technologia COM i kontrolki OLE ................................................... 331
Obecność na pasku zadań — interfejs ITaskbarList .......................................................332
Plik skrótu — interfejs IShellLink ..................................................................................338
Najmniejsza przeglądarka świata — interfejs IWebBrowser2 .......................................340
Rozdział 15. Materiały pomocnicze .................................................................... 351
Dokumentacja i podręczniki............................................................................................351
Najwa niejsze strony domowe poświęcone Win32ASM ...............................................351
Opracowania i literatura dotyczące Win32ASM, WinAPI i tematyki pokrewnej ..........352
Asemblery, kompilatory, programy łączące ...................................................................352
Inne..................................................................................................................................353
Wybrane strony z narzędziami........................................................................................353
Rozdział 16. Programy źródłowe......................................................................... 355
Skorowidz...................................................................................... 361
Zgłoś jeśli naruszono regulamin