Tytuł Asembler. Wykłady i ćwiczenia Autor Stanisław Kruk Język polski Wydawnictwo Wydawnictwo Naukowe PWN ISBN 978-83-01-15931-3 Rok wydania 2009 Warszawa Wydanie 1 ilość stron 304 Format pdf Spis treści Od Autora 8 1. Podstawy Asemblera 9 1.1. Natura języka Asembler 9 1.2. Architektura sprzętowa komputera 10 1.3. Powstawanie i rozwój języka Asembler 10 1.4. O praktyczności programów 11 1.5. Procesory, pamięć i jej adresowanie; przechowywanie odwrotne 11 1.6. Wejście/wyjście 14 1.7. Przerwania; wektory przerwań 15 2. Rejestry 17 2.1. Rejestry powszechnego wykorzystania 18 2.2. Rejestry wskaźnikowe i indeksowe 20 2.3. Rejestry segmentowe 22 2.4. Wskaźnik rozkazów 25 2.5. Rejestr wyraźników 25 3. Oprogramowanie systemowe DOS i BIOS 27 3.1. Funkcje BIOS 29 4. „Towarzysze" głównego procesora 31 5. Zróżnicowane systemy liczenia 33 5.1. Dwójkowy system liczenia 34 5.2. Szesnastkowy system liczenia 35 5.3. Elementarne operacje logiczne NOT, OR, AND; prawa de Morgana 36 5.4. Liczby dwójkowe bez znaku i ze znakiem; uzupełnienie do dwóch; kod BCD 39 5.5. Proste działania na ilośćch szesnastkowych 42 6. Program uruchomieniowy DEBUG 44 6.1. Polecenia 44 6.2. Proste programy pod DEBUG-iem 51 6.3. Mocne strony, wady i możliwości programu DEBUG 55 7. Podstawy konstruowania programów w języku Asembler 57 7.1. Pole etykiety 61 7.2. Pole operacji (pole mnemonika) 62 7.3. Pole argumentów (operandów) 62 7.4. Pole komentarza 62 7.5. Tryby adresowania 62 7.6. Schemat tworzenia programu asemblerowego 66 8. Tablica wektorów przerwań 72 9. Dwa przerwania zwykle użytkowane w programach asemblerowych 76 INT 10H 76 INT 21H 78 10. Działania arytmetyczne na ilośćch dwójkowych, a także w kodzie BCD 82 10.1. Dodawanie (ADD, ADC) 82 10.2. Odejmowanie (SUB, SBB) 85 10.3. Mnożenie (MUL, IMUL) 86 10.4. Dzielenie (DIV, IDIV; CBW, CWD) 87 10.5. Negacja lub uzupełnienie do dwóch (NEG) 91 10.6. Inkrementacja i dekrementacja (INC, DEC) 92 10.7. Porównywanie (bajtów lub słów) przeznaczenia ze źródłem, CMP 92 11. Operacje logiczne 94 11.1. Negacja logiczna (bajtu lub słowa), NOT 94 11.2. Testowanie lub porównywanie logiczne (bajtu lub słowa), TEST 94 11.3. Mnożenie logiczne (bajtu albo słowa), AND 94 11.4. Dodawanie logiczne (bajtów lub słów), OR 95 11.5. Logiczna nierównoważność (bajtów lub słów), XOR 95 12. Rotacje i przesunięcia logiczne, a także arytmetyczne 96 12.1. Rotacja w lewo (bajtu lub słowa), ROL 96 12.2. Rotacja w prawo (bajtu albo słowa), ROR 97 12.3. Rotacja w lewo (bajtu albo słowa) z przeniesieniem, RCL 98 12.4. Rotacja w prawo (bajtu albo słowa) z przeniesieniem, RCR 98 12.5. Przesunięcie logiczne albo arytmetyczne (bajtu albo słowa) w lewo, SHL/SAL 99 12.6. Przesunięcie logiczne (bajtu lub słowa) w prawo, SHR 100 12.7. Przesunięcie arytmetyczne (bajtu lub słowa) w prawo, SAR 101 13. Przetwarzanie łańcuchów 103 13.1. Kopiowanie (bajtu lub słowa) z jednego miejsca pamięci do drugiego, MOVS, MOVSB, MOVSW 103 13.2. Kopiowanie zawartości rejestru AL lub AX do pamięci, STOS, STOSB, STOSW 105 13.3. Ładowanie (bajtu albo słowa) łańcucha z pamięci do AL albo AX, LODS, LODSB, LODSW 105 13.4. Porównywanie (bajtu lub słowa) dwóch łańcuchów CMPS, CMPSB, CMPSW; przedrostki REPE i REPNE 106 13.5. Porównywanie (bajtu lub słowa) łańcucha z zawartością rejestru akumulatora, AL lub AX, SCAS, SCASB, SCASW 108 14. Rozkazy sterujące 109 14.1. Rozkazy sterujące transmisją 109 14.1.1. Bezwarunkowe rozkazy skoku 109 14.1.2. Rozkazy skoków warunkowych 113 14.1.3. Rozkazy pętli programowych, LOOP, LOOPZ, LOOPNZ 115 14.2. Rozkazy sterujące procesorem: CLC, CLD, CLI, CMC, ESC, HLT, LOCK, NOP, STC, STD, STI, WAIT 116 15. Operacje na stosie i adresowanie 119 15.1. Rozkazy PUSH, POP 119 15.2. Rozkazy operujące na istotnikach PUSHF, POPF, LAHF, SAHF 119 15.3. Rozkazy wejścia-wyjścia: IN, OUT 120 15.4. Adresowanie pamięci, adres fizyczny, adres logiczny; przechowywanie odwrotne 120 15.5. Przedrostki (prefiksy) CS:, DS:, ES:, SS: i LOCK 121 15.6. Rozkazy operujące na adresach LEA, LES, LDS 123 16. Krótko o koprocesorze 8087 i jego programowaniu 124 16.1. Kilka dodatkowych uwag na temat programowania koprocesora 126 17. O ilośćch w koprocesorze i nie tylko 127 18. Narzędzia programisty 132 18.1. Turbo Debugger dla DOS 132 18.2. Turbo Librarian, Bibliotekarz (TLIB.EXE) – dla systemu DOS i Windows 138 19. Nowa era procesorów 151 20. Typy informacji 158 21. Technika MMX 160 22. Streaming SIMD Extensions (SSE) 163 23. Technologia AVX (Advanced Vector Extensions) 167 24. Asembler w środowisku Windows 168 25. Wydruk na pulpit 181 25.1. Wprowadzenie do aplikacji okienkowych w systemie Windows 185 25.2. Wybrane funkcje API – spis alfabetyczny 197 26. Świeże narzędzia programistyczne; program FASMW.EXE i OLLYDBG.EXE 199 Dodatek A. Kod ASCII 204 Dodatek B. Wpływ rozkazów na stan flag (wyraźników) rejestru EFLAGS 213 Dodatek C. Lista rozkazów: Intel 64 i IA-32 217 C.1. Rozkazy powszechnego używania 217 C.2. X87 FPU i SIMD zachowania i odtworzenia stanu rejestru kontrolnego i statusu, MXCSR 221 C.3. Rozkazy zaimplementowane w technologii MMXTM 223 C.4. Rozkazy SSE 225 C.5. Rozkazy SSE2 227 C.6. Rozkazy SSE3 230 C.7. Rozkazy SSSE3 231 C.8. Rozkazy SSE4 232 C.9. Rozkazy systemowe 234 C.10. Rozkazy trybu 32: podtryb 64 235 C.11. Virtual-Machine Extensions (VMX) 236 C.12. Safer Mode Extensions (SMX) 236 C.13. Rozkazy Intel AVX, FMA i AES 237 Dodatek D. Wybrane rejestry 239 D.1. Rejestr flagowy (EFLAGS) 239 D.2. Rejestry sterujące: CR0, CR1, CR2, CR3, CR4 239 D.3. MXCSR – rejestr sterujący/statusu 242 D.4. Rejestr XFEATURE _ENABLED_MASK (XCR0;Extended Control Registers) 242 Dodatek E. Fizyczne podstawy komputera kwantowego 244 nieznaczny słownik asemblerowy 247 Epilog 255 Ćwiczenia 256 Odpowiedzi do ćwiczeń 271 Indeks 298