36 Zrozumieć Asembler
siętne odpowiedniki każdej kolumny szesnastkowej i następnie dodaj je otrzymując wartość liczby dziesiętnej.
CCH 157H D8H BB29H 7 A H 8177H A01 1 H 99 H 2B36H F AC EH 8DB3H BACAH
A teraz pozamieniaj poniższe liczby dziesiętne na heksadecymal-ne. Przypominam ogólną metodę: z tabeli 1.6 wybierz kolumnę najwyższej potęgi liczby 16, która jeszcze mieści się w liczbie dziesiętnej lub w pozostałym wyniku odejmowania. Oblicz ilokrotnie ta wartość kolumny mieści się w (pozostałej) liczbie dziesiętnej i zapisz tę krotność jako kolejną cyfrę heksadecymalną. Następnie przemnóż tę krotność przez wartość kolumny (czyli dziesiętny odpowiednik liczby he-ksadecymalnej przez daną potęgę liczby 16) i odejmij wynik mnożenia od liczby dziesiętnej. Wynik odejmowania (reszta) będzie liczbą dziesiętną, w której będzie się mieściła ileśkrotnie wartość kolejnej (niższej) kolumny, czyli kolejnej mniejszej potęgi liczby 16. W ten sposób ustalaj krotności dla kolejnych mniejszych potęg liczby 16, aż do potęgi 0, czyli kolumny jednostek.
39
413
22
6 992 41
307
1 1 2 374 777
(Specjalna premia za ostatnią liczbę!)
Jeśli potrzebujesz więcej praktyki, wybierz sobie jakieś liczby dziesiętne i przekształć je na heksadecymalne i z prowrotem.
Programując w Asemblerze będziesz nabierał wprawy w arytmetyce w systemie szesnastkowym. Może nawet dojdziesz do lego, że działania w systemie szesnastkowym będziesz wykonywał bezpośrednio w pamięci. (Czasami wydaje mi się, że w mojej głowie zagnieździł się kalkulator szesnastkowy.) Wszystko to jest tylko kwestią praktyki.
Dodawanie i odejmowanie nic różnią się w zasadniczy sposób od działań w systemie dziesiętnym. Mamy jedynie do dyspozycji kilka cyfr więcej. Cała trudność sprowadza się do zapamiętania tabliczki dodawania w zakresie do OFH. Nie chodzi tu o myślenie w taki sposób: „jeśli C jest 12, a F jest 15, to C+F jest 12+15, czyli 27 dziesiętnie, co daje 1BH”. Zamiast tego należy dojść do bezpośredniego myślenia „C+F wynosi 1BH”.
Do tego oczywiście nie dojdziesz w ciągu jednego dnia. Każda rzecz wymaga trochę pracy. Tak samo trochę czasu będzie wymagało przyzwyczajenie się do podstawowych zasad programowania w Asemblerze.
Zacznijmy od prostych słupków rachunkowych:
9 |
8 |
7 |
6 |
5 | |
+ 1 |
+ 2 |
+ 3 |
+ 4 |
+ 5 | |
OAH |
OAH |
OAH |
OAH |
OAH | |
A |
9 |
8 |
7 |
6 | |
+ 1 |
+ 2 |
+ 3 |
+ 4 |
♦ 5 | |
OBH |
OBH |
OBH |
OBH |
OBH | |
B |
A |
9 |
8 |
7 |
6 |
+ 1 |
+ 2 |
+ 3 |
+ 4 |
+ 5 |
+ 6 |
OTF |
OCH |
trcTT |
OCH |
OcTT |
OTh |