Want to create interactive content? It’s easy in Genially!

Get started free

Introducción al lenguaje ensamblador

FERNANDO HERNANDEZ HERNANDEZ

Created on March 18, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

HR Organizational Chart

SWOT PRO

Branching diagram

Fishbone Diagram

Puzzle Diagram

Gear Diagram

Square Timeline Diagram

Transcript

Lenguajes de bajo nivel

Definición

Características de los lenguajes de bajo nivel

Categorías

Importancia de la programación en lenguaje ensamblador

Lenguaje ensamblador

Tipos de llamadas al sistema

Llamadas a servicios del sistema

Llamadas a servicios del sistema en Windows y Linux

Importancia del lenguaje ensamblador

Ventajas y desventajas del lenguaje ensamblador

Ejemplos de llamadas a servicios del sistema en Windows y Linux

Definición

Definición

Inmediato

Tipos de registro

El procesador y sus registros internos

Modos de direccionamiento

Directo e indirecto

Introducción al lenguaje ensamblador

Funciones de los registros

Relativo y basado en registros

Definición

La memoria principal (RAM)

Ejemplos de cada modo

Mapeo de memoria

Fases del ensamblado

Proceso de ensamblado y ligado

Definición

Proceso de ligado y generación de ejecutables

Tipos de interrupciones (hardware y software)

Herramientas de ensamblado y depuración

Ejemplos

El concepto de interrupciones

Uso de interrupciones para salida de texto

Mecanismo de manejo de interrupciones

Desplegado de mensajes en el monitor

Ejemplo de código de salida en ensamblador

Importancia en la gestión de eventos

Referencias

Interpretación de resultados en la consola

Mapeo de memoria

Es la forma en que se organiza y gestiona el acceso a los datos en la RAM, asignando direcciones específicas a cada bloque de información para optimizar su uso y rendimiento.

Directa e Indirecta

Directa: La instrucción contiene la dirección de memoria donde está el dato.Ventaja : Acceda a datos en memoria sin cálculos adicionales. Desventaja : Menos flexible si la dirección cambia. Indirecta: La dirección del operando no está en la instrucción, sino en un registro que apunta a la memoria. Ventaja : Permite manipular direcciones dinámicamente. Desventaja : Requiere más instrucciones para manipular los registros.

Definición

El procesador (CPU, Unidad Central de Procesamiento) es el componente principal de un sistema informático encargado de ejecutar instrucciones y procesar datos. Dentro del procesador, existen estructuras de registros de llamadas internos , que son pequeñas unidades de almacenamiento de alta velocidad utilizadas para realizar operaciones con datos de forma rápida y eficiente.Los registros son esenciales para la ejecución de programas, ya que permiten guardar temporalmente instrucciones, direcciones de memoria y resultados de cálculos.

Definición

Una interrupción es un evento que detiene temporalmente la ejecución normal de un programa para atender una tarea urgente. Estos pueden ser generados por hardware o software y permiten que el procesador responda rápidamente a eventos importantes, como la entrada de datos, errores o solicitudes del sistema operativo.

Definición

Las llamadas a servicios del sistema son funciones que permiten a los programas interactuar con el sistema operativo para realizar tareas como gestión de archivos, memoria, procesos y dispositivos. Estas llamadas son el puente entre el software de usuario y los recursos del hardware, garantizando seguridad y control.

Importancia del lenguaje ensamblador

Optimización del rendimiento: Permite escribir código altamente optimizado para tareas críticas. Análisis y depuración: Es útil para la ingeniería inversa y la depuración de software. Comprensión del hardware: Ayuda a entender cómo funciona un procesador a nivel interno. Desarrollo de software embebido: Es esencial en sistemas que requieren máxima eficiencia y bajo consumo de recursos..

Mecanismo de Manejo de Interrupciones

Se genera la interrupción (por hardware o software).La CPU detiene la ejecución actual y guarda su estado. Se busca la rutina de atención en la tabla de vectores de interrupción . Se ejecuta el controlador de interrupciones (ISR - Rutina de servicio de interrupción). Al terminar, la CPU restaura el estado y continúa la ejecución normal.

Llamadas a Servicios del Sistema en Windows y Linux

