Introducció
En aquest tema, aprendrem sobre els sistemes de numeració binari i hexadecimal, que són fonamentals per a la programació en Assembly. Aquests sistemes són utilitzats per representar dades i instruccions a nivell de maquinari.
Sistemes de Numeració
Sistema Binari
El sistema binari és un sistema de numeració en base 2, que utilitza només dos dígits: 0 i 1. Cada dígit en un nombre binari es coneix com a bit (binary digit).
Exemples de Nombres Binaris:
- 0
- 1
- 10 (equivalent a 2 en decimal)
- 101 (equivalent a 5 en decimal)
Sistema Hexadecimal
El sistema hexadecimal és un sistema de numeració en base 16, que utilitza setze símbols: els dígits del 0 al 9 i les lletres de la A a la F, on A representa 10, B representa 11, i així successivament fins a F, que representa 15.
Exemples de Nombres Hexadecimals:
- 0x0
- 0x1
- 0xA (equivalent a 10 en decimal)
- 0x1F (equivalent a 31 en decimal)
Conversió entre Sistemes
Binari a Decimal
Per convertir un nombre binari a decimal, multipliquem cada bit pel valor de la seva posició (potència de 2) i sumem els resultats.
Exemple:
1011 (binari) a decimal:
- \(1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0\)
- \(1 \times 8 + 0 \times 4 + 1 \times 2 + 1 \times 1\)
- \(8 + 0 + 2 + 1 = 11\)
Decimal a Binari
Per convertir un nombre decimal a binari, dividim el nombre per 2 i anotem el residu. Repetim el procés amb el quocient fins que el quocient sigui 0. Els residus, llegits de baix a dalt, formen el nombre binari.
Exemple:
Convertir 13 (decimal) a binari:
- 13 ÷ 2 = 6 residu 1
- 6 ÷ 2 = 3 residu 0
- 3 ÷ 2 = 1 residu 1
- 1 ÷ 2 = 0 residu 1
Llegint els residus de baix a dalt: 1101
Binari a Hexadecimal
Per convertir un nombre binari a hexadecimal, agrupem els bits en grups de quatre, començant des de la dreta. Cada grup es converteix en el seu equivalent hexadecimal.
Exemple:
Convertir 11010110 (binari) a hexadecimal:
- Grups de quatre: 1101 0110
- 1101 = D
- 0110 = 6
Resultat: 0xD6
Hexadecimal a Binari
Per convertir un nombre hexadecimal a binari, convertim cada dígit hexadecimal al seu equivalent binari de quatre bits.
Exemple:
Convertir 0x3F (hexadecimal) a binari:
- 3 = 0011
- F = 1111
Resultat: 00111111
Taula de Conversió
Decimal | Binari | Hexadecimal |
---|---|---|
0 | 0000 | 0x0 |
1 | 0001 | 0x1 |
2 | 0010 | 0x2 |
3 | 0011 | 0x3 |
4 | 0100 | 0x4 |
5 | 0101 | 0x5 |
6 | 0110 | 0x6 |
7 | 0111 | 0x7 |
8 | 1000 | 0x8 |
9 | 1001 | 0x9 |
10 | 1010 | 0xA |
11 | 1011 | 0xB |
12 | 1100 | 0xC |
13 | 1101 | 0xD |
14 | 1110 | 0xE |
15 | 1111 | 0xF |
Exercicis Pràctics
Exercici 1: Conversió de Binari a Decimal
Converteix els següents nombres binaris a decimal:
- 1010
- 1111
- 1001
Solucions:
- 1010 (binari) = 10 (decimal)
- 1111 (binari) = 15 (decimal)
- 1001 (binari) = 9 (decimal)
Exercici 2: Conversió de Decimal a Binari
Converteix els següents nombres decimals a binari:
- 14
- 7
- 19
Solucions:
- 14 (decimal) = 1110 (binari)
- 7 (decimal) = 0111 (binari)
- 19 (decimal) = 10011 (binari)
Exercici 3: Conversió de Binari a Hexadecimal
Converteix els següents nombres binaris a hexadecimal:
- 1100
- 101010
- 11110000
Solucions:
- 1100 (binari) = 0xC (hexadecimal)
- 101010 (binari) = 0x2A (hexadecimal)
- 11110000 (binari) = 0xF0 (hexadecimal)
Exercici 4: Conversió de Hexadecimal a Binari
Converteix els següents nombres hexadecimals a binari:
- 0x9
- 0xB3
- 0x7F
Solucions:
- 0x9 (hexadecimal) = 1001 (binari)
- 0xB3 (hexadecimal) = 10110011 (binari)
- 0x7F (hexadecimal) = 01111111 (binari)
Conclusió
En aquest tema, hem après sobre els sistemes de numeració binari i hexadecimal, així com les conversions entre aquests sistemes i el sistema decimal. Aquests coneixements són essencials per a la programació en Assembly, ja que ens permeten comprendre i manipular les dades a nivell de maquinari. En el proper tema, explorarem els diferents tipus de dades i les seves mides en Assembly.
Curs de Programació en Assembly
Mòdul 1: Introducció al Llenguatge Assembly
- Què és el Llenguatge Assembly?
- Història i Evolució de l'Assembly
- Conceptes Bàsics i Terminologia
- Configuració de l'Entorn de Desenvolupament
Mòdul 2: Fonaments del Llenguatge Assembly
- Comprensió de la CPU i la Memòria
- Registres i les Seves Funcions
- Sintaxi i Estructura Bàsiques
- Escrivint el Teu Primer Programa en Assembly
Mòdul 3: Representació de Dades i Instruccions
- Sistemes Binari i Hexadecimal
- Tipus de Dades i Mides
- Instruccions Aritmètiques
- Instruccions Lògiques
Mòdul 4: Flux de Control
Mòdul 5: Conceptes Avançats d'Assembly
- Interrupcions i Crides de Sistema
- Macros i Assembly Condicional
- Assembly Inline en Llenguatges d'Alt Nivell
- Optimització del Codi Assembly
Mòdul 6: Assembly per a Diferents Arquitectures
Mòdul 7: Aplicacions Pràctiques i Projectes
- Escrivint un Bootloader Simple
- Creant un Nucli Bàsic de Sistema Operatiu
- Interfície amb el Maquinari
- Depuració i Perfilat del Codi Assembly