Asembler - Operacje na Plikach.pdf

(400 KB) Pobierz
C:\Andrzej\PDF\ABC nagrywania p³yt CD\1 strona.cdr
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Assembler dla procesorów
SPIS TRECI
Intel. Vademecum
KATALOG KSI¥¯EK
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
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
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ê bezporednio do sprzêtu, wykorzystuj¹cych w 100% mo¿liwoci
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 tekcie. Znajduj¹ce siê na koñcu ksi¹¿ki dodatki stanowi¹
przewodniki po przerwaniach MS-DOS i mnemonikach kodu maszynowego.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
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
8142004.001.png 8142004.002.png 8142004.003.png 8142004.004.png
 
Rozdział 1.
1.1. Kontekst jzyka asembler...............................................................................................21
1.1.1. Czym jest jzyk asembler?...................................................................................22
1.1.2. Aplikacje w jzyku asembler...............................................................................23
1.1.3. Jzyk maszynowy.................................................................................................25
1.2. Reprezentacja danych.....................................................................................................26
1.2.1. Liczby binarne......................................................................................................26
1.2.2. Konwersja liczb dwójkowych na dziesitne........................................................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 jzyka asembler................................................................................33
1.3.1. Polecenia jzyka asembler ...................................................................................33
1.3.2. Prosty program napisany w Debug......................................................................34
1.3.3. Polecenia narzdzia Debug..................................................................................36
1.4. Pytania kontrolne............................................................................................................37
Rozdział 2.
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 pami4...........................................................................................50
2.3.1. Historia obsługi pamici w komputerach PC.......................................................50
2.3.2. Architektura pamici............................................................................................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. Pami4 tylko do odczytu (ROM) .........................................................................55
2.3.7. Obliczanie adresu absolutnego.............................................................................55
2.4. Komponenty mikrokomputera........................................................................................56
2.4.1. Wewntrzne komponenty.....................................................................................56
2.4.2. Rodzaje płyt głównych.........................................................................................57
2.4.3. Architektura magistrali.........................................................................................57
2.4.4. Karta graficzna.....................................................................................................58
2.4.5. Pami4 RAM........................................................................................................59
2.4.6. Pami4 wideo.......................................................................................................61
2.4.7. No=niki danych.....................................................................................................61
2.5. Pytania kontrolne............................................................................................................64
2.6. Zadania programistyczne................................................................................................66
Rozdział 3.
!
3.1. Podstawowe elementy jzyka 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 jzyku 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 przesuniciem.............................................................94
3.9. Pytania kontrolne............................................................................................................95
3.10. Zadania programistyczne..............................................................................................98
Rozdział 4.
"# $
4.1. Dodatkowe informacje o asemblerze i konsolidatorze.................................................101
4.1.1. Plik kodu Gró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 pamici..................................................................................................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
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=4 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łJczonej do ksiJ>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.
%!
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 pamici.......................................................................................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 grafikJ 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 pamici wideo.................................................................171
5.8. Rekurencja....................................................................................................................172
5.9. Pytania kontrolne..........................................................................................................174
5.10. Zadania programistyczne............................................................................................177
Rozdział 6.
&
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
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. Ptle 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 przesuni4 procedur...............................................................................208
6.4.7. Automat o skoKczonej liczbie stanów................................................................209
6.5. Pytania kontrolne..........................................................................................................213
6.6. Zadania programistyczne..............................................................................................216
Rozdział 7.
' ( %
7.1. Polecenia przesunicia 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 przesunicie 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 ciJgu 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 dziesitnych.............................245
7.6.1. Polecenie AAA...................................................................................................246
7.6.2. Polecenie AAS...................................................................................................246
Zgłoś jeśli naruszono regulamin