Asembler_Podrecznik_programisty_asempp.pdf

(446 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Asembler. Podrêcznik
programisty
Autor: Vlad Pirogow
T³umaczenie: Wojciech Moch
ISBN: 83-7361-797-3
Tytu³ orygina³u:
The Assembly Programming Master Book
Format: B5, stron: 640
Tajniki tworzenia programów dla systemu Windows w asemblerze
• Poznaj narzêdzia programistyczne
• Napisz programy wykorzystuj¹ce Windows API
• Wykryj i usuñ b³êdy z programów asemblerowych
Pisanie programów w asemblerze przez d³ugi czas kojarzy³o siê z systemem MS-DOS.
Teraz asembler powoli odzyskuje stracon¹ pozycjê jêzyka programowania dla systemu
Windows. W ród wielu zalet asemblera mo¿na wymieniæ: bezpo redni dostêp do
procesora, zwarty i niewielki kod wynikowy oraz mo¿liwo ci trudne do uzyskania
za pomoc¹ jêzyków wysokiego poziomu. Asembler jest niezbêdny przy tworzeniu
sterowników dla urz¹dzeñ zewnêtrznych, a korzystanie z niego uczy my lenia
algorytmicznego, od którego jêzyki obiektowe stopniowo odzwyczajaj¹ programistów.
Ksi¹¿ka „Asembler. Podrêcznik programisty” to kompendium wiedzy dotycz¹cej pisania
programów dla systemu Windows w jêzyku asemblera. Znajdziesz w niej opisy narzêdzi
programistycznych i sposoby korzystania z procedur Windows API. Nauczysz siê
tworzyæ programy dla Windows — od najprostszych, wykorzystuj¹cych konsolê,
a¿ do skomplikowanych aplikacji z interfejsem graficznym. Dowiesz siê, jak korzystaæ
z narzêdzi do wykrywania i usuwania b³êdów, a tak¿e poznasz zasady stosowania
asemblera w po³¹czeniu z jêzykami wysokiego poziomu.
• Narzêdzia programistyczne dla systemu Windows
• Wywo³ywanie funkcji Windows API
• Programy dzia³aj¹ce w trybie tekstowym
• Tworzenie i wykorzystywanie zasobów
• Praca z systemem plików
• Tworzenie bibliotek DLL
• Programowanie sieciowe
• Wykorzystywanie asemblera w jêzykach wysokiego poziomu
• Turbo Debugger
• Tworzenie sterowników
Odkryj nieznane obszary programowania -- poznaj jêzyk asemblera
TWÓJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Wstęp .............................................................................................. 9
Część I
Podstawy programowania 32-bitowego
w systemach Windows ..................................................13
Pierwszy program w asemblerze i jego przekształcenia ................................................. 15
Moduły obiektowe .......................................................................................................... 20
Dyrektywa INVOKE ...................................................................................................... 22
Dane w module obiektowym .......................................................................................... 24
Asemblacja programem TASM ...................................................................................... 25
Uproszczony tryb segmentacji ........................................................................................ 26
Inne narzędzia u ywane do pracy z asemblerem ............................................................ 27
Edytory ..................................................................................................................... 28
Programy uruchomieniowe ...................................................................................... 28
Deasemblery ............................................................................................................. 29
Edytory szesnastkowe .............................................................................................. 31
Kompilatory zasobów .............................................................................................. 31
Edytory zasobów ...................................................................................................... 31
Rozdział 1. Narzędzia programistyczne dla systemu Windows ............................ 15
Rozdział 2. Podstawy programowania w systemie Windows ............................... 33
Wywoływanie funkcji API ............................................................................................. 34
Struktura programu ......................................................................................................... 37
Rejestracja klasy okna .............................................................................................. 37
Tworzenie okna ........................................................................................................ 37
Pętla obsługi komunikatów ...................................................................................... 37
Procedura okna głównego ........................................................................................ 38
Przykłady prostych programów okienkowych ................................................................ 39
Jak to zrobić w asemblerze TASM32? ........................................................................... 45
Przekazywanie parametrów poprzez stos ....................................................................... 49
Rozdział 3. Proste programy w języku asemblera ............................................... 53
Zasady budowania aplikacji w systemie Windows ......................................................... 53
Okno z przyciskiem ........................................................................................................ 55
Okno z polem edycyjnym ............................................................................................... 59
Okno z listą .................................................................................................................... 65
Okna potomne i okna posiadane ..................................................................................... 72
4
Asembler. Podręcznik programisty
Rozdział 4. Przegląd programowania 16-bitowego .............................................. 81
Zasady programowania 16-bitowego w systemie Windows ........................................... 81
Przykład aplikacji 16-bitowej ................................................................................... 83
Rozdział 5. Asemblery MASM i TASM ............................................................... 89
Opcje wiersza poleceń asemblerów ml.exe i tasm32.exe ............................................... 89
Opcje wiersza poleceń konsolidatorów link.exe i tlink32.exe ........................................ 92
Dołączanie do plików wykonywalnych informacji dla programu uruchomieniowego ... 97
Tworzenie aplikacji konsolowych i aplikacji z interfejsem GUI .................................... 99
Konsolidacja automatyczna ............................................................................................ 99
Programy same tłumaczące się na kod wynikowy ................................................... 99
Część II
Programowanie w systemie Windows ...........................101
Kodowanie informacji tekstowych ............................................................................... 103
OEM i ANSI ................................................................................................................ 104
Unikod .......................................................................................................................... 105
Rozdział 6. Kodowanie tekstu w systemie Windows ........................................ 103
Rozdział 7. Przykłady prostych programów ...................................................... 109
Wypisywanie tekstu w oknie ........................................................................................ 109
Wybieranie czcionki ..................................................................................................... 122
Grafika .......................................................................................................................... 128
Rozdział 8. Aplikacje konsolowe ..................................................................... 139
Tworzenie konsoli ........................................................................................................ 143
Przetwarzanie zdarzeń klawiatury i myszy ................................................................... 147
Czasomierz w aplikacji konsolowej ............................................................................. 154
Rozdział 9. Idea zasobów — edytory i kompilatory zasobów ............................. 161
Język opisu zasobów .................................................................................................... 161
Ikony ...................................................................................................................... 162
Kursory .................................................................................................................. 164
Bitmapy .................................................................................................................. 165
Ciągi znaków .......................................................................................................... 165
Dialogi ................................................................................................................... 165
Menu ...................................................................................................................... 170
Klawisze skrótów ................................................................................................... 175
Niemodalne okna dialogowe ........................................................................................ 177
Kompilowanie zasobów i konsolidowanie plików obiektowych
w pakiecie TASM32 ............................................................................................ 182
Rozdział 10. Przykłady programów korzystających z zasobów ............................. 185
Dynamiczne menu ........................................................................................................ 185
Klawisze szybkiego dostępu ......................................................................................... 195
Zarządzanie listami ....................................................................................................... 201
Programowanie w stylu Windows XP .......................................................................... 207
Rozdział 11. Praca z plikami ............................................................................. 213
Charakterystyki plików ................................................................................................ 213
Atrybuty plików ..................................................................................................... 214
System plików FAT32 .................................................................................................. 217
System plików NTFS ................................................................................................... 220
Katalogi w systemie plików NTFS ......................................................................... 223
Kompresja plików w systemie NTFS ..................................................................... 224
Spis treści
5
Punkty dołączania .................................................................................................. 224
Wyszukiwanie plików ............................................................................................ 225
Asemblacja programu za pomocą asemblera TASM ............................................. 240
Techniki pracy z plikami binarnymi ............................................................................. 240
Jak pobrać atrybuty pliku? ..................................................................................... 251
Część III Bardziej skomplikowane przykłady programów
dla systemu Windows ..................................................255
Rozdział 12. Dyrektywy i makroinstrukcje języka asemblera .............................. 257
Etykiety ........................................................................................................................ 257
Struktury ....................................................................................................................... 259
Unie .............................................................................................................................. 260
Wygodna metoda pracy ze strukturami ........................................................................ 260
Asemblacja warunkowa ................................................................................................ 261
Wywołania procedur .................................................................................................... 262
Makroinstrukcje powtórzeń .......................................................................................... 263
Makroinstrukcja definiowana ....................................................................................... 264
Kilka innych dyrektyw i operatorów asemblera ........................................................... 266
Konstrukcje typu HLL .................................................................................................. 267
Konstrukcje warunkowe ......................................................................................... 267
Pętla WHILE .......................................................................................................... 268
Tworzenie programów asemblowanych zarówno przez asembler MASM,
jak i asembler TASM ................................................................................................. 269
Rozdział 13. Więcej o zarządzaniu plikami ......................................................... 271
Dokładny opis funkcji CreateFile ................................................................................. 271
Inne mo liwości funkcji CreateFile .............................................................................. 275
Skrytki pocztowe .................................................................................................... 276
Potoki ..................................................................................................................... 281
Napędy dyskowe .................................................................................................... 282
Przegląd funkcji API zajmujących się zarządzaniem plikami ...................................... 286
Asynchroniczne wejście i wyjście ................................................................................ 287
Rozdział 14. Przykłady programów korzystających z czasomierza ....................... 293
Najprostszy przykład u ycia czasomierza .................................................................... 295
Interakcja między czasomierzami ................................................................................. 299
Okna dymków pomocy ................................................................................................. 305
Rozdział 15. Wielozadaniowość ........................................................................ 317
Tworzenie procesu ....................................................................................................... 317
Wątki ............................................................................................................................ 327
Komunikacja między wątkami ..................................................................................... 333
Semafory ...................................................................................................................... 334
Zdarzenia ...................................................................................................................... 336
Sekcje krytyczne .......................................................................................................... 336
Wzajemne wykluczenie ................................................................................................ 346
Rozdział 16. Tworzenie bibliotek dynamicznych (DLL) ........................................ 347
Koncepcje ogólne ......................................................................................................... 347
Tworzenie biblioteki dynamicznej ............................................................................... 349
Konsolidacja niejawna ................................................................................................. 354
Korzystanie ze wspólnej przestrzeni adresowej ........................................................... 356
Współdzielenie pamięci przez kilka procesów ............................................................. 364
6
Asembler. Podręcznik programisty
Rozdział 17. Programowanie sieciowe ............................................................... 369
Urządzenia sieciowe ..................................................................................................... 369
Wyszukiwanie i podłączanie dysków sieciowych ........................................................ 374
Słowo o protokołach sieciowych TCP/IP ..................................................................... 387
Model OSI .............................................................................................................. 387
Rodzina protokołów TCP/IP .................................................................................. 387
Adresowanie w protokole IP .................................................................................. 389
Maski adresów ....................................................................................................... 391
Adresy fizyczne i adresy protokołu IP ................................................................... 391
Usługa systemu nazw domen ................................................................................. 391
Automatyczne przypisywanie adresów protokołu IP ............................................. 392
Routing ................................................................................................................... 392
Zarządzanie gniazdami ................................................................................................. 393
Przykład aplikacji najprostszego serwera i klienta ....................................................... 397
Rozdział 18. Rozwiązywanie problemów związanych z programowaniem
w systemie Windows .................................................................... 411
Umieszczanie ikony na tacce systemowej .................................................................... 411
Przetwarzanie plików ................................................................................................... 417
Kontrolowanie danych w polu edycyjnym ................................................................... 419
Wymiana danych pomiędzy aplikacjami ...................................................................... 427
Zabezpieczenie przed wielokrotnym uruchomieniem aplikacji .................................... 433
Operacje na grupach plików i katalogów ..................................................................... 434
Drukowanie .................................................................................................................. 436
Korzystanie z listy zadań .............................................................................................. 436
Część IV Debugowanie, analiza kodu
i przygotowywanie sterowników ...................................443
Rozdział 19. Programowanie systemowe ........................................................... 445
Adresowanie stron i segmentów ................................................................................... 445
Przestrzeń adresowa procesu ........................................................................................ 450
Zarządzanie pamięcią ................................................................................................... 452
Haki .............................................................................................................................. 458
Rozdział 20. Wykorzystywanie asemblera w językach wysokiego poziomu .......... 467
Koordynacja wywołań .................................................................................................. 467
Koordynacja nazw ........................................................................................................ 468
Koordynacja parametrów ............................................................................................. 469
Prosty przykład wykorzystania asemblera w językach wysokiego poziomu ................ 470
Borland C++ 5.0 ..................................................................................................... 470
Visual C++ 7.0 ....................................................................................................... 471
Delphi 7.0 ............................................................................................................... 473
Przekazywanie parametrów przez rejestry .................................................................... 474
Wywołania funkcji API i zasoby w modułach asemblera ............................................ 475
Połączenie języka C z kodem asemblerowym .............................................................. 480
Asembler wbudowany .................................................................................................. 486
Przykład wykorzystania biblioteki dynamicznej .......................................................... 488
Rozdział 21. Programowanie usług .................................................................... 493
Podstawowe koncepcje i funkcje kontrolne .................................................................. 493
Struktura usługi ............................................................................................................ 495
Przykładowa usługa ...................................................................................................... 501
Zgłoś jeśli naruszono regulamin