Introducción
En el lenguaje ensamblador, es fundamental comprender cómo se representan los datos a nivel de hardware. Dos de las representaciones más comunes son los sistemas binario y hexadecimal. Este conocimiento es crucial para manipular datos y entender cómo la CPU procesa la información.
- Sistema Binario
Conceptos Clave
- Base 2: El sistema binario utiliza solo dos dígitos: 0 y 1.
- Bit: La unidad más pequeña de datos en un sistema binario.
- Byte: Un grupo de 8 bits.
Ejemplo de Conversión Decimal a Binario
Para convertir un número decimal a binario, se divide el número por 2 y se registran los restos. El proceso se repite hasta que el cociente sea 0.
Ejemplo: Convertir 13 a binario
- 13 ÷ 2 = 6, resto 1
- 6 ÷ 2 = 3, resto 0
- 3 ÷ 2 = 1, resto 1
- 1 ÷ 2 = 0, resto 1
El número binario es 1101.
Ejemplo de Conversión Binario a Decimal
Para convertir un número binario a decimal, se multiplica cada bit por 2 elevado a la posición del bit, comenzando desde 0.
Ejemplo: Convertir 1101 a decimal
- \(1 \times 2^3 = 8\)
- \(1 \times 2^2 = 4\)
- \(0 \times 2^1 = 0\)
- \(1 \times 2^0 = 1\)
El número decimal es 8 + 4 + 0 + 1 = 13.
- Sistema Hexadecimal
Conceptos Clave
- Base 16: El sistema hexadecimal utiliza 16 dígitos: 0-9 y A-F.
- Nibble: Un grupo de 4 bits, que puede representar un solo dígito hexadecimal.
- Byte: Un grupo de 8 bits, que puede representar dos dígitos hexadecimales.
Ejemplo de Conversión Decimal a Hexadecimal
Para convertir un número decimal a hexadecimal, se divide el número por 16 y se registran los restos. El proceso se repite hasta que el cociente sea 0.
Ejemplo: Convertir 254 a hexadecimal
- 254 ÷ 16 = 15, resto 14 (E en hexadecimal)
- 15 ÷ 16 = 0, resto 15 (F en hexadecimal)
El número hexadecimal es FE.
Ejemplo de Conversión Hexadecimal a Decimal
Para convertir un número hexadecimal a decimal, se multiplica cada dígito por 16 elevado a la posición del dígito, comenzando desde 0.
Ejemplo: Convertir FE a decimal
- \(F \times 16^1 = 15 \times 16 = 240\)
- \(E \times 16^0 = 14 \times 1 = 14\)
El número decimal es 240 + 14 = 254.
- Conversión entre Binario y Hexadecimal
Binario a Hexadecimal
Para convertir un número binario a hexadecimal, se agrupan los bits en nibbles (grupos de 4 bits) y se convierten cada grupo a su equivalente hexadecimal.
Ejemplo: Convertir 11011110 a hexadecimal
- Agrupar en nibbles: 1101 1110
- Convertir cada nibble:
- 1101 = D
- 1110 = E
El número hexadecimal es DE.
Hexadecimal a Binario
Para convertir un número hexadecimal a binario, se convierte cada dígito hexadecimal a su equivalente binario de 4 bits.
Ejemplo: Convertir DE a binario
- Convertir cada dígito:
- D = 1101
- E = 1110
El número binario es 11011110.
Ejercicios Prácticos
Ejercicio 1: Conversión Decimal a Binario
Convierte el número decimal 45 a binario.
Solución:
- 45 ÷ 2 = 22, resto 1
- 22 ÷ 2 = 11, resto 0
- 11 ÷ 2 = 5, resto 1
- 5 ÷ 2 = 2, resto 1
- 2 ÷ 2 = 1, resto 0
- 1 ÷ 2 = 0, resto 1
El número binario es 101101.
Ejercicio 2: Conversión Binario a Decimal
Convierte el número binario 101101 a decimal.
Solución:
- \(1 \times 2^5 = 32\)
- \(0 \times 2^4 = 0\)
- \(1 \times 2^3 = 8\)
- \(1 \times 2^2 = 4\)
- \(0 \times 2^1 = 0\)
- \(1 \times 2^0 = 1\)
El número decimal es 32 + 0 + 8 + 4 + 0 + 1 = 45.
Ejercicio 3: Conversión Decimal a Hexadecimal
Convierte el número decimal 123 a hexadecimal.
Solución:
- 123 ÷ 16 = 7, resto 11 (B en hexadecimal)
- 7 ÷ 16 = 0, resto 7
El número hexadecimal es 7B.
Ejercicio 4: Conversión Hexadecimal a Binario
Convierte el número hexadecimal 7B a binario.
Solución:
- 7 = 0111
- B = 1011
El número binario es 01111011.
Conclusión
En esta sección, hemos aprendido sobre los sistemas binario y hexadecimal, cómo convertir entre ellos y cómo estos sistemas son fundamentales para la programación en ensamblador. Estos conocimientos son esenciales para comprender cómo se representan y manipulan los datos a nivel de hardware. En la próxima sección, exploraremos los tipos y tamaños de datos en ensamblador.
Curso de Programación en Ensamblador
Módulo 1: Introducción al Lenguaje Ensamblador
- ¿Qué es el Lenguaje Ensamblador?
- Historia y Evolución del Ensamblador
- Conceptos y Terminología Básica
- Configuración del Entorno de Desarrollo
Módulo 2: Fundamentos del Lenguaje Ensamblador
- Comprendiendo la CPU y la Memoria
- Registros y Sus Funciones
- Sintaxis y Estructura Básica
- Escribiendo Tu Primer Programa en Ensamblador
Módulo 3: Representación de Datos e Instrucciones
- Sistemas Binario y Hexadecimal
- Tipos y Tamaños de Datos
- Instrucciones Aritméticas
- Instrucciones Lógicas
Módulo 4: Flujo de Control
Módulo 5: Conceptos Avanzados de Ensamblador
- Interrupciones y Llamadas al Sistema
- Macros y Ensamblado Condicional
- Ensamblador Inline en Lenguajes de Alto Nivel
- Optimización del Código en Ensamblador
Módulo 6: Ensamblador para Diferentes Arquitecturas
- Lenguaje Ensamblador x86
- Lenguaje Ensamblador ARM
- Lenguaje Ensamblador MIPS
- Lenguaje Ensamblador RISC-V
Módulo 7: Aplicaciones Prácticas y Proyectos
- Escribiendo un Cargador de Arranque Simple
- Creando un Núcleo Básico de Sistema Operativo
- Interfaz con Hardware
- Depuración y Perfilado del Código en Ensamblador