Praktyczny_kurs_asemblera_pkasem.pdf

(670 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Praktyczny kurs
asemblera
Autor: Eugeniusz Wróbel
ISBN: 83-7361-433-8
Format: B5, stron: 384
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Wejd w wiat programowania w jêzyku asemblera
• Dowiedz siê, kiedy u¿ycie asemblera jest niezbêdne
• Poznaj zasady programowania w asemblerze
• Napisz szybkie i wydajne programy dla DOS-a i Windows
• Zdob¹d wiedzê o zasadach dzia³ania procesora i pamiêci
Uwa¿asz, ¿e mo¿liwo ci jêzyków programowania wysokiego poziomu nie pozwalaj¹
na napisanie programu, którego potrzebujesz? Chcesz stworzyæ sterownik, program
rezydentny, demo lub... wirusa? Interesuje Ciê, co dzieje siê w komputerze podczas
wykonywania programu?
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
Wykorzystaj potencja³ asemblera!
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Programowanie w jêzyku niskiego poziomu daje niemal nieograniczon¹ kontrolê
nad sprzêtem i dzia³aniem aplikacji. Programy napisane w jêzyku asemblera dzia³aj¹
szybko, s¹ niewielkie i zajmuj¹ ma³o pamiêci. S¹ bardzo wydajne i otwieraj¹ dostêp
do takich obszarów komputera, do których dostêp z poziomu C++ czy Visual Basica
jest niemo¿liwy.
Ksi¹¿ka „Praktyczny kurs asemblera” wprowadzi Ciê w wiat programowania
w tym jêzyku. Dowiesz siê, jak dzia³a procesor, w jaki sposób komunikuje siê
z pamiêci¹ i pozosta³ymi elementami komputera. Poznasz typy rozkazów procesora,
tryby adresowania i zasady tworzenia programów w asemblerze. Lepiej poznasz swój
komputer i dowiesz siê, w jaki sposób zapamiêtuje i przetwarza dane. Komputer
przestanie byæ dla Ciebie „czarn¹ skrzynk¹” wykonuj¹c¹ w czarodziejski sposób
Twoje polecenia.
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
• Podstawowe wiadomo ci o architekturze procesorów Intel
• Organizacja pamiêci i tryby adresowania
• Omówienie listy rozkazów procesora
• Narzêdzia do tworzenia programów w jêzyku asemblera
• Struktura programu w asemblerze
• Definiowanie zmiennych
• Tworzenie podprogramów i makrorozkazów
• Wykorzystanie funkcji BIOS-a oraz MS-DOS
• Programy w asemblerze uruchamiane w systemie Windows
• Optymalizacja kodu
• Tworzenie modu³ów dla innych jêzyków programowania
Spis treści
Rozdział 1. Wprowadzenie ................................................................................... 7
1.1. Co to jest asembler? .....................................................................................................7
1.2. Dlaczego programować w języku asemblera? ...........................................................10
1.3. Dlaczego warto poznać język asemblera?..................................................................12
1.4. Wymagane umiejętności ............................................................................................12
1.5. Konwencje stosowane w ksią ce ...............................................................................13
Rozdział 2. Zaczynamy typowo — wiedząc niewiele,
uruchamiamy nasz pierwszy program ................................................ 17
2.1. „Hello, world!” pod systemem operacyjnym MS DOS .............................................18
2.2. „Hello, world!” pod systemem operacyjnym Windows.............................................22
Rozdział 3. Wracamy do podstaw — poznajemy minimum wiedzy
na temat architektury procesorów 80x86 ......................................... 29
3.1. Rejestry procesora 8086 .............................................................................................30
3.2. Zwiększamy rozmiar rejestrów — od procesora 80386 do Pentium 4 ......................33
3.3. Zwiększamy liczbę rejestrów — od procesora 80486 do Pentium 4 .........................35
3.4. Segmentowa organizacja pamięci ..............................................................................39
3.5. Adresowanie argumentów..........................................................................................43
3.6. Adresowanie argumentów w pamięci operacyjnej.....................................................44
Rozdział 4. Poznajemy narzędzia ........................................................................ 47
4.1. Asembler MASM .......................................................................................................49
4.2. Program konsolidujący — linker ...............................................................................52
4.3. Programy uruchomieniowe ........................................................................................54
4.4. Wszystkie potrzebne narzędzia razem, czyli środowiska zintegrowane....................62
Rozdział 5. Nadmiar możliwości, z którym trudno sobie poradzić
— czyli lista instrukcji procesora...................................................... 67
5.1. Instrukcje ogólne — jednostki stałoprzecinkowej .....................................................70
5.2. Koprocesor arytmetyczny — instrukcje jednostki zmiennoprzecinkowej.................73
5.3. Instrukcje rozszerzenia MMX....................................................................................75
5.4. Instrukcje rozszerzenia SSE .......................................................................................78
5.5. Instrukcje rozszerzenia SSE2 .....................................................................................82
5.6. Instrukcje rozszerzenia SSE3 .....................................................................................85
5.7. Instrukcje systemowe .................................................................................................85
4
Praktyczny kurs asemblera
Rozdział 6. Wracamy do ogólnej struktury programu asemblerowego .................. 87
6.1. Uproszczone dyrektywy definiujące segmenty..........................................................87
6.2. Pełne dyrektywy definiowania segmentów................................................................92
6.3. Spróbujmy drobną część tej wiedzy zastosować w prostym programie,
a przy okazji poznajmy nowe pomocnicze dyrektywy...................................................96
Rozdział 7. Ważna rzecz w każdym języku programowania
— definiowanie i stosowanie zmiennych ......................................... 105
7.1. Zmienne całkowite ...................................................................................................106
7.2. Zmienne zmiennoprzecinkowe ................................................................................109
7.3. Definiowanie tablic i łańcuchów..............................................................................110
7.4. Struktury zmiennych ................................................................................................114
7.5. Dyrektywa definiująca pola bitowe..........................................................................117
Rozdział 8. Podprogramy ................................................................................. 119
8.1. Stos ...........................................................................................................................119
8.2. Wywołanie i organizacja prostych podprogramów..................................................122
8.3. Poznajemy dyrektywę PROC-ENDP .......................................................................123
8.4. Parametry wywołania podprogramu ........................................................................128
8.5. Zmienne lokalne.......................................................................................................137
Rozdział 9. Oddalamy się od asemblera w kierunku języków wyższego poziomu,
czyli użycie makroinstrukcji oraz dyrektyw asemblacji warunkowej.... 139
9.1. Makroinstrukcja definiowana...................................................................................139
9.2. Dyrektywa LOCAL..................................................................................................144
9.3. Dyrektywy asemblacji warunkowej .........................................................................144
9.4. Makroinstrukcje niedefiniowane..............................................................................148
9.5. Makroinstrukcje tekstowe ........................................................................................149
9.6. Makroinstrukcje operujące na łańcuchach (na tekstach)..........................................150
Rozdział 10. Czy obsługę wszystkich urządzeń komputera musimy wykonać sami?
Funkcje systemu MS DOS oraz BIOS .............................................. 153
10.1. Co ma prawo przerwać wykonanie naszego programu?........................................154
10.2. Obsługa klawiatury oraz funkcje grafiki na poziomie BIOS .................................156
10.3. Wywoływanie podprogramów systemu operacyjnego MS DOS...........................163
Rozdział 11. Obalamy mity programując w asemblerze
pod systemem operacyjnym Windows............................................. 169
11.1. Systemowe programy biblioteczne ........................................................................170
11.2. Najprawdziwsze pierwsze okno .............................................................................173
11.3. Struktury programowe HLL — to te jest asembler!.............................................178
11.4. Idziemy jeden krok dalej i wykorzystujemy program generatora okien Prostart......180
Rozdział 12. Czy możemy przyśpieszyć działanie naszego programu?
Wybrane zagadnienia optymalizacji programu.................................. 189
12.1. Kiedy i co w programie powinniśmy optymalizować?..........................................191
12.2. Optymalizujemy program przygotowany dla procesora Pentium 4.......................193
12.3. Wspieramy proces optymalizacji programem Vtune .............................................200
12.4. Na ile ró nych sposobów mo emy zakodować kopiowanie tablic?........................201
Rozdział 13. Dzielimy program na moduły i łączymy moduły zakodowane
w różnych językach programowania ................................................ 209
13.1. Jak realizować połączenia międzymodułowe?.......................................................210
13.2. Mieszamy moduły przygotowane w ró nych językach .........................................214
Spis treści
5
Rozdział 14. Przykładowe programy (MS DOS) ................................................... 219
14.1. Identyfikujemy procesor ........................................................................................219
14.2. Wchodzimy w świat grafiki — nieco patriotycznie...............................................225
14.3. Program rezydentny, czyli namiastka wielozadaniowości.....................................228
14.4. Pozorujemy głębię..................................................................................................233
14.5. Wy sza graficzna szkoła jazdy ze zmiennymi zespolonymi .................................236
Rozdział 15. Przykładowe programy (Windows) .................................................. 243
15.1. Zegarek...................................................................................................................243
15.2. Dotknięcie grafiki przez du e „G” .........................................................................248
15.3. Przekształcamy mapę bitową .................................................................................250
Załącznik 1. Interesujące strony w internecie .................................................... 271
Załącznik 2. Lista dyrektyw i pseudoinstrukcji języka MASM .............................. 275
Z2.1. Dyrektywy określające listę instrukcji procesora ..................................................275
Z2.2. Organizacja segmentów.........................................................................................277
Z2.3. Definiowanie stałych oraz dyrektywy związane z nazwami symbolicznymi........279
Z2.4. Definiowanie zmiennych .......................................................................................280
Z2.4. Dyrektywy asemblacji warunkowej.......................................................................282
Z2.5. Makroinstrukcje i dyrektywy nimi związane.........................................................283
Z2.6. Pseudoinstrukcje typu HLL ...................................................................................285
Z2.7. Dyrektywy związane z podprogramami ................................................................286
Z2.8. Dyrektywy wpływające na kształt listingu asemblacji ..........................................287
Z2.9. Połączenia międzymodułowe ................................................................................289
Z2.10. Dyrektywy związane z diagnostyką procesu asemblacji.....................................290
Z2.11. Inne dyrektywy i pseudoinstrukcje ......................................................................291
Załącznik 3. Operatory stosowane w języku MASM ............................................ 293
Z3.1. Operatory stosowane w wyra eniach obliczanych w czasie asemblacji ...............293
Z3.2. Operatory stosowane w wyra eniach obliczanych
w czasie wykonywania programu.................................................................................297
Załącznik 4. Symbole predefiniowane................................................................. 299
Załącznik 5. Przegląd instrukcji procesora Pentium 4......................................... 303
Z5.1. Instrukcje ogólne (jednostki stałoprzecinkowej) ...................................................303
Z5.2. Instrukcje jednostki zmiennoprzecinkowej (koprocesora arytmetycznego)..........309
Z5.3. Instrukcje rozszerzenia MMX ...............................................................................313
Z5.4. Instrukcje rozszerzenia SSE...................................................................................315
Z5.5. Instrukcje rozszerzenia SSE2.................................................................................319
Z5.6. Instrukcje rozszerzenia SSE3.................................................................................323
Z5.7. Instrukcje systemowe.............................................................................................325
Załącznik 6. Opis wybranych przerwań systemu BIOS ......................................... 327
Z6.1. Funkcje obsługi klawiatury wywoływane przerwaniem programowym INT 16h...327
Z6.2. Funkcje obsługi karty graficznej wywoływane
przerwaniem programowym INT 10h. .........................................................................329
Załącznik 7. Wywołania funkcji systemu operacyjnego MS DOS.......................... 335
Z7.1. Funkcje realizujące odczyt lub zapis znaku z układu wejściowego
lub wyjściowego ...........................................................................................................335
Z7.2. Funkcje operujące na katalogach...........................................................................337
Z7.3. Operacje na dysku..................................................................................................337
Z7.4. Operacje na plikach (zbiorach) dyskowych...........................................................339
Z7.5. Operacje na rekordach w pliku ..............................................................................341
6
Praktyczny kurs asemblera
Z7.6. Zarządzanie pamięcią operacyjną..........................................................................342
Z7.7. Funkcje systemowe................................................................................................342
Z7.8. Sterowanie programem ..........................................................................................344
Z7.9. Funkcje związane z czasem i datą ...........................................................................345
Z7.10 Inne funkcje ..........................................................................................................345
Załącznik 8. Opis wybranych funkcji API ............................................................ 347
Z8.1. CheckDlgButtom ...................................................................................................347
Z8.2. CloseHandle...........................................................................................................348
Z8.3 CopyFile..................................................................................................................349
Z8.4. CreateFile...............................................................................................................350
Z8.5. CreateWindowEx...................................................................................................352
Z8.6. DeleteFile...............................................................................................................355
Z8.7. ExitProcess.............................................................................................................355
Z8.8. GetFileSize.............................................................................................................356
Z8.9. MessageBox...........................................................................................................357
Z8.10. ShowWindow.......................................................................................................359
Załącznik 9. Tablica kodów ASCII oraz kody klawiszy ......................................... 361
Z9.1. Kody ASCII ...........................................................................................................361
Z9.2. Kody klawiszy .......................................................................................................361
Załącznik 10. Program Segment Prefix (PSP).................................................... 367
Załącznik 11. Płyta CD załączona do książki ..................................................... 369
Skorowidz ........................................................................................................ 371
Zgłoś jeśli naruszono regulamin