Asembler_Sztuka_programowania_Wydanie_II_asesz2.pdf

(748 KB) Pobierz
Asembler. Sztuka programowania. Wydanie II
430717376.001.png
Idź do
Asembler. Sztuka
programowania. Wydanie II
• Spis treści
Tłumaczenie: Przemysław Szeremiota
ISBN: 978-83-246-2854-4
Format: B5, stron: 816
Katalog książek
Twój koszyk
Poznaj asembler od podstaw i zbuduj fundament swojej wiedzy o programowaniu
• Jak pisać, kompilować i uruchamiać programy w języku HLA?
• Jak obsługiwać zbiory znaków w bibliotece standardowej HLA?
• Jak obliczać wartości wyrażeń logicznych?
Poznanie asemblera jest jak położenie fundamentu pod budowlę całej twojej wiedzy informatycznej,
ponieważ to właśnie ono ułatwia zrozumienie mechanizmów rządzących innymi językami
programowania. Język asemblera, należący do języków programowania niższego poziomu, jest
powszechnie stosowany do pisania sterowników, emulatorów i gier wideo. Jednak omawiany
w tej książce język HLA posiada też wiele cech języków wyższego poziomu, takich jak C, C++ czy
Java, dzięki czemu przy jego używaniu nie musisz rezygnować z licznych udogodnień, typowych
dla takich języków.
Książka „Asembler. Sztuka programowania. Wydanie II” stanowi obszerne i wyczerpujące
omówienie języka asemblera. Dzięki wielu jasnym przykładom, pozbawionym niepotrzebnej
specjalistycznej terminologii, zawarty tu materiał staje się łatwo przyswajalny dla każdego, kto
chciałby poznać programowanie niższego poziomu. Korzystając z tego podręcznika, dowiesz się
m.in., jak deklarować i stosować stałe, zmienne skalarne, wskaźniki, tablice, struktury, unie
i przestrzenie nazw. Nauczysz się realizować w języku asemblera struktury sterujące przebiegiem
wykonania programu. Ponadto drugie wydanie zostało uaktualnione zgodnie ze zmianami, które
zaszły w języku HLA. Uwzględnia także stosowanie HLA w kontekście systemów Windows, Linux,
Mac OS X i FreeBSD.
• Wstęp do asemblera
• Anatomia programu HLA
• Reprezentacja danych
• Dostęp do pamięci i jej organizacja
• Stałe, zmienne i typy danych
• Procedury i moduły
• Niskopoziomowe struktury sterujące wykonaniem programu
• Makrodenicje i język czasu kompilacji
• Manipulowanie bitami
• Klasy i obiekty
Podręcznik na najwyższym poziomie o językach programowania niższego poziomu
Cennik i informacje
o nowościach
Czytelnia
• Fragmenty książek
online
Kontakt
Helion SA
ul. Kościuszki 1c
44-100 Gliwice
tel. 32 230 98 63
© Helion 1991–2010
430717376.002.png 430717376.003.png
Spis treci
PODZIKOWANIA ................................................................................... 15
1
WSTP DO JZYKA ASEMBLEROWEGO .................................................... 17
1.1. Anatomia programu HLA ..........................................................................................18
1.2. Uruchamianie pierwszego programu HLA ................................................................20
1.3. Podstawowe deklaracje danych programu HLA .......................................................22
1.4. Wartoci logiczne ......................................................................................................24
1.5. Wartoci znakowe .....................................................................................................25
1.6. Rodzina procesorów 80x86 firmy Intel .....................................................................25
1.7. Podsystem obsugi pamici .......................................................................................28
1.8. Podstawowe instrukcje maszynowe .........................................................................31
1.9. Podstawowe struktury sterujce wykonaniem programu HLA ................................34
1.9.1. Wyraenia logiczne w instrukcjach HLA .....................................................35
1.9.2. Instrukcje if..then..elseif..else..endif jzyka HLA .........................................37
1.9.3. Iloczyn, suma i negacja w wyraeniach logicznych ......................................39
1.9.4. Instrukcja while ...........................................................................................42
1.9.5. Instrukcja for ...............................................................................................43
1.9.6. Instrukcja repeat .........................................................................................44
1.9.7. Instrukcje break oraz breakif ......................................................................45
1.9.8. Instrukcja forever ........................................................................................45
1.9.9. Instrukcje try, exception oraz endtry ..........................................................46
1.10. Biblioteka standardowa jzyka HLA — wprowadzenie ............................................50
1.10.1. Stae predefiniowane w module stdio .........................................................52
1.10.2. Standardowe wejcie i wyjcie programu ...................................................53
1.10.3. Procedura stdout.newln ..............................................................................54
1.10.4. Procedury stdout.putiN ..............................................................................54
1.10.5. Procedury stdout.putiNSize ........................................................................54
1.10.6. Procedura stdout.put ..................................................................................56
1.10.7. Procedura stdin.getc ...................................................................................58
1.10.8. Procedury stdin.getiN .................................................................................59
1.10.9. Procedury stdin.readLn i stdin.flushInput ....................................................60
1.10.10. Procedura stdin.get .....................................................................................61
1.11. Jeszcze o ochronie wykonania kodu w bloku try..endtry ......................................... 62
1.11.1. Zagniedone bloki try..endtry .................................................................. 63
1.11.2. Klauzula unprotected bloku try..endtry ...................................................... 65
1.11.3. Klauzula anyexception bloku try..endtry .................................................... 68
1.11.4. Instrukcja try..endtry i rejestry ................................................................... 68
1.12. Jzyk asemblerowy a jzyk HLA ............................................................................... 70
1.13. róda informacji dodatkowych ............................................................................... 71
2
REPREZENTACJA DANYCH ..................................................................... 73
2.1. Systemy liczbowe ..................................................................................................... 74
2.1.1. System dziesitny — przypomnienie .......................................................... 74
2.1.2. System dwójkowy ...................................................................................... 74
2.1.3. Formaty liczb dwójkowych ........................................................................ 75
2.2. System szesnastkowy ............................................................................................... 76
2.3. Organizacja danych ................................................................................................... 79
2.3.1. Bity ............................................................................................................. 79
2.3.2. Póbajty ....................................................................................................... 79
2.3.3. Bajty ............................................................................................................ 80
2.3.4. Sowa .......................................................................................................... 82
2.3.5. Podwójne sowa ......................................................................................... 83
2.3.6. Sowa poczwórne i dugie ........................................................................... 84
2.4. Operacje arytmetyczne na liczbach dwójkowych i szesnastkowych ........................ 85
2.5. Jeszcze o liczbach i ich reprezentacji ........................................................................ 86
2.6. Operacje logiczne na bitach ...................................................................................... 88
2.7. Operacje logiczne na liczbach dwójkowych i cigach bitów .................................... 91
2.8. Liczby ze znakiem i bez znaku .................................................................................. 93
2.9. Rozszerzanie znakiem, rozszerzanie zerem, skracanie, przycinanie ........................ 98
2.10. Przesunicia i obroty .............................................................................................. 102
2.11. Pola bitowe i dane spakowane ............................................................................... 107
2.12. Wprowadzenie do arytmetyki zmiennoprzecinkowej ............................................ 112
2.12.1. Formaty zmiennoprzecinkowe przyjte przez IEEE ................................ 116
2.12.2. Obsuga liczb zmiennoprzecinkowych w jzyku HLA .............................. 120
2.13. Reprezentacja liczb BCD ........................................................................................ 124
2.14. Znaki ....................................................................................................................... 125
2.14.1. Zestaw znaków ASCII .............................................................................. 125
2.14.2. Obsuga znaków ASCII w jzyku HLA ..................................................... 129
2.15. Zestaw znaków Unicode ........................................................................................ 134
2.16. róda informacji dodatkowych ............................................................................. 134
3
DOSTP DO PAMICI I JEJ ORGANIZACJA ............................................ 135
3.1.
Tryby adresowania procesorów 80x86 .................................................................. 136
3.1.1. Adresowanie przez rejestr ....................................................................... 136
3.1.2. 32-bitowe tryby adresowania procesora 80x86 ....................................... 137
6
Spis treci
3.2. Organizacja pamici fazy wykonania .......................................................................144
3.2.1. Obszar kodu ..............................................................................................145
3.2.2. Obszar zmiennych statycznych .................................................................147
3.2.3. Obszar niemodyfikowalny .........................................................................147
3.2.4. Obszar danych niezainicjalizowanych .......................................................148
3.2.5. Atrybut @nostorage .................................................................................149
3.2.6. Sekcja deklaracji var ..................................................................................150
3.2.7. Rozmieszczenie sekcji deklaracji danych w programie HLA .....................151
3.3. Przydzia pamici dla zmiennych w programach HLA ............................................152
3.4. Wyrównanie danych w programach HLA ...............................................................154
3.5. Wyraenia adresowe ...............................................................................................157
3.6. Koercja typów .........................................................................................................159
3.7. Koercja typu rejestru ...............................................................................................162
3.8. Pami obszaru stosu oraz instrukcje push i pop ....................................................164
3.8.1. Podstawowa posta instrukcji push ..........................................................164
3.8.2. Podstawowa posta instrukcji pop ............................................................166
3.8.3. Zachowywanie wartoci rejestrów za pomoc instrukcji push i pop .......167
3.9. Stos jako kolejka LIFO .............................................................................................168
3.9.1. Pozostae wersje instrukcji obsugi stosu ..................................................170
3.9.2. Usuwanie danych ze stosu bez ich zdejmowania ......................................172
3.10. Odwoywanie si do danych na stosie bez ich zdejmowania ..................................174
3.11. Dynamiczny przydzia pamici — obszar pamici sterty ........................................176
3.12. Instrukcje inc oraz dec ............................................................................................181
3.13. Pobieranie adresu obiektu .......................................................................................181
3.14. róda informacji dodatkowych ..............................................................................182
4
STAE, ZMIENNE I TYPY DANYCH ....................................................... 183
4.1.
Kilka dodatkowych instrukcji: intmul, bound i into .................................................184
4.2.
Deklaracje staych i zmiennych w jzyku HLA ........................................................188
4.2.1. Typy staych ..............................................................................................192
4.2.2. Literay staych acuchowych i znakowych ..............................................193
4.2.3. Stae acuchowe i napisowe w sekcji const .............................................195
4.2.4. Wyraenia staowartociowe ....................................................................197
4.2.5. Wielokrotne sekcje const i ich kolejno w programach HLA ..................200
4.2.6. Sekcja val programu HLA ..........................................................................200
4.2.7. Modyfikowanie obiektów sekcji val
w wybranym miejscu kodu ródowego programu ..................................201
4.3.
Sekcja type programu HLA .....................................................................................202
4.4.
Typy wyliczeniowe w jzyku HLA ..........................................................................203
4.5.
Typy wskanikowe ..................................................................................................204
4.5.1. Wskaniki w jzyku asemblerowym .........................................................206
4.5.2. Deklarowanie wskaników w programach HLA .......................................207
4.5.3. Stae wskanikowe i wyraenia staych wskanikowych ...........................208
4.5.4. Zmienne wskanikowe a dynamiczny przydzia pamici ..........................209
4.5.5. Typowe bdy stosowania wskaników ....................................................209
Spis treci
7
Zgłoś jeśli naruszono regulamin