
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
Wykorzystaj potencjał asemblera!
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.
- 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
Po przeczytaniu tej książki przestaniesz postrzegać asemblera jako zbiór magicznych zaklęć, zrozumiałych jedynie dla brodatych guru pamiętających jeszcze czasy komputerów zajmujących powierzchnię sali gimnastycznej. Napiszesz programy, których uruchomienie nie będzie wymagało od użytkownika posiadania superkomputera. Poznasz wszystkie, nawet najgłębiej ukryte, możliwości komputera.
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)
- 2.1. "Hello, world!" pod systemem operacyjnym MS DOS (18)
- 2.2. "Hello, world!" pod systemem operacyjnym Windows (22)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 13.1. Jak realizować połączenia międzymodułowe? (210)
- 13.2. Mieszamy moduły przygotowane w różnych językach (214)
- 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)
- 15.1. Zegarek (243)
- 15.2. Dotknięcie grafiki przez duże "G" (248)
- 15.3. Przekształcamy mapę bitową (250)
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)
- 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 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)
- 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)
- 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)
- 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)
- 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)
- Z9.1. Kody ASCII (361)
- Z9.2. Kody klawiszy (361)
Załącznik 11. Płyta CD załączona do książki (369)
Skorowidz (371)