Want to create interactive content? It’s easy in Genially!
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:
View
HR Organizational Chart
View
SWOT PRO
View
Branching diagram
View
Fishbone Diagram
View
Puzzle Diagram
View
Gear Diagram
View
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.