
Praktyczny kurs asemblera. Wydanie II
Cena: 69,00 zł
- Dowiedz się, do czego może Ci się przydać asembler
- Poznaj architekturę i sposób działania procesorów Intel
- Naucz się pisać wydajne programy dla systemów DOS i Windows
Zobacz, na co Cię stać z asemblerem!
Programowanie w języku niskiego poziomu - choć czasem nieco uciążliwe - daje bardzo dużą swobodę w kwestii wykorzystania sprzętowych zasobów komputera i oferuje niemal nieograniczoną kontrolę nad sposobem działania programu. Aplikacje napisane za pomocą asemblera są bardzo szybkie i wydajne, a ponadto wymagają o wiele mniejszej ilości pamięci operacyjnej niż analogiczny kod, opracowany w językach wysokiego poziomu, takich jak C++, Java czy Visual Basic. Jeśli jesteś zainteresowany poszerzeniem swoich umiejętności programistycznych, z pewnością nadszedł czas, aby sięgnąć po asembler.
Książka "Praktyczny kurs asemblera. Wydanie II" wprowadzi Cię w podstawowe zagadnienia związane z zastosowaniem języka niskiego poziomu do programowania komputerów opartych na architekturze x86-32 procesorów Intel (oraz AMD). Poznasz sposoby wykorzystania zasobów sprzętowych, zasadę działania procesora i listę jego instrukcji. Nauczysz się też, jak używać różnych trybów adresowania w celu optymalnego zarządzania zawartością rejestrów i pamięci. Dowiesz się, jak prawidłowo pisać, łączyć, kompilować i uruchamiać programy, a także poznasz praktyczne przykłady zastosowania asemblera.
- Podstawowe informacje na temat asemblera i architektury x86-32 procesorów Intel (oraz AMD)
- Przegląd narzędzi przydatnych przy tworzeniu i uruchamianiu kodu
- Sposoby adresowania pamięci i korzystanie z rejestrów procesora
- Lista instrukcji procesorów o architekturze x86-32
- Definiowanie i używanie zmiennych
- Tworzenie podprogramów i makroinstrukcji
- Korzystanie z funkcji systemu MS DOS i BIOS-a oraz windowsowych bibliotek typu API
- Stosowanie asemblera do tworzenia programów uruchamianych pod systemem Windows
- Tworzenie asemblerowych bibliotek typu dll z wykorzystaniem środowiska Microsoft Visual Studio
- Przegląd metod optymalizacji kodu
- Praktyczne przykłady programów wykorzystujących język asemblera
Wykorzystaj w pełni potencjał asemblera!
Ostatni wykład Eugeniusza Wróbla (7)
Wprowadzenie do drugiego wydania (9)
Rozdział 1. Wprowadzenie (11)
- 1.1. Co to jest asembler? (11)
- 1.2. Dlaczego programować w języku asemblera? (14)
- 1.3. Dlaczego warto poznać język asemblera? (16)
- 1.4. Wymagane umiejętności (16)
- 1.5. Konwencje stosowane w książce (17)
Rozdział 2. Pierwszy program w asemblerze (21)
- 2.1. "Hello, world!" pod kontrolą systemu operacyjnego MS DOS (22)
- 2.2. "Hello, world!" pod kontrolą systemu operacyjnego Windows (25)
Rozdział 3. Architektura procesorów rodziny x86-32 widziana oczami programisty (33)
- 3.1. Rejestry procesora 8086 (34)
- 3.2. Zwiększamy rozmiar rejestrów - od procesora 80386 do Intel Core i7 (38)
- 3.3. Zwiększamy liczbę rejestrów - od procesora i486 do Intel Core i7 (39)
- 3.4. Segmentowa organizacja pamięci (44)
- 3.5. Adresowanie argumentów (48)
- 3.6. Adresowanie argumentów w pamięci operacyjnej (49)
- 3.7. Architektura x86-32e (52)
Rozdział 4. Narzędzia (55)
- 4.1. Asembler MASM (56)
- 4.2. Program konsolidujący - linker (60)
- 4.3. Programy uruchomieniowe (62)
- Microsoft CodeView (64)
- Microsoft WinDbg (67)
- OllyDbg (68)
- 4.4. Środowiska zintegrowane (70)
- Microsoft Programmer's WorkBench (PWB) (70)
- Środowisko zintegrowane MASM32 SDK (71)
- Środowisko zintegrowane RadASM (74)
- WinAsm Studio (74)
- 4.5. Microsoft Visual Studio (75)
Rozdział 5. Lista instrukcji procesorów x86-32 (81)
- 5.1. Instrukcje ogólne - jednostki stałoprzecinkowej (84)
- 5.2. Koprocesor arytmetyczny - instrukcje jednostki zmiennoprzecinkowej (87)
- 5.3. Instrukcje rozszerzenia MMX (90)
- 5.4. Instrukcje rozszerzenia SSE (93)
- 5.5. Instrukcje rozszerzenia SSE2 (97)
- 5.6. Instrukcje rozszerzenia SSE3, SSSE3 oraz SSE4 (100)
- 5.7. Instrukcje systemowe (101)
- 5.8. Planowane rozszerzenie AVX (102)
Rozdział 6. Ogólna struktura programu asemblerowego (105)
- 6.1. Uproszczone dyrektywy definiujące segmenty (105)
- 6.2. Pełne dyrektywy definiowania segmentów (111)
- 6.3. Dyrektywy pomocnicze (114)
Rozdział 7. Definiowanie i stosowanie zmiennych (123)
- 7.1. Zmienne całkowite (124)
- 7.2. Zmienne zmiennoprzecinkowe (127)
- 7.3. Definiowanie tablic i łańcuchów (128)
- 7.4. Struktury zmiennych (130)
- 7.5. Dyrektywa definiująca pola bitowe (133)
Rozdział 8. Podprogramy (137)
- 8.1. Stos (137)
- 8.2. Wywołanie i organizacja prostych podprogramów (140)
- 8.3. Dyrektywa PROC - ENDP (141)
- 8.4. Parametry wywołania podprogramu (146)
- 8.5. Zmienne lokalne (155)
Rozdział 9. Makroinstrukcje oraz dyrektywy asemblacji warunkowej (157)
- 9.1. Makroinstrukcja definiowana (157)
- 9.2. Dyrektywa LOCAL (162)
- 9.3. Dyrektywy asemblacji warunkowej (163)
- 9.4. Makroinstrukcje niedefiniowane (166)
- 9.5. Makroinstrukcje tekstowe (167)
- 9.6. Makroinstrukcje operujące na łańcuchach (na tekstach) (168)
Rozdział 10. Funkcje systemu MS DOS oraz BIOS (171)
- 10.1. Co ma prawo przerwać wykonanie naszego programu? (171)
- 10.2. Obsługa klawiatury oraz funkcje grafiki na poziomie BIOS (174)
- 10.3. Wywoływanie podprogramów systemu operacyjnego MS DOS (180)
Rozdział 11. Programowanie w asemblerze w środowisku Windows (187)
- 11.1. Systemowe programy biblioteczne (188)
- 11.2. Pierwsze okno (191)
- 11.3. Struktury programowe typu HLL (197)
- 11.4. Program generatora okien Prostart (199)
Rozdział 12. Wybrane zagadnienia optymalizacji programu (207)
- 12.1. Kiedy i co powinniśmy optymalizować w programie? (209)
- 12.2. Optymalizujemy program przygotowany dla procesora x86-32 (211)
- Modele pamięci - mieszanie kodów 16- i 32-bitowych (211)
- Wyrównywanie danych (212)
- Pamięć podręczna (213)
- Unikanie rozgałęzień (skoków) (215)
- Opóźnienia wynikające z pierwszego wykonania oraz rozwijanie pętli (216)
- Opóźnienia związane z zapisywaniem i odczytywaniem (217)
- 12.3. Wspieramy proces optymalizacji za pomocą programu Vtune (218)
- 12.4. Na ile różnych sposobów możemy zakodować kopiowanie tablic? (219)
- Metoda 1.: Z wykorzystaniem instrukcji MOVSB (221)
- Metoda 2.: Z wykorzystaniem instrukcji MOVSD (221)
- Metoda 3.: Jawna pętla z instrukcjami MOV (222)
- Metoda 4.: Pętla z instrukcją MOV, rozwinięta (222)
- Metoda 5.: Pętla rozwinięta, grupowanie operacji odczytu i zapisu (223)
- Metoda 6.: Wykorzystujemy rejestry MMX (223)
- Metoda 7.: Modyfikujemy metodę 6., stosując instrukcje MOVNTQ i SFENCE (224)
- Metoda 8.: Na początku pętli z poprzedniej metody wprowadzamy instrukcję pobrania wstępnego do pamięci podręcznej (225)
- Metoda 9.: Wykorzystujemy 128-bitowe rejestry rozszerzenia SSE (225)
Rozdział 13. Podział programu na moduły i łączenie modułów zakodowanych w różnych językach programowania (227)
- 13.1. Jak realizować połączenia międzymodułowe? (228)
- 13.2. Mieszamy moduły przygotowane w różnych językach (232)
Rozdział 14. Tworzenie projektu asemblerowego w środowisku Microsoft Visual Studio (239)
- 14.1. Wstawki asemblerowe w programie uruchamianym w języku C++ (239)
- 14.2. Asemblerowa biblioteka dll w środowisku Microsoft Visual Studio (245)
Rozdział 15. Przykładowe programy dla systemu operacyjnego MS DOS (251)
- 15.1. Pierwsze kroki w prostym trybie graficznym (252)
- 15.2. Pozorujemy głębię (255)
- 15.3. Generowanie fraktali (258)
Rozdział 16. Przykładowe programy dla systemu operacyjnego Windows (265)
- 16.1. Zegarek (265)
- 16.2. Wykorzystanie biblioteki OpenGL (270)
- 16.3. Prosty edytor graficzny (273)
Rozdział 17. Biblioteki asemblerowe w środowisku Microsoft Visual Studio (293)
- 17.1. Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008 (293)
- 17.2. Szyfrowanie (301)
- 17.3. Edytor graficzny (307)
- 17.4. Steganografia (312)
Załącznik 1. Interesujące strony w internecie (317)
Załącznik 2. Lista dyrektyw i pseudoinstrukcji języka MASM (319)
- Z2.1. Dyrektywy określające listę instrukcji procesora (319)
- Z2.2. Organizacja segmentów (321)
- Z2.3. Definiowanie stałych oraz dyrektywy związane z nazwami symbolicznymi (323)
- Z2.4. Definiowanie zmiennych (324)
- Z2.5. Dyrektywy asemblacji warunkowej (326)
- Z2.6. Makroinstrukcje i dyrektywy z nimi związane (327)
- Z2.7. Pseudoinstrukcje typu HLL (329)
- Z2.8. Dyrektywy związane z podprogramami (329)
- Z2.9. Dyrektywy wpływające na kształt listingu asemblacji (330)
- Z2.10. Połączenia międzymodułowe (332)
- Z2.11. Dyrektywy związane z diagnostyką procesu asemblacji (333)
- Z2.12. Inne dyrektywy i pseudoinstrukcje (334)
Załącznik 3. Operatory stosowane w języku MASM (337)
- Z3.1. Operatory stosowane w wyrażeniach obliczanych w czasie asemblacji (337)
- Z3.2. Operatory stosowane w wyrażeniach obliczanych w czasie wykonywania programu (341)
Załącznik 4. Symbole predefiniowane (343)
Załącznik 5. Przegląd instrukcji procesora x86-32 (347)
- Z5.1. Instrukcje ogólne (jednostki stałoprzecinkowej) (347)
- Z5.2. Instrukcje jednostki zmiennoprzecinkowej (koprocesora arytmetycznego) (354)
- Z5.3. Instrukcje rozszerzenia MMX (357)
- Z5.4. Instrukcje rozszerzenia SSE (360)
- Z5.5. Instrukcje rozszerzenia SSE2 (363)
- Z5.6. Instrukcje rozszerzenia SSE3 (367)
- Z5.7. Instrukcje systemowe (368)
Załącznik 6. Opis wybranych przerwań systemu BIOS (371)
- Z6.1. Funkcje obsługi klawiatury wywoływane przerwaniem programowym INT 16h (371)
- Z6.2. Funkcje obsługi karty graficznej wywoływane przerwaniem programowym INT 10h (373)
Załącznik 7. Wywołania funkcji systemu operacyjnego MS DOS (379)
- Z7.1. Funkcje realizujące odczyt lub zapis znaku z układu wejściowego lub wyjściowego (379)
- Z7.2. Funkcje operujące na katalogach (381)
- Z7.3. Operacje na dysku (381)
- Z7.4. Operacje na plikach (zbiorach) dyskowych (383)
- Z7.5. Operacje na rekordach w pliku (385)
- Z7.6. Zarządzanie pamięcią operacyjną (386)
- Z7.7. Funkcje systemowe (387)
- Z7.8. Sterowanie programem (388)
- Z7.9. Funkcje związane z czasem i datą (389)
- Z7.10. Inne funkcje (390)
Załącznik 8. Opis wybranych funkcji API (391)
- Z8.1. CheckDlgButton (391)
- Z8.2. CloseHandle (392)
- Z8.3. CopyFile (393)
- Z8.4. CreateFile (394)
- Z8.5. CreateWindowEx (396)
- Z8.6. DeleteFile (399)
- Z8.7. ExitProcess (399)
- Z8.8. GetFileSize (400)
- Z8.9. MessageBox (400)
- Z8.10. ShowWindow (403)
Załącznik 9. Tablica kodów ASCII oraz kody klawiszy (405)
- Z9.1. Kody ASCII (405)
- Z9.2. Kody klawiszy (405)
Załącznik 10. FTP wydawnictwa (411)
Skorowidz (413)







7 zapytań |
0,0147sek.