Windows (API del Sistema - Win32)Las llamadas al sistema en Windows se realizan a través de la WinAPI (Windows API) o funciones del kernel ( ntdll.dll). Algunas funciones clave incluyen: CreateProcess(): Crea un nuevo proceso. ReadFile()/ WriteFile(): Operaciones con archivos. VirtualAlloc(): Asignación de memoria. DeviceIoControl(): Control de dispositivos. Linux (Llamadas a través de la syscall) En Linux, las llamadas al sistema se realizan con la syscall , invocando directamente el kernel mediante la interrupción int 0x80(en sistemas antiguos) o la instrucción syscallen arquitecturas modernas Algunas llamadas comunes: fork()→ Crea un nuevo proceso. open()/ read()/ write()→ Manejo de archivos. mmap()→ Gestión de memoria. socket()→ Comunicación en red.

Funciones de los Registros del Procesador

Los registros internos cumplen varias funciones esenciales dentro del procesador: Almacenamiento temporal de datos → Guardan valores intermedios en operaciones aritméticas y lógicas. Ejecución de instrucciones → Mantienen las instrucciones que está procesando la CPU. Manejo del flujo del programa → Controlan la ejecución de saltos, bucles y llamadas a funciones. Interacción con la memoria y dispositivos → Permiten la comunicación entre la CPU y la RAM o los periféricos. Optimización del rendimiento → Reduce el acceso a la memoria RAM, lo que mejora la velocidad de ejecución de los programas.

El procesador y sus registros internos

Los registros permiten al procesador operar a alta velocidad, ya que el acceso a ellos es mucho más rápido que acceder a la memoria RAM. Son fundamentales en la ejecución de instrucciones, la gestión del flujo del programa y la manipulación de datos dentro de la CPU.

Ejemplo de codigo en ensamblador
Lenguaje ensamblador

El ensamblador es un programa que traduce el código escrito en lenguaje ensamblador a código máquina, que es directamente ejecutable por la CPU. Funciona tomando el código fuente en ensamblador y convirtiéndolo en instrucciones binarias específicas para el procesador. Ejemplo de ensamblador: MASM (Microsoft Macro Assembler), NASM (Netwide Assembler), GAS (GNU Assembler).

La memoria principal (RAM)

La memoria principal (RAM) es un almacenamiento volátil donde se cargan y ejecutan los programas y datos en uso. Su mapeo de memoria organiza la RAM en segmentos como código, datos, pila y montón, optimizando el acceso y la gestión de recursos.

Proceso de Ligado y Generación de Ejecutables

Combina archivos objeto (.o/.obj) si hay múltiples módulos.Resuelve direcciones y símbolos externos (funciones de bibliotecas, variables globales). Genera el ejecutable (.exe o .out) listo para ejecutarse en el sistema operativo.

Herramientas de Ensamblado y Depuración
Ejemplos de interrupciones

Hardware :Presionar una tecla (IRQ del teclado). Movimiento del ratón. Conexión de un dispositivo USB. Software : Llamadas al sistema ( int 0x80en Linux para interactuar con el SO). Errores de programa (división por cero).

Referencias

[1] J. Mark “Tema 1.2 Introducción al lenguaje ensamblador - Instituto Consorcio Clavijero,” Clavijero.edu.mx, 2025. https://cursos.clavijero.edu.mx/cursos/082_ei/modulo1/contenido/tema1.2.html (accessed Mar. 19, 2025). [2] V. HugoBarnes, “Unidad 1. Introducción al lenguaje ensamblador,” Víctor Hugo, Apr. 21, 2020. https://vhugobarnes.wordpress.com/2020/04/21/introduccion-al-lenguaje-ensamblador/ (accessed Mar. 19, 2025). ‌[3] I. Tijerina, “Introducción al lenguaje ensamblador,” tiai95, Jan. 29, 2016. https://isaacantonio95.wixsite.com/tiai95/single-post/2016-1-28-introducci%C3%B3n-al-lenguaje-ensamblador (accessed Mar. 19, 2025). ‌[4] L. Carranza, “Ensamblador y sus funciones como lenguaje,” Blog de Luis Araya, Aug. 12, 2017. https://blogluisaraya.wordpress.com/2017/08/12/ensamblador-y-sus-funciones-como-lenguaje/ (accessed Mar. 19, 2025). ‌ ‌

