Výuka assembleru
2. Šestnáctková soustava
Šestnáctková (hexadecimální) soustava je pro programátory píšící v assembleru (ale i v C/C++) důležitá. V šestnáckové soustavě se uvádějí paměťové adresy kódy instrukcí, hodnoty pro bitové masky a často i obyčejné číselné hodnoty. Také hexa editory a disassemblery poskytují výstup v šestnáctkové soustavě.
Označení šestnáctková soustava znamená, že obsahuje šestnáct číslic. Desítková soustava, kterou běžně používáme v "neprogramátorském" životě, má číslic deset. K zápisu šestnáckové soustavy se používají arabské číslice (kterých je deset) a písmena A B C D E F (malá nebo velká). Aby bylo jasné, že číslo je zapsané v šestnáctkové soustavě, píšeme za číslicí písmeno h (v C/C++ je to prefix 0x). Pokud číslice začíná písmenem (např. F000h), je navíc nutné před písmeno dopsat nulu (0F0000h), jinak překladač assembleru považuje číslici za symbol a hlásí chybu.
Desítková soustava | 0 1 2 3 4 5 6 7 8 9 |
Šestnáctková soustava | 0 1 2 3 4 5 6 7 8 9 A B C D E F |
Řádové přechody v desítkové soustavě jsou mocninami 10ti, v šestnáctkové soustavě jsou to mocniny 16ti:
Desítková soustava | Šestnáctková soustava | ||||
---|---|---|---|---|---|
|
|
Z předcházející tabulky vyplývá, že 10h = 16, 100h = 256, 1000h = 4096 atd (pokud si nepamatujete mocniny 16ti, pomůže vám vědecká kalkulačka, obsažená ve Windows). Dále to znamená, že
20h 123h 2000h |
= 2*16^1 = = 1*16^2 + 2*16^1 + 3*16^0 = = 2*16^3 = |
32 291 8192 |
Hodnota napsaná jednou číslicí v šestnáctkové soustavě je čtyřbitové číslo. Hodnota napsaná dvěma číslicemi v šestnáctkové soustavě je osmibitové číslo. Pokud jsou registry procesoru x86 32bitové, znamená to tedy, že hodnota v nich obsažená je popsána osmi hexadecimálními číslicemi. V assembleru i v C/C++ se velice často používá 32bitový zápis:
00000001h 00000200h F0000000h |
místo místo místo |
1 512 4026531840 |
Není úplně nutné převádět mezi šestnáctkovou a desítkovou soustavou ručně. Velice dobře nám k tomu poslouží vědecká verze kalkulačky ve Windows (stejně jako i normální "kamenná" kalkulačka. Nejrychleji spustíme kalkulačku tak, že na příkazový řádek (nebo do okna, které se objeví po stisku kláves Win+R) napíšeme calc. Pro převod z desítkové soustavy do šestnáctkové přepneme do desítkového režimu (přepínač Dec), napíšeme číslo a přepneme do šestnáctkového režimu (tlačítko Hex). Obdobný postup platí i obráceně.
Copyright Ladislav Zezula 2003