Ta strona wykorzystuje pliki cookies. Korzystając ze strony, zgadzasz się na ich użycie. OK Polityka Prywatności Zaakceptuj i zamknij X

Zrozumieć assembler Jeff Duntemann

24-01-2012, 4:48
Aukcja w czasie sprawdzania była zakończona.
Cena kup teraz: 10 zł     
Użytkownik Alca311
numer aukcji: 2038506303
Miejscowość Nowa Sól
Wyświetleń: 18   
Koniec: 15-01-2012 07:19:18

Dodatkowe informacje:
Stan: Używany
Okładka: miękka
Rok wydania (xxxx): 1993
Język: polski
Tematyka: Asembler
info Niektóre dane mogą być zasłonięte. Żeby je odsłonić przepisz token po prawej stronie. captcha

Spis treści Rozdział 0 – Następny sobotni poranek 1 Co komputer naprawdę potrafi? 0.1 Wszystko można zaplanować 2 0.1.1 Kroki i sprawdzenia 3 0.1.2 A jeśli istnieje więcej niż dwie możliwości? 4 0.1.3 Komputery myślą tak jak my 5 0.2 Metafory 6 0.3 Czy to już Asembler ? 7 0.3.1 Gra „Big Bux” 7 0.3.2 Gramy w Big Bux 10 0.3.3 Zagrajmy w programowanie w Asemblerze 11 0.3.4 Kody i dane 11 0.3.5 Adresowanie 14 0.3.6 Podobieństwa 14 Rozdział 1 – Obce bazy 17 Dwójkowy, szesnastkowy i inne systemy liczbowe 1.1 Powrót matematycznego smoka 18 1.2 Liczymy po marsjańsku 19 1.2.1 Analiza marsjańskiej liczby 21 1.2.2 Podstawy systemów liczbowych 23 1.3 System ósemkowy: jak ukradziono 8 i 9 23 1.3.1. Kto ukradł 8 i 9? 24 1.4 System szesnastkowy: skróty liczb dwójkowych 28 1.5 Zamiana liczb szesnastkowych na dziesiętne i odwrotnie 31 1.5.1 Przeliczanie liczb szesnastkowych na dziesiętne 32 1.5.2 Przeliczanie liczb dziesiętnych na szesnastkowe 33 1.5.3 Poćwiczmy! 35 1.6 Arytmetyka w systemie szesnastkowym 37 1.6.1 Kolumny i przeniesienia 40 1.6.2 Odejmowanie i pożyczki 40 1.6.3 Pożyczka poprzez szereg kolumn 42 1.6.4 Co na podsumowanie? 43 1.7 Liczby dwójkowe 43 1.7.1 Wartości liczb dwójkowych 45 1.7.2 Dlaczego dwójkowo? 47 1.8 System szesnastkowy jest skrótem systemu dwójkowego 47 Rozdział 2 – Co kryje się pod obudową komputera? 51 Czym tak naprawdę są komputery? 2.1 RAX - mój pierwszy komputer 52 2.1.1 Gus i jego pomoc 53 2.2 Przełączniki, tranzystory i pamięć 54 2.2.1 Przełączniki tranzystorowe 54 2.2.2 Mnóstwo bitów 56 2.2.3 Swobodny dostęp 57 2.2.4 Czas dostępu do pamięci 59 2.2.5 Bajty, słowa i podwójne słowa 60 2.2.6 Banki pamięci 61 2.3 Sterownia i linie łączności 63 2.3.1 Centrum sterowania 63 2.3.2 Pamięć operacyjna 64 2.3.3 Magistrale 65 2.3.4 Wewnątrz mikroprocesora 66 2.3.5 Ośrodki wykonawcze 67 2.4 Czy to liczba, czy instrukcja? 68 2.4.1 Pobierz i wykonaj 69 2.4.2 Budowa mikroprocesora 70 2.4.3 Zmieniamy kurs 71 2.4.4 Zgodnie z planem 72 Rozdział 3 – Asembler, linker i inne 73 Jak tworzymy programy w Asemblerze? 3.1 „Nagość z sińcami” i inne radosne twórczości 74 3.1.1 Tu nie ma katalogu wyrobów gotowych 74 3.2 DOS i pliki DOS 75 3.2.1 Pan każe, sługa musi... 76 3.2.2 Pliki DOS i pamięci magnetyczne 76 3.2.3 Pliki binarne 78 3.2.4 Pliki tekstowe 78 3.2.5 Edytory tekstu 81 3.3 Kompilatory i asemblery 82 3.3.1 Język Asemblera 82 3.3.2 Komentarze 84 3.3.3 Zawsze stosuj komentarze! 84 3.3.4 Kod obiektowy oraz linker 85 3.3.5 Plik programu wykonywalnego 87 3.3.6 MASM oraz TASM 87 3.3.7 Podkatalog roboczy 88 3.4 Proces tworzenia programu w języku Asemblera 89 3.4.1 Asemblowanie kodu źródłowego 89 3.4.2 Błędy wykrywane przez Asembler 91 3.4.3 Z powrotem w edytorze 93 3.4.4 Ostrzeżenia Asemblera 94 3.4.5 Linkowanie 95 3.4.6 Błędy wykryte przez linker 97 3.4.7 Sprawdzanie plików .EXE 97 3.4.8 „Pluskwy” kontra błędy 98 3.4.9 Debugger, czyli „odpluskwiacz” 99 3.5 Jak używać DEBUG? 100 3.5.1 Główne funkcje DEBUG 100 3.5.2 Bierzemy DEBUG w obroty 102 3.5.3 Wyświetlamy zawartość pamięci 102 3.5.4 „Śmieci” w pamięci 103 3.5.5 Zmieniamy zawartość pamięci 104 3.5.6 Niebezpieczeństwo modyfikowania plików 105 3.5.7 Sprawdzanie i zmiana zawartości rejestrów 107 3.5.8 Najlepszy przyjaciel hackera 110 Rozdział 4 – Asembler i edytor 111 4.1 Twój warsztat pracy 112 4.2 Praca w edytorze 113 4.3 Asemblacja 113 Rozdział 5 – Niewygodny związek 115 Rejestry i pamięć segmentowana 5.1 Zaglądamy przez „dziurkę od klucza” 116 5.1.1 Istota megabajtów 116 5.1.2 16-bitowy ślepiec 118 5.2 Pamięć podzielona na segmenty 119 5.2.1 Natura segmentów 120 5.2.2 Wielkość segmentu 121 5.2.3 Jak stworzyć 20-bitowy adres przy pomocy 16-bitowych rejestrów 123 5.3 Rejestry oraz adresy pamięci 125 5.3.1 Rejestry ogólnego przeznaczenia 127 5.3.2 Połówki rejestrów 127 5.3.3 Wskaźnik instrukcji 128 5.3.4 Rejestr znaczników 129 5.3.5 DEBUG i zmiana zawartości rejestrów 130 5.3.6 DEBUG i podgląd pamięci obrazu 131 5.3.7 Odczytywanie daty aktualizacji BIOS 135 5.3.8 Jak BIOS przejmuje kontrolę nad maszyną 136 Rozdział 6 – Dokładnie według instrukcji 139 Zapoznajemy się bliżej z instrukcjami maszynowymi 6.1 Asemblacja i wykonywanie instrukcji maszynowych przy pomocy DEBUG 140 6.1.1 Asemblujemy instrukcję MOV 141 6.1.2 Wykonanie instrukcji MOV przy pomocy polecenia Trace 143 6.2 Instrukcje maszynowe i ich operandy 144 6.2.1 Operandy źródła i przeznaczenia 144 6.2.2 Dane natychmiastowe 146 6.2.3 Dane rejestrowe 146 6.2.4 Dane pamięciowe 149 6.2.5 Ukryte możliwości BX 150 6.2.6 Używanie danych pamięciowych 151 6.2.7 Domyślnie przyjmowany rejestr segmentowy 151 6.2.8 Zmiana domyślnych założeń przy adresowaniu pamięci 152 6.2.9 Dane pamięciowe - podsumowanie 153 6.2.10 Ograniczenia instrukcji MOV 155 6.3 Opisy instrukcji języka Asemblera 156 6.3.1 „Niebieskie karty” 156 6.4 Opisy instrukcji Asemblera dla początkujących 157 6.4.1 Znaczniki 159 6.4.2 Formy poprawne 159 6.4.3 Symbole operandów 160 6.4.4 Przykłady 161 6.4.5 Uwagi 161 6.4.6 Czego tutaj nie ma... 162 6.5 Flaga w górę! 163 6.5.1 Pamiętaj o znacznikach! 165 6.5.2 Dodawanie i odejmowanie 1 za pomocą INC oraz DEC 166 6.5.3 Oglądanie znaczników za pomocą DEBUG 167 6.6 Używanie specyfikatorów typu danych 169 6.6.1 Typy danych w języku Asemblera 170 Rozdział 7 – Wszystko zaczyna się łączyć 173 Tworzenie działających programów 7.1 Szkielet programu Asemblerowego 174 7.1.1 Trzy segmenty 176 7.1.2 Etykiety 177 7.1.3 Zmienne 178 7.1.4 Ciągi znaków 179 7.1.5 Dyrektywy kontra mnemoniki 180 7.1.6 Różnica między adresem zmiennej a jej zawartością 181 7.1.7 Dyrektywa ASSUME 182 7.1.8 Główny program w postaci procedury 185 7.1.9 Wybór punktu startowego 186 7.2 Ostatni przychodzi, pierwszy wychodzi 187 7.2.1 Pięćset talerzy na godzinę 187 7.2.2 Segment obrócony do góry nogami 188 7.2.3 Zdejmujemy ze stosu 191 7.2.4 Przechowywanie krótkoterminowe 192 7.2.5 Określanie rozmiarów stosu 194 7.3 Usługi DOS wywoływane przerwaniami INT 196 7.3.1 Przerwanie, które niczego nie przerywa 197 7.3.2 Wracamy do domu 202 7.3.3 Przerwania programowe, a przerwania sprzętowe 204 7.4 Podsumowanie i analiza EAT.ASM 206 7.4.1 Definicja segmentu i kolejność segmentów 206 7.4.2 Definicja zmiennej i rezerwacja obszaru dla stosu 207 7.4.3 Tworzenie segmentu kodu 208 7.4.4 Działanie programu EAT.ASM 210 Rozdział 8 – Dziel i rządź... 213 Procedury i makroinstrukcje upraszczają program 8.1 Programowanie po marsjańsku 214 8.2 Pudełko wewnątrz pudełka 214 8.2.1 Procedury jak pudełka z fragmentami kodów 216 8.2.2 Wywoływanie i powrót 218 8.2.3 Wywołanie wewnątrz wywołania 221 8.2.4 Kiedy zamieniać fragment programu na procedurę? 222 8.3 Usługi BIOS 224 8.3.1 Kursor, na miejsce! 224 8.3.2 Usługa VIDEO nr 6 226 8.3.3 Procedury o wielu punktach wejściowych 226 8.3.4 Dane pamięciowe czy dane natychmiastowe? 229 8.3.5 Komentarze informacyjne w nagłówku 230 8.4 Tworzenie zewnętrznych bibliotek procedur 236 8.4.1 Deklaracje publiczne i zewnętrzne 237 8.4.2 Mechanizm działania danych publicznych i zewnętrznych 238 8.4.3 Rozdzielanie segmentu pomiędzy kilka modułów 244 8.4.4 Program główny 245 8.4.5 Łączenie modułów 248 8.4.6 Moduły zewnętrzne - podsumowanie 248 8.5 Tworzenie i wykorzystywanie makroinstrukcji 249 8.5.1 Makroinstrukcje czy procedury: wady i zalety 250 8.5.2 Mechanizm działania makroinstrukcji 252 8.5.3 Makroinstrukcja z parametrami 252 8.5.4 Mechanizm działania parametrów makroinstrukcji 253 8.5.5 Lokalne etykiety wewnątrz makroinstrukcji 254 8.5.6 Biblioteki makroinstrukcji 255 Rozdział 9 – Zagłębiamy się w szczegóły 261 Bity, znaczniki, skoki i tabele 9.1 Bit jest bitem (bajt jest bitami) 262 9.1.1 Numerowanie bitów 263 9.1.2 Jim, to jest logiczne! 263 9.1.3 Instrukcja AND 264 9.1.4 Maskowanie bitów 265 9.1.5 Instrukcja OR 266 9.1.6 Instrukcja XOR 267 9.1.7 Instrukcja NOT 267 9.1.8 Na rejestrach segmentowych nie można wykonywać operacji logicznych! 268 9.2 Przesuwanie bitów 269 9.2.1 O ile przesunąć? 269 9.2.2 Jak działa przesuwanie bitów 270 9.2.3 Przesuwanie bitu przez znacznik przeniesienia 270 9.2.4 Przetwarzanie liczb na możliwe do wyświetlenia ciągi znaków 271 9.2.5 Dzielenie bajtów na pół 272 9.2.6 Wykorzystanie tabel przeglądowych 273 9.2.7 Przesuwamy cztery starsze bity w miejsce młodszych 275 9.2.8 Przekształcanie słów na odpowiadający im ciąg 276 9.3 Znaczniki, sprawdzenia i rozgałęzienia 278 9.3.1 Skoki bezwarunkowe 278 9.3.2 Skoki warunkowe 279 9.3.3 Strzeż się nieskończonych pętli! 280 9.3.4 Skok przy niespełnieniu warunku 280 9.3.5 Znaczniki 281 9.3.6 Porównywania przy pomocy instrukcji CMP 282 9.3.7 Dżungla instrukcji skoków 283 9.3.8 Większe niż czy ponad? 284 9.3.9 Jaką masz kartę graficzną? 286 9.3.10 Sprawdzanie bitów przy pomocy instrukcji TEST 290 9.3.11 Znowu gubimy wynik... 290 9.3.12 Możliwości TEST 292 9.4 Znowu tabele... 293 9.4.1 Jeszcze jedna tablica przeglądowa 293 9.4.2 Przesuwając bity, mnożymy je przez potęgę dwójki 295 9.4.3 Tablice wewnątrz tablic 296 9.4.4 Adresowanie indeksowe względem bazy z przemieszczeniem 301 9.4.5 Odczytywanie liczby wierszy wyświetlanych na ekranie 303 9.4.6 Program wyświetlający, jaką mamy kartę graficzną 303 Rozdział 10 – Strzały w pamięci 315 Instrukcje operujące na łańcuchach 10.1 Łańcuchy w Asemblerze 316 10.1.1 Definicja łańcucha w Asemblerze 317 10.1.2 Łańcuch źródłowy i łańcuch docelowy 317 10.2 REP STOSW - programowa broń automatyczna 318 10.2.1 Seria strzałów do bufora video 318 10.2.2 Co naprawdę robi instrukcja STOSW 320 10.2.3 STOSW i znacznik kierunku DF 322 10.3 STOSW bez przedrostka REP, czyli “broń półautomatyczna” 323 10.3.1 Kto zmniejsza CX? 323 10.3.2 Instrukcja LOOP 324 10.3.3 Wyświetlanie linijki na ekranie 325 10.3.4 IMUL - mnożenie 326 10.3.5 Ograniczone możliwości makroinstrukcji 328 10.3.6 Dodawanie liczb w ASCII 329 10.3.7 Korekcja po korekcji AAA 332 10.3.8 Linijkowa lekcja 333 10.4 Zapisywanie danych do pamięci w sposób nieciągły 334 10.4.1 Szybkie wyświetlanie tablicy znaków ASCII 334 10.4.2 Stałe jako operandy 336 10.4.3 Obliczenia w trakcie asemblacji 337 10.4.4 Pętle zagnieżdżone 339 10.4.5 Skok, kiedy CX osiągnie zero 339 10.4.6 Zamknięcie pętli wewnętrznej 340 10.4.7 Pętla zewnętrzna 341 10.4.8 Podsumowanie SHOWCHAR.ASM 342 10.4.9 Inne instrukcje łańcuchowe 342 10.4.10 Tworzymy własny zestaw narzędzi programowych 343 Rozdział 11– Świat się zmienia ... 345 Oprogramowanie nowszych procesorów 11.1 Krótka historia wojen mikroprocesorowych 346 11.1.1 Upadek 347 11.1.2 Nowy szef 348 11.2. Nowe horyzonty 349 11.2.1 Extendery DOS 349 11.2.2 Windows 3.0 350 11.2.3. Programowanie sterowane wydarzeniami 350 11.2.4 Język Asemblera w Windows 352 11.3 Wykorzystanie “nowych” instrukcji 80[zasłonięte] 353 11.3.1 W dalszym ciągu 16 bitów 353 11.3.2 386DX i 386SX 355 11.3.3 Rejestry na stos 355 11.3.4 Bardziej uniwersalne przesunięcia i obroty 356 11.3.5 Ograniczenie liczby przesunięć i obrotów 357 11.3.6 Instrukcja, której prawdopodobnie nigdy nie użyjesz 358 11.4 32 bity w mikroprocesorach 386 i 486 360 11.4.1 Większe rejestry ogólnego przeznaczenia 360 11.4.2 Nowe rejestry segmentowe 362 11.4.3 Nie tylko w trybie chronionym! 363 11.4.4 Powiadom Asembler, co będziesz robił 363 11.5 Nowe instrukcje 386/486 364 11.5.1 32-bitowe rejestry na stos 366 11.5.2 Sprawdzanie bitów wyzerowanych przy pomocy instrukcji BT 366 11.5.3 Staraj się szukać jedynek instrukcją TEST 367 11.6 Wykrywanie, jaki procesor wykonuje Twój program 367 11.6.1 Bezpieczne wykonywanie programów 368 11.6.2 Identyfikacja procesora 369 11.6.3 Poszukiwanie 8088 i 8086 369 11.6.4 Czy mamy 286? 370 11.6.5 386 czy 486? 371 11.6.6 Wyrównywanie adresu do granicy podwójnych słów 372 11.6.7 Ostatni test 373 11.6.8 Program WHATAMI.ASM 373 11.6.9 Przekazywanie wartości do zmiennej ERRORLEVEL 374 Rozdział 12 – Wnioski 379 To wcale nie koniec, lecz początek... 12.1 I co dalej? 381 12.2 Następny krok ku wtajemniczeniu 383 Załącznik A – Wybór podstawowych instrukcji 8086/8088 385 Uwagi do opisów instrukcji 386 Załącznik B – Rozszerzona tablica znaków ASCII 437 Załącznik C – Domyślne rejestry segmentowe 443 Skorowidz 445