Asembler_Sztuka_programowania_Wydanie_II_asesz2.pdf

(708 KB) Pobierz
Idź do
• Spis treści
• Przykładowy rozdział
Katalog książek
• Katalog online
• Zamów drukowany
katalog
Twój koszyk
• Dodaj do koszyka
Cennik i informacje
• Zamów informacje
o nowościach
• Zamów cennik
Czytelnia
• Fragmenty książek
online
Asembler. Sztuka
programowania. Wydanie II
Autor:
Randall Hyde
Tłumaczenie: Przemysław Szeremiota
ISBN: 978-83-246-2854-4
Tytuł oryginału:
The Art of Assembly Language, 2nd edition
Format: B5, stron: 816
Kontakt
Helion SA
ul. Kościuszki 1c
44-100 Gliwice
tel. 32 230 98 63
e-mail: helion@helion.pl
© Helion 1991–2010
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
• Makrodefinicje i język czasu kompilacji
• Manipulowanie bitami
• Klasy i obiekty
Podręcznik na najwyższym poziomie o językach programowania niższego poziomu
Spis tre ci
PODZI}KOWANIA ................................................................................... 15
1
WST}P
1.1.
1.2.
1.3.
1.4.
1.5.
1.6.
1.7.
1.8.
1.9.
DO J}ZYKA ASEMBLEROWEGO .................................................... 17
Anatomia programu HLA ..........................................................................................18
Uruchamianie pierwszego programu HLA ................................................................20
Podstawowe deklaracje danych programu HLA .......................................................22
Warto ci logiczne ......................................................................................................24
Warto ci znakowe .....................................................................................................25
Rodzina procesorów 80x86 firmy Intel .....................................................................25
Podsystem obsïugi pamiÚci .......................................................................................28
Podstawowe instrukcje maszynowe .........................................................................31
Podstawowe struktury sterujÈce wykonaniem programu HLA ................................34
1.9.1. Wyra enia logiczne w instrukcjach HLA .....................................................35
1.9.2. Instrukcje if..then..elseif..else..endif jÚzyka HLA .........................................37
1.9.3. Iloczyn, suma i negacja w wyra eniach 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 jÚzyka HLA — wprowadzenie ............................................50
1.10.1. Staïe predefiniowane w module stdio .........................................................52
1.10.2. Standardowe wej cie i wyj cie 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.
1.12.
1.13.
Jeszcze o ochronie wykonania kodu w bloku try..endtry ......................................... 62
1.11.1. Zagnie d one 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
JÚzyk asemblerowy a jÚzyk HLA ............................................................................... 70
½ródïa informacji dodatkowych ............................................................................... 71
2
REPREZENTACJA DANYCH ..................................................................... 73
2.1.
Systemy liczbowe ..................................................................................................... 74
2.1.1. System dziesiÚtny — 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. Sïowa .......................................................................................................... 82
2.3.5. Podwójne sïowa ......................................................................................... 83
2.3.6. Sïowa poczwórne i dïugie ........................................................................... 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 ciÈgach bitów .................................... 91
2.8.
Liczby ze znakiem i bez znaku .................................................................................. 93
2.9.
Rozszerzanie znakiem, rozszerzanie zerem, skracanie, przycinanie ........................ 98
2.10. PrzesuniÚcia i obroty .............................................................................................. 102
2.11. Pola bitowe i dane spakowane ............................................................................... 107
2.12. Wprowadzenie do arytmetyki zmiennoprzecinkowej ............................................ 112
2.12.1. Formaty zmiennoprzecinkowe przyjÚte przez IEEE ................................ 116
2.12.2. Obsïuga liczb zmiennoprzecinkowych w jÚzyku HLA .............................. 120
2.13. Reprezentacja liczb BCD ........................................................................................ 124
2.14. Znaki ....................................................................................................................... 125
2.14.1. Zestaw znaków ASCII .............................................................................. 125
2.14.2. Obsïuga znaków ASCII w jÚzyku HLA ..................................................... 129
2.15. Zestaw znaków Unicode ........................................................................................ 134
2.16. ½ródïa informacji dodatkowych ............................................................................. 134
3
DOST}P DO PAMI}CI 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 tre ci
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
3.8.
3.9.
3.10.
3.11.
3.12.
3.13.
3.14.
Organizacja pamiÚci 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
Przydziaï pamiÚci dla zmiennych w programach HLA ............................................152
Wyrównanie danych w programach HLA ...............................................................154
Wyra enia adresowe ...............................................................................................157
Koercja typów .........................................................................................................159
Koercja typu rejestru ...............................................................................................162
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 warto ci rejestrów za pomocÈ instrukcji push i pop .......167
Stos jako kolejka LIFO .............................................................................................168
3.9.1. Pozostaïe wersje instrukcji obsïugi stosu ..................................................170
3.9.2. Usuwanie danych ze stosu bez ich zdejmowania ......................................172
Odwoïywanie siÚ do danych na stosie bez ich zdejmowania ..................................174
Dynamiczny przydziaï pamiÚci — obszar pamiÚci sterty ........................................176
Instrukcje inc oraz dec ............................................................................................181
Pobieranie adresu obiektu .......................................................................................181
½ródïa informacji dodatkowych ..............................................................................182
4
STAE, ZMIENNE I TYPY DANYCH ....................................................... 183
4.1.
Kilka dodatkowych instrukcji: intmul, bound i into .................................................184
4.2.
Deklaracje staïych i zmiennych w jÚzyku HLA ........................................................188
4.2.1. Typy staïych ..............................................................................................192
4.2.2. Literaïy staïych ïañcuchowych i znakowych ..............................................193
4.2.3. Staïe ïañcuchowe i napisowe w sekcji const .............................................195
4.2.4. Wyra enia staïowarto ciowe ....................................................................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ódïowego programu ..................................201
4.3.
Sekcja type programu HLA .....................................................................................202
4.4.
Typy wyliczeniowe w jÚzyku HLA ..........................................................................203
4.5.
Typy wska nikowe ..................................................................................................204
4.5.1. Wska niki w jÚzyku asemblerowym .........................................................206
4.5.2. Deklarowanie wska ników w programach HLA .......................................207
4.5.3. Staïe wska nikowe i wyra enia staïych wska nikowych ...........................208
4.5.4. Zmienne wska nikowe a dynamiczny przydziaï pamiÚci ..........................209
4.5.5. Typowe bïÚdy stosowania wska ników ....................................................209
Spis tre ci
7
Zgłoś jeśli naruszono regulamin