Dlaczego system szesnastkowy?
Część sekcji Podstawy ścieżki Assembly w Coddy. Lekcja 10 z 45.
Wiesz już, że komputery używają systemu binarnego. Dlaczego więc programiści asemblera rzadko zapisują kod bezpośrednio w systemie binarnym?
Problem z systemem binarnym:
Liczby binarne są bardzo długie. Spójrz na ten przykład:
| Liczba | System binarny |
|---|---|
| 255 | 11111111 |
| 1000 | 1111101000 |
| 65535 | 1111111111111111 |
Zapisywanie długich ciągów jedynek i zer jest powolne, podatne na błędy i trudne do odczytania.
Rozwiązanie: system szesnastkowy (podstawa 16).
System szesnastkowy (lub „hex”) używa 16 symboli:
| Cyfra | Wartość |
|---|---|
| 0-9 | od 0 do 9 |
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
Dlaczego system szesnastkowy jest idealny dla komputerów:
Jedna cyfra szesnastkowa reprezentuje dokładnie 4 bity (pół bajta).
| Bity | Wymagana liczba cyfr szesnastkowych |
|---|---|
| 4 bity (półbajt) | 1 cyfra szesnastkowa |
| 8 bitów (1 bajt) | 2 cyfry szesnastkowe |
| 16 bitów (2 bajty) | 4 cyfry szesnastkowe |
| 32 bity (4 bajty) | 8 cyfr szesnastkowych |
| 64 bity (8 bajtów) | 16 cyfr szesnastkowych |
Ta sama liczba, trzy sposoby zapisu:
| Dziesiętny | Binarny | Szesnastkowy |
|---|---|---|
| 255 | 11111111 | FF |
| 1000 | 1111101000 | 3E8 |
| 65535 | 1111111111111111 | FFFF |
Zwróć uwagę, o ile krótszy jest zapis szesnastkowy od binarnego.
Gdzie spotkasz zapis szesnastkowy w asemblerze:
- Adresy pamięci (takie jak
0x7FFFlub0x402000) - Kody ASCII (takie jak
0x41dla „A”,0x0adla znaku nowej linii)
- Wartości rejestrów w debuggerach
- Wartości kolorów (np.
0xFF0000dla czerwonego)
Liczby szesnastkowe zapisuje się z prefiksem:
| Prefiks | Przykład | Znaczenie |
|---|---|---|
0x | 0xFF | FF w systemie szesnastkowym (255 w systemie dziesiętnym) |
$ | $FF | To samo (używane w niektórych asemblerach) |
h | FFh | To samo (starszy zapis) |
W tym kursie używamy prefiksu 0x: 0x0a, 0x41, 0xFF.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
1Maszyna
Czym jest CPUPamięćRejestry a pamięćJak działają instrukcjeWzorzec dwóch plikówArchitektura x86-642Systemy liczbowe
Dlaczego system binarny?Liczby binarneZamiana z systemu dziesiętnego na binarnyDlaczego system szesnastkowy?Zamiana z systemu szesnastkowego na dziesiętnyZamiana z systemu dziesiętnego na szesnastkowyASCII i system szesnastkowy5Wywołanie systemowe zakończenia
Czym jest syscall?Wywołanie systemowe zakończenia (60)Kody zakończeniaPodsumowanie: prawidłowe zakończeniePoćwicz samodzielnie: Edytor online Assembly