Asembler_dla_procesorow_Intel_Vademecum_profesjonalisty_asinvp.pdf

(384 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Assembler dla procesorów
Intel. Vademecum
profesjonalisty
Autor: Kip R. Irvine
T³umaczenie: Marcin Jêdrysiak
ISBN: 83-7197-910-X
Tytu³ orygina³u:
Assembly Language
for Intel-Based Computers
Format: B5, stron: 640
Chocia¿ wiat programowania nieodwo³alnie zdominowany jest przez jêzyki wy¿szego
poziomu (takie jak C, C++ czy Java), znajomo æ asemblera jest nadal wysoko ceniona.
U¿ycie jêzyka maszynowego pozwala na pisanie niezwykle wydajnych programów,
odwo³uj¹cych siê bezpo rednio do sprzêtu, wykorzystuj¹cych w 100% mo¿liwo ci
hardware'u.
Ksi¹¿ka „Asembler dla procesorów Intel. Vademecum profesjonalisty” to kompletny
przewodnik po jêzyku programowania najpopularniejszej rodziny procesorów. Mo¿esz j¹
traktowaæ jako podrêcznik asemblera lub jako kompendium wiedzy, do którego zawsze
bêdziesz móg³ siê odwo³aæ, gdy zajdzie taka potrzeba. Znajdziesz w niej informacje
dotycz¹ce:
• architektury mikroprocesorów i zestawu rozkazów procesorów z rodziny
Intel 80x86
• dyrektyw, makr i operatorów jêzyka asembler oraz podstawowej struktury
programu
• metodologii programowania oraz sposobów u¿ycia jêzyka asembler do tworzenia
narzêdzi systemowych i aplikacji
• sposobów pracy z urz¹dzeniami sprzêtowymi
• interakcji miêdzy programem napisanym w jêzyku asembler, systemem
operacyjnym a innymi aplikacjami
• ledzenia przebiegu wykonania programu za pomoc¹ debugera
Oprócz krótkich przyk³adów ksi¹¿ka „Asembler dla procesorów Intel. Vademecum
profesjonalisty” zawiera 75 gotowych do uruchomienia programów, które realizuj¹
koncepcje prezentowane w tek cie. Znajduj¹ce siê na koñcu ksi¹¿ki dodatki stanowi¹
przewodniki po przerwaniach MS-DOS i mnemonikach kodu maszynowego.
TWÓJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
5RKU VTG EK
2T\GFOQYC
Rozdział 1.
9RTQYCF\GPKG
1.1. Kontekst języka asembler ...............................................................................................21
1.1.1. Czym jest język asembler? ...................................................................................22
1.1.2. Aplikacje w języku asembler ...............................................................................23
1.1.3. Język maszynowy.................................................................................................25
1.2. Reprezentacja danych .....................................................................................................26
1.2.1. Liczby binarne......................................................................................................26
1.2.2. Konwersja liczb dwójkowych na dziesiętne ........................................................28
1.2.3. Liczby szesnastkowe ............................................................................................29
1.2.4. Liczby ze znakiem................................................................................................30
1.2.5. Przechowywanie znaków .....................................................................................32
1.3. Wprowadzenie do języka asembler ................................................................................33
1.3.1. Polecenia języka asembler ...................................................................................33
1.3.2. Prosty program napisany w Debug ......................................................................34
1.3.3. Polecenia narzędzia Debug ..................................................................................36
1.4. Pytania kontrolne ............................................................................................................37
Rozdział 2.
#TEJKVGMVWTC URT\úVQYC K RTQITCOQYC
2.1. Architektura 16-bitowych procesorów Intel ...................................................................41
2.1.1. Procesor................................................................................................................41
2.1.2. Rejestry.................................................................................................................42
2.1.3. Rejestry statusu i sterowania ................................................................................45
2.1.4. Znaczniki ..............................................................................................................45
2.1.5. Cykl wykonania instrukcji ...................................................................................46
2.1.6. Rodzina mikroprocesorów Intel ...........................................................................47
2.2. Architektura 32-bitowych procesorów Intel ...................................................................49
2.2.1. Ulepszony cykl wykonywania rozkazów .............................................................49
2.2.2. Zestaw rejestrów 32-bitowych .............................................................................49
2.3. System operacyjny i pamięć ...........................................................................................50
2.3.1. Historia obsługi pamięci w komputerach PC .......................................................50
2.3.2. Architektura pamięci ............................................................................................51
2.3.3. Startowa procedura systemu.................................................................................52
2.3.4. Obsługa grafiki .....................................................................................................54
2.3.5. Szeregowe porty komunikacyjne .........................................................................54
2.3.6. Pamięć tylko do odczytu (ROM) .........................................................................55
2.3.7. Obliczanie adresu absolutnego.............................................................................55
2.4. Komponenty mikrokomputera ........................................................................................56
2.4.1. Wewnętrzne komponenty.....................................................................................56
2.4.2. Rodzaje płyt głównych.........................................................................................57
2.4.3. Architektura magistrali.........................................................................................57
2.4.4. Karta graficzna .....................................................................................................58
#UGODNGT FNC RTQEGUQTÎY +PVGN 8CFGOGEWO RTQHGULQPCNKUV[
2.4.5. Pamięć RAM ........................................................................................................59
2.4.6. Pamięć wideo .......................................................................................................61
2.4.7. Nośniki danych.....................................................................................................61
2.5. Pytania kontrolne ............................................................................................................64
2.6. Zadania programistyczne ................................................................................................66
Rozdział 3.
2QFUVCY[ Lú\[MC CUGODNGT
3.1. Podstawowe elementy języka asembler..........................................................................71
3.1.1. Stałe i wyra enia ..................................................................................................71
3.1.2. Instrukcje ..............................................................................................................73
3.1.3. Nazwy...................................................................................................................73
3.2. Przykładowy program w języku asembler......................................................................74
3.3. Asemblowanie, konsolidacja oraz usuwanie błędów .....................................................76
3.3.1. Borland Turbo Assembler (TASM) .....................................................................78
3.3.2. Microsoft Assembler (MASM) ............................................................................79
3.4. Dyrektywy alokacji danych ............................................................................................80
3.4.1. Dyrektywa Define Byte (DB) ..............................................................................80
3.4.2. Dyrektywa Define Word (DW)............................................................................82
3.4.3. Dyrektywa Doubleword (DD)..............................................................................83
3.5. Stałe symboliczne ...........................................................................................................83
3.5.1. Dyrektywa znaku równości ..................................................................................84
3.5.2. Dyrektywa EQU ...................................................................................................84
3.5.3. Dyrektywa TEXTEQU.........................................................................................85
3.6. Polecenia transferu danych .............................................................................................86
3.6.1. Polecenie MOV ....................................................................................................86
3.6.2. Operandy z przemieszczeniem.............................................................................88
3.6.3. Polecenie XCHG ..................................................................................................88
3.7. Polecenia arytmetyczne ..................................................................................................89
3.7.1. Polecenia INC i DEC ...........................................................................................89
3.7.2. Polecenie ADD.....................................................................................................90
3.7.3. Polecenie SUB......................................................................................................90
3.7.4. Znaczniki zmieniane przez polecenia ADD i SUB ..............................................91
3.8. Podstawowe typy operandów .........................................................................................92
3.8.1. Operandy rejestru .................................................................................................93
3.8.2. Operandy bezpośrednie ........................................................................................93
3.8.3. Operandy pośrednie..............................................................................................93
3.8.4. Bezpośrednie operandy z przesunięciem .............................................................94
3.9. Pytania kontrolne ............................................................................................................95
3.10. Zadania programistyczne ..............................................................................................98
Rozdział 4.
7 [EKG CUGODNGTC
4.1. Dodatkowe informacje o asemblerze i konsolidatorze .................................................101
4.1.1. Plik kodu źródłowego.........................................................................................101
4.1.2. Plik mapy............................................................................................................102
4.1.3. Asemblowanie i konsolidowanie aplikacji poprzez pliki wsadowe MS-DOS ......103
4.1.4. Modele pamięci ..................................................................................................103
4.1.5. Dyrektywy docelowego procesora .....................................................................105
4.2. Operatory i wyra enia...................................................................................................106
4.2.1. Operatory arytmetyczne .....................................................................................106
4.2.2. Operatory OFFSET, SEG, PTR, LABEL i EVEN.............................................108
4.2.3. Operatory TYPE i SIZE .....................................................................................110
4.2.4. Dyrektywa ENUM w Borland TASM ...............................................................111
4.3. Polecenia JMP i LOOP .................................................................................................113
4.3.1. Polecenie JMP ....................................................................................................113
4.3.2. Polecenie LOOP .................................................................................................115
4.3.3. Polecenia LOOP, LOOPW i LOOPD ................................................................116
5RKU VTG EK
4.4. Adresowanie pośrednie.................................................................................................117
4.4.1. Operandy pośrednie............................................................................................117
4.4.2. Operandy bazowe i indeksowe...........................................................................120
4.4.3. Operandy bazowo-indeksowe ............................................................................121
4.4.4. Operandy bazowo-indeksowe z przemieszczeniem ...........................................122
4.5. Usuwanie błędów..........................................................................................................123
4.5.1. Wielkość operandów i błędy adresowania .........................................................124
4.6. Dodatkowe polecenia 80386 i 80486............................................................................125
4.6.1. Polecenia MOVZX i MOVSX ...........................................................................125
4.6.2. Polecenie XADD................................................................................................126
4.7. U ycie biblioteki konsolidowanej ................................................................................126
4.7.1. Wybrane procedury z dołączonej do ksią ki biblioteki konsolidowanej ...........126
4.7.2. Generowanie losowych wartości........................................................................130
4.7.3. Zdarzenia czasowe .............................................................................................130
4.8. Pytania kontrolne ..........................................................................................................131
4.9. Zadania programistyczne ..............................................................................................134
Rozdział 5.
2TQEGFWT[ K RT\GTYCPKC
5.1. Operacje na stosie .........................................................................................................137
5.1.1. Polecenia PUSH i POP.......................................................................................139
5.2. Procedury ......................................................................................................................140
5.2.1. Dyrektywy PROC i ENDP.................................................................................141
5.2.2. Przykładowy program SUBS.ASM....................................................................141
5.2.3. Zagnie d one wywołania procedur....................................................................143
5.2.4. Procedury NEAR i FAR.....................................................................................144
5.2.5. U ycie modeli pamięci.......................................................................................145
5.3. Parametry procedury.....................................................................................................147
5.3.1. Przekazywanie argumentów w rejestrach ..........................................................147
5.4. Przerwania programowe ...............................................................................................148
5.4.1. Polecenie INT.....................................................................................................149
5.4.2. Przekierowanie wejścia-wyjścia ........................................................................150
5.5. Wywołania funkcji MS-DOS........................................................................................151
5.5.1. Funkcje wyjścia..................................................................................................151
5.5.2. Funkcje wejścia ..................................................................................................152
5.5.3. Funkcje daty i czasu ...........................................................................................157
5.6. Obsługa klawiatury na poziomie BIOS (INT 16h).......................................................158
5.7. Sterowanie grafiką na poziomie BIOS (INT 10h) ........................................................160
5.7.1. Tryby wideo i atrybuty .......................................................................................160
5.7.2. Kolorowy tryb tekstowy.....................................................................................162
5.7.3. Funkcje grafiki INT 10h.....................................................................................164
5.7.4. Bezpośredni zapis do pamięci wideo .................................................................171
5.8. Rekurencja ....................................................................................................................172
5.9. Pytania kontrolne ..........................................................................................................174
5.10. Zadania programistyczne ............................................................................................177
Rozdział 6.
2T\GVYCT\CPKG YCTWPMQYG
6.1. Polecenia operacji logicznych i porównania ................................................................181
6.1.1. Rejestr Flags .......................................................................................................181
6.1.2. Polecenie AND...................................................................................................182
6.1.3. Polecenie OR......................................................................................................183
6.1.4. Polecenie XOR ...................................................................................................185
6.1.5. Polecenie NOT ...................................................................................................186
6.1.6. Polecenie NEG ...................................................................................................186
6.1.7. Polecenie TEST..................................................................................................186
6.1.8. Polecenia BT, BTC, BTR i BTS ........................................................................187
#UGODNGT FNC RTQEGUQTÎY +PVGN 8CFGOGEWO RTQHGULQPCNKUV[
6.1.9. Polecenia BSF i BSR..........................................................................................188
6.1.10. Polecenie CMP .................................................................................................188
6.1.11. Polecenie CMPXCHG......................................................................................190
6.1.12. Operatory logiczne asemblera ..........................................................................190
6.2. Skoki warunkowe .........................................................................................................191
6.2.1. Polecenie Jwarunek ............................................................................................191
6.2.2. Generowanie kodu dla skoków warunkowych (dla procesorów 386 i nowszych)....194
6.2.3. Przykłady zastosowania skoków warunkowych ................................................195
6.2.4. Polecenie SETwarunek ......................................................................................200
6.3. Pętle warunkowe...........................................................................................................201
6.3.1. Polecenia LOOPZ i LOOPE ..............................................................................201
6.3.2. Polecenia LOOPNZ i LOOPNE.........................................................................202
6.4. Struktury logiczne wysokiego poziomu .......................................................................202
6.4.1. Prosta instrukcja IF.............................................................................................203
6.4.2. Zło ona instrukcja IF .........................................................................................203
6.4.3. Struktura WHILE ...............................................................................................204
6.4.4. Struktura REPEAT-UNTIL................................................................................205
6.4.5. Struktura CASE..................................................................................................207
6.4.6. Tablica przesunięć procedur...............................................................................208
6.4.7. Automat o skończonej liczbie stanów ................................................................209
6.5. Pytania kontrolne ..........................................................................................................213
6.6. Zadania programistyczne ..............................................................................................216
Rozdział 7.
1RGTCELG PC NKE\DCEJ EC MQYKV[EJ
7.1. Polecenia przesunięcia i obrotu ....................................................................................223
7.1.1. Polecenie SHL....................................................................................................223
7.1.2. Polecenia SHLD i SHRD ...................................................................................225
7.1.3. Polecenie SHR....................................................................................................226
7.1.4. Polecenia SAL i SAR .........................................................................................226
7.1.5. Polecenie ROL ...................................................................................................227
7.1.6. Polecenie ROR ...................................................................................................228
7.1.7. Polecenia RCL i RCR ........................................................................................228
7.2. Przykładowe zastosowania ...........................................................................................229
7.2.1. Jednoczesne przesunięcie wielu bajtów .............................................................229
7.2.2. Szybkie mno enie i dzielenie .............................................................................230
7.2.3. Wyświetlenie bajta w formacie binarnym..........................................................230
7.2.4. Wydzielenie ciągu bitowego ..............................................................................231
7.2.5. Dyrektywa RECORD .........................................................................................232
7.3. Rozszerzone operacje dodawania i odejmowania ........................................................235
7.3.1. Polecenie ADC ...................................................................................................235
7.3.2. Polecenie SBB....................................................................................................236
7.4. Mno enie i dzielenie .....................................................................................................237
7.4.1. Polecenie MUL ..................................................................................................238
7.4.2. Polecenie IMUL .................................................................................................239
7.4.3. Polecenie DIV ....................................................................................................240
7.4.4. Polecenie IDIV ...................................................................................................241
7.4.5. Polecenia CBW, CWD, CDQ i CWDE..............................................................241
7.4.6. Zapobieganie przepełnieniu dzielenia ................................................................242
7.5. Zastosowanie — bezpośrednie wyjście wideo .............................................................243
7.5.1. Procedura Set_videoseg .....................................................................................243
7.5.2. Procedura Writechar_direct................................................................................243
7.5.3. Procedura Writestring_direct .............................................................................244
7.6. Operacje na liczbach ASCII i upakowanych liczbach dziesiętnych.............................245
7.6.1. Polecenie AAA...................................................................................................246
7.6.2. Polecenie AAS ...................................................................................................246
Zgłoś jeśli naruszono regulamin