34 Zrozumieć Asembler
nej sumy. Jedyne, co możemy zapamiętywać, to aktualna wartość reszty Natomiast 1 jest skrajną lewą cyfrą naszego wyniku, czyli liczby szesnastkowej, która będzie równowartością 449 dziesiętnie.
Ustaliliśmy, że 256 jest. tylko jednokrotnie zawarte w 449. Musimy teraz odjąć tę jednokrotną wartość 256 od naszej liczby. 449—256 = 193- Tę liczbę zapamiętujemy w kalkulatorze.
Przechodzimy do następnej kolumny po kolumnie 256, w kierunku na prawo. Jest to kolumna 16. Ile razy 16 zawarte jest w 193? 193/16=12.0625. Oznacza to, że kolumna 16 zawarta jest dwunasto-krotnie w heksadecymalnym odpowiedniku 449. Szesnastkowa cyfra odpowiadająca 12 dziesiętnie, nazywa się C. Możemy więc zapisać na naszej kartce z prawej strony 1, cyfrę C. Mamy początek liczby heksa-decymalnej 1C. Jak na razie, wszystko jest w porządku.
Podobnie jak w przypadku kolumny 256 musimy teraz odjąć ustaloną wielokrotność kolumny 16 od istniejącej ostatnio reszty obliczenia. 0*16=12*16=192. Odejmujemy 193-192=1. Pozostała nam tylko reszta równa 1.
Przechodzimy teraz do kolejnej prawej kolumny którą jest już kolumna jednostek. Wartość kolumny 1 mieści się oczywiście jednokrotnie w pozostałej reszcie 1. Tak więc z prawej strony dopisujemy cyfrę 1 i mamy całą liczbę szesnastkową 1C1. W ten sposób szesnastkowa liczba 1C1 jest odpowiednikiem liczby dziesiętnej 449.
Teraz zapewne powoli zaczynasz rozumieć, dlaczego Sidekick jest taki popularny.
Spójrzmy jeszcze raz na duży rysunek przekształcania liczb dziesiętnych na szesnastkowe. Poszukujemy kolumn szesnastkowych, które mieszczą się w liczbie dziesiętnej. Odszukujemy kolumnę o największej wartości, która mieści się jeszcze w liczbie dziesiętnej. Ustalamy ilokrotnie wartość tej kolumny mieści się w naszej liczbie i, po przemnożeniu wartości kolumny przez tę krotność, odejmujemy wynik od liczby dziesiętnej. Następnie przechodzimy do kolejnej mniejszej kolumny i ustalamy znowu ilokrotnie wartość tej kolumny mieści się w pozostałej reszcie liczby dziesiętnej. W ten sposób dzielimy liczbę dziesiętną na kolejne coraz mniejsze potęgi 16.
Spróbujmy z jeszcze jedną liczbą dziesiętną: 988 664.
Największą wartością kolumny, która mieści się w liczbie 988 664 (tabela 1.6), jest 65 536. Dzieląc 988 664 przez 65 536 otrzymujemy 15 i resztę. 15=F heksadecymalne. Zapisujemy F. Mnożymy F*65536 i wynik mnożenia odejmujemy od 988664. Zapamiętujemy sobie resztę odejmowania 5624. Przechodzimy do kolejnej kolumny, dzielimy 5624 przez 4096=1 i reszta. Zapisujemy 1 z prawej strony F.
Odejmujemy wynik mnożenia 1*4096 od istniejącej reszty: 5624-4096=1528. Zapamiętujemy nową resztę - wynik odejmowania, czyli 1528.
Przechodzimy do kolejnej kolumny o mniejszej wartości. 1528/ 256 = 5 z kawałkiem. Zapisujemy 5 (mamy teraz już FI5).
Odejmujemy wynik mnożenia 5*256 od reszty 1528. Zapamiętujemy nową resztę: 248.
Przechodzimy do kolejnej kolumny. 248/16 = 15 i coś po przecinku. 15 to F heksadecymalne. Do powstającej liczby heksadecymalnej dopisujemy F.
Odejmujemy F*16 od reszty 248. Nowy wynik odejmowania wynosi 8, które jest liczbą jednostek. Na końcu liczby heksadecymalnej dopisujemy 8.
W ten sposób mamy wynik: 988664 dziesiętnie równa się F15F8H.
Zwróć uwagę na H na końcu liczby heksadecymalnej. Od tego miejsca każda liczba szesnastkowa w tekście tej książki będzie oznaczona na końcu literą H. Jest to bardzo ważne, ponieważ nie wszystkie liczby heksadecymalne zawierają cyfry literowe. Na przykład 157H ma z całą pewnością inną wartość niż 157 dziesiętne. Tak samo przyzwyczaj się do zapisywania w swoich programach H na końcu każdej liczby heksadecymalnej. Będę Ci o tym przypominał.
Najlepszą (w rzeczywistości jedyną) metodą przyzwyczajenia się do liczb heksadecymalnych jest częste używanie ich. Przekształć każdą z poniższych liczb szesnastkowych na dziesiętne. Przyjrzyj się, ile jedynek mieści się w tej liczbie, ilokrotnie mieści się 16, jaka jest wielokrotność 256, jaka jest wielokrotność 4096 itd. Oblicz te dzie-