Tipos de Registros en un Procesador

Registros de propósito general (GPR) → Almacenan datos temporales y se usan en operaciones matemáticas y lógicas. Ejemplos en x86: AX (Acumulador) → Operaciones aritméticas. BX (Base) → Dirección de memoria. CX (Contador) → Bucles y repeticiones. DX (Datos) → Entrada/salida y cálculos extendidos. Registros de propósito específico → Realizan funciones concretas: Segmentación : CS (Código), DS (Datos), SS (Pila). Puntero e Índice : SP (Pila), BP (Base de pila), SI/DI (Operaciones con cadenas). Control y Estado : IP/PC (Siguiente instrucción), FLAGS (Estado del procesador). Entrada/Salida : Manejan datos entre CPU y periféricos. Punto Flotante : Para cálculos con números decimales.

Relativo y basado en registros

Relativo: El operando se encuentra en una dirección relativa al contador de programa (IP/PC) . Se usa en saltos y llamadas condicionales. Basado en Registros: El operando se encuentra en una dirección calculada con un registro base + desplazamiento .

Ejemplos de cada modo

Inmediato Directa Indirecta Relativa basado en registros

Ventajas y desventajas del lenguaje ensamblador

Ventajas: Máximo control sobre el hardware. Ejecución rápida y eficiente. Uso reducido de memoria. Permite escribir código optimizado para tareas específicas. Desventajas: Complejo de aprender y programar. Depende de la arquitectura del procesador. Menos portátiles que los lenguajes de alto nivel. Desarrollo más lento y propenso a errores.

Características de los lenguajes de bajo nivel.

Alta eficiencia: Permiten ejecutar instrucciones con mínima sobrecarga de procesamiento.Acceso directo al hardware: Pueden interactuar directamente con registros, memoria y dispositivos de entrada/salida. Menos abstracción: Son más difíciles de programar y entender que los lenguajes de alto nivel. Dependencia del hardware: El código escrito en un lenguaje de bajo nivel suele ser específico para una arquitectura de procesador.

Importancia en la Gestión de Eventos

Permiten respuestas rápidas a eventos sin esperar la finalización del código en ejecución.Mejoran la eficiencia del sistema , ya que el procesador no está revisando constantemente los dispositivos. Son fundamentales en sistemas en tiempo real , como el control de robots o sistemas embebidos. Facilitan la interacción entre hardware y software , optimizando la ejecución de programas.

Tipos de llamadas al sistema

Síncronas: Bloquean el proceso hasta que se complete la operación.Asíncronas: Permiten que el proceso continúe mientras la operación se ejecuta en el segundo plano.

Lenguajes de bajo nivel

Los lenguajes de bajo nivel están más cercanos al lenguaje de la máquina y ofrecen un mayor control sobre el hardware. A diferencia de los lenguajes de alto nivel (como Python o Java), los lenguajes de bajo nivel requieren una comprensión más detallada de la arquitectura del procesador y la memoria.

Inmediato

El operando es un valor constante que se incluye directamente en la instrucción.Ventaja : Rápido porque el dato está en la propia instrucción. Desventaja : No permite modificar el valor en tiempo de ejecución.

Uso de Interrupciones para Salida de Texto

Las interrupciones son mecanismos que permiten a los programas interactuar con el hardware o el sistema operativo. En ensamblador, se utilizan interrupciones para mostrar texto en pantalla, dependiendo del sistema operativo y la arquitectura utilizada.

Definición

Análisis : El ensamblador revisa la sintaxis, identifica etiquetas, símbolos y direcciones. Traducción : Convierte instrucciones en lenguaje ensamblador a su equivalente en código máquina. Generación de Código Máquina : Se crea un archivo objeto (.oo .obj) con el código traducido, pero con referencias sin resolver. Luego, el ligador combina los archivos objeto, resuelve símbolos y genera el ejecutable final.

Categorías de Llamadas al Sistema

Las llamadas al sistema se pueden clasificar en las siguientes categorías: Gestión de procesos: Crear, terminar y sincronizar procesos. Gestión de archivos; Leer, escribir, abrir y cerrar archivos. Gestión de dispositivos: Controlar hardware como discos, teclados e impresoras. Gestión de memoria: Asignar y liberar memoria para procesos. Gestión de comunicación: Comunicación entre procesos locales o remotos (redes, IPC). Gestión de seguridad: Control de accesos y permisos de usuario.

Importancia de la programación en lenguaje ensamblador

El lenguaje ensamblador es crucial en el desarrollo de software de bajo nivel, ya que permite un mayor control sobre el hardware y optimización del rendimiento del sistema. Se usa en aplicaciones donde la eficiencia es prioritaria, como sistemas embebidos, controladores de hardware y desarrollo de sistemas operativos.

Tipos de interrupciones

Interrupciones de Hardware ;Son generados por dispositivos externos (teclado, ratón, disco duro, etc.). Máscara : Se pueden habilitar o deshabilitar (ej. interrupción de teclado). No enmascarables (NMI) : No pueden ser ignoradas (ej. fallo de hardware crítico). Interrupciones de software: Se activan mediante instrucciones dentro del código del programa. Sistemas operativos : Solicitudes al sistema mediante llamadas ( int 21hen DOS). Excepciones : Errores como división por cero o acceso a memoria inválida.

Interpretacion de resultados en la consola

Si ejecutas el código en un entorno Linux con NASM, el resultado en la terminal sería:

Definición

Es un tipo de memoria volátil que almacena temporalmente datos e instrucciones mientras el procesador los utiliza, permitiendo una ejecución rápida de los programas.

Ejemplos de Llamadas a Servicios del Sistema
Definición

El modo de direccionamiento determina cómo una instrucción en lenguaje ensamblador accede a los datos en memoria o registros. Dependiendo del modo utilizado, el procesador puede obtener el operando directamente, a través de una dirección, o calcular su ubicación dinámicamente.

El concepto de interrupciones

Una interrupción es un evento que interrumpe la ejecución de un programa para atender una tarea urgente. Existen interrupciones de hardware (como teclados) y de software (como errores de programa). El manejo de interrupciones permite suspender temporalmente un proceso, atender la interrupción y luego continuar la ejecución. Son esenciales para gestionar eventos en tiempo real y garantizar la eficiencia del sistema.

Llamadas a servicios del sistema

Las llamadas a servicios del sistema son interfaces que permiten a los programas interactuar con el sistema operativo para realizar tareas como acceso a archivos o gestión de procesos. Se divide en categorías como gestión de archivos, procesos y comunicación. En Windows y Linux , se utilizan diferentes tipos de llamadas, como CreateFile()en Windows o open()en Linux. Los ejemplos incluyen abrir archivos en ambos sistemas o crear procesos.

Modos de direccionamiento

Los modos de direccionamiento son técnicas que determinan cómo se accede a los datos en la memoria durante la ejecución de un programa. El modo inmediato usa un valor constante en la instrucción. El directo se refiere a la dirección de memoria especificada en la instrucción, mientras que el indirecto utiliza una dirección de memoria que apunta a otra dirección. El relativo usa una dirección basada en el contador de programa, y ​​el basado en registros usa registros para almacenar direcciones. Ejemplos incluyen MOV AX, 5(inmediato) y MOV AX, [1000h](directo).

Proceso de ensamblado y ligado

El proceso de ensamblado convierte el código fuente en lenguaje ensamblador a código máquina en tres fases: análisis (identificación de instrucciones), traducción (conversión a lenguaje de máquina) y generación de código máquina . El ligado combina los archivos objeto generados en un ejecutable. Las herramientas de ensamblado como ensambladores y depuradores, como NASMo GDB, facilitan la creación y depuración de estos programas.

Desplegado de mensajes en el monitor

El proceso de ensamblado convierte el código fuente en lenguaje ensamblador a código máquina en tres fases: análisis (identificación de instrucciones), traducción (conversión a lenguaje de máquina) y generación de código máquina . El ligado combina los archivos objeto generados en un ejecutable. Las herramientas de ensamblado como ensambladores y depuradores, como NASMo GDB, facilitan la creación y depuración de estos programas.