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

Get started free

Introducción al lenguaje ensamblador

Hanna Hanna

Created on March 17, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

January School Calendar

Genial Calendar 2026

School Calendar 2026

January Higher Education Academic Calendar

School Year Calendar January

Academic Calendar January

Comic Flipcards

Transcript

Introducción al lenguaje ensamblador

Definición

1.2

1.1

1.8

1.5

1.6

1.7

1.4

1.3

Subtemas

Subtemas

Dividido en

Subtemas

Subtemas

Subtemas

Subtemas

Subtemas

Definición

Definición

Ejemplos

Lenguaje de bajo nivel

Tipos

Proceso de ligadio

Fases de ensamblado

Interpretación de resultados

Definición

Lenguaje ensamblador

Tipos

Importancia de gestión de eventos

Características

Tipos de interrupciones

Herramientas de ensamblado y depuración

Funciones

Definición

Ejemplo de código

Definición

Categorías

Mapeo

Ejemplos

Importancia, ventajas y desventajas

Uso de interrupciones

Relativo y basado en registros

Mecanismos de manejo

Windows y Linux

Inmediato

Directo e indirecto

Referencias

Escribe un titular genial

Estamos en la era de la explosión de información digital. Esto provoca que nuestra forma de obtener información haya cambiado, pasamos de la lectura tradicional a una estrategia cognitiva basada en la navegación.

Nuestro cerebro está preparado, desde un punto de vista biológico, para aprender a través de contenidos visuales. Casi el 50% de nuestro cerebro está involucrado en el procesamiento de estímulos visuales.

Escribe un titular genial

Estamos en la era de la explosión de información digital. Esto provoca que nuestra forma de obtener información haya cambiado, pasamos de la lectura tradicional a una estrategia cognitiva basada en la navegación.

Nuestro cerebro está preparado, desde un punto de vista biológico, para aprender a través de contenidos visuales. Casi el 50% de nuestro cerebro está involucrado en el procesamiento de estímulos visuales.

Ejemplos de lenguaje de bajo nivel

  • Ensamblador El ensamblador es un lenguaje que traduce instrucciones humanas en códigos entendibles por la máquina. Se usa principalmente para programación a nivel del sistema operativo o controladores. Por ejemplo, en una CPU x86, puedes escribir comandos como MOV, que transfiere datos entre registros.
  • Código de máquina El código de máquina es aún más básico y consiste en secuencias binarias (0s y 1s) que ejecuta directamente la CPU. Esto significa que no hay intermediarios; simplemente le dices al procesador qué hacer. Cada instrucción tiene una secuencia específica, como 10101000 para operaciones aritméticas básicas. Aunque suena complicado, este tipo de programación permite la máxima eficiencia y velocidad.

Aquí puedes poner un título destacado

Plantea una pregunta o problema que haga pensar a la clase; es el ingrediente esencial para mantener su atención. Se suele plantear al inicio del tema para fomentar su pensamiento crítico y participación.

  • Planificar la estructura de tus contenidos.
  • Darle peso visual a los puntos clave y más principales.
  • Definir mensajes secundarios con interactividad.
  • Establecer un flujo a través del contenido.
  • Medir los resultados.

Definición y características

Lenguajes de bajo nivel

  • Son cercanos al hardware, permiten un control preciso del sistema.
  • Incluyen el lenguaje máquina y el ensamblador.
Características de los lenguajes de bajo nivel
  • Código altamente dependiente de la arquitectura.
  • Mayor velocidad de ejecución en comparación con lenguajes de alto nivel.
  • Menos abstracción y más control sobre los recursos del sistema.

Definición

Definición de RAM La RAM (Memoria de Acceso Aleatorio, Random Access Memory) es un tipo de memoria volátil utilizada por los sistemas computacionales para almacenar temporalmente datos e instrucciones de programas en ejecución. Características principales:

  • Acceso rápido: Permite leer y escribir datos a alta velocidad en comparación con el almacenamiento en disco.
  • Volatilidad: Su contenido se pierde al apagar o reiniciar el sistema.
  • Interacción con la CPU: La RAM actúa como un puente entre el procesador y el almacenamiento secundario (disco duro o SSD), optimizando el rendimiento del sistema.
Ejemplo de uso: Cuando abres un navegador web, su código y datos se cargan en la RAM para que la CPU pueda acceder a ellos rápidamente. Al cerrar el navegador, la RAM libera ese espacio.

Uso de Interrupciones para Salida de Texto

  • En DOS: Se usa la interrupción INT 21h.
  • En Linux: Se usa la llamada al sistema sys_write.

Aquí puedes poner un título destacado

Plantea una pregunta o problema que haga pensar a la clase; es el ingrediente esencial para mantener su atención. Se suele plantear al inicio del tema para fomentar su pensamiento crítico y participación.

  • Planificar la estructura de tus contenidos.
  • Darle peso visual a los puntos clave y más principales.
  • Definir mensajes secundarios con interactividad.
  • Establecer un flujo a través del contenido.
  • Medir los resultados.
Ejemplo de Código de Salida en Windows (MASM 32 bits)

Explicación: invoke MessageBoxA, NULL, addr mensaje, addr titulo, MB_OK: Muestra un cuadro de mensaje con el texto "Hola, mundo!" y el título "Mensaje de Windows". invoke ExitProcess, 0: Termina el programa y pasa el código de salida 0 al sistema operativo.

Mecanismo de Manejo de Interrupciones

El procesador detecta la interrupción. Guarda el estado actual del CPU en la pila. Ejecuta el controlador de interrupción correspondiente. Restaura el estado del CPU y continúa la ejecución del programa.

Categorías

1.- Gestión de Archivos Abrir, leer, escribir y cerrar archivos. Ejemplo: CreateFile() en Windows, open() en Linux. 2.- Gestión de Procesos Crear y terminar procesos, cambiar su estado. Ejemplo: fork() en Linux, CreateProcess() en Windows. 3.- Gestión de Memoria Asignar y liberar memoria dinámica. Ejemplo: malloc() en C, VirtualAlloc() en Windows.

Definición

  • El procesador (CPU) es la unidad central de procesamiento de un sistema computacional.
  • Ejecuta instrucciones y controla las operaciones del hardware.

Lenguaje ensamblador

Definición

Lenguaje EnsambladorRepresentación simbólica del código máquina. Usa instrucciones mnemotécnicas (ej. MOV, ADD, SUB). Depende de la arquitectura del procesador.

Funciones

Funciones de los Registros

  • Almacenar Valores Temporales
Cuando una CPU ejecuta una suma como A = B + C, los valores de B y C pueden almacenarse en registros antes de ejecutar la operación.
  • Guardar Direcciones de Memoria
Cuando se accede a una dirección de memoria específica, esta se almacena en registros como el registro de dirección de memoria (MAR, Memory Address Register).
  • Optimizar el Acceso a Datos
Los registros actúan como una memoria ultrarrápida dentro del procesador, evitando accesos lentos a la RAM.

Tipos de Interrupciones Interrupciones de Hardware Generadas por dispositivos externos para solicitar la atención del procesador. Se gestionan a través del Controlador de Interrupciones (PIC o APIC en sistemas modernos). Ejemplos:

  • Presionar una tecla (Interrupción de teclado).
  • Movimiento del mouse.
  • Transferencia de datos desde el disco duro.
Interrupciones de Software Son generadas por el propio programa mediante instrucciones específicas. Ejemplo: La instrucción INT en ensamblador provoca una interrupción controlada. Se usan en llamadas al sistema operativo (por ejemplo, INT 0x80 en Linux). Interrupciones por Excepción o Fallos del CPU Ocurren cuando el procesador detecta una condición anómala. Ejemplos:
  • División por cero (#DE - Divide Error).
  • Acceso a memoria inválida (#PF - Page Fault).
  • Instrucción no válida (#UD - Undefined Opcode).

Escribe un titular genial

Estamos en la era de la explosión de información digital. Esto provoca que nuestra forma de obtener información haya cambiado, pasamos de la lectura tradicional a una estrategia cognitiva basada en la navegación.

Nuestro cerebro está preparado, desde un punto de vista biológico, para aprender a través de contenidos visuales. Casi el 50% de nuestro cerebro está involucrado en el procesamiento de estímulos visuales.

Proceso de Ligado y Generación de Ejecutables El ligado (linking) es el proceso de combinar varios archivos objeto (que pueden haber sido creados desde diferentes partes del programa o desde bibliotecas externas) en un único archivo ejecutable. Ligado Estático En el ligado estático, se combinan archivos objeto y bibliotecas en el archivo ejecutable final en tiempo de compilación. Todo el código y las bibliotecas necesarias se incluyen en el archivo ejecutable. Ventajas: El ejecutable es independiente, ya que contiene todo lo necesario para ejecutarse. El rendimiento es ligeramente superior, ya que no requiere bibliotecas externas al ejecutarse. Ligado Dinámico En el ligado dinámico, el código ejecutable no incluye directamente las bibliotecas, sino que las carga en tiempo de ejecución. Esto permite que las bibliotecas se actualicen sin necesidad de recompilar el ejecutable. Ventajas Los archivos ejecutables son más pequeños. Se pueden actualizar las bibliotecas sin modificar el ejecutable. Ejemplos de Herramientas de Ligado Linux: En sistemas Linux, el enlazador se llama ld. Este programa se utiliza para unir archivos objeto y bibliotecas dinámicas o estáticas en un ejecutable. Windows: En sistemas Windows, la herramienta comúnmente usada es LINK.EXE, que realiza el proceso de enlace.

Herramientas de Ensamblado y Depuración Ensambladores El ensamblador es una herramienta que convierte el código fuente de ensamblador en código objeto o lenguaje máquina. Existen varias herramientas de ensamblado populares: MASM (Microsoft Macro Assembler): Es el ensamblador de Microsoft, utilizado en plataformas Windows. Permite escribir código en ensamblador x86 y x64, y ofrece una amplia compatibilidad con las herramientas de Microsoft. NASM (Netwide Assembler): Es un ensamblador libre y ampliamente utilizado en sistemas Linux y en plataformas x86/x64. NASM es conocido por su flexibilidad y facilidad para generar código eficiente. GAS (GNU Assembler): Es el ensamblador parte del paquete de herramientas del compilador GCC (GNU Compiler Collection). GAS se usa principalmente en entornos Unix/Linux y soporta diferentes arquitecturas de hardware. Depuradores Los depuradores son herramientas utilizadas para examinar y depurar el código ensamblador (o el código ejecutable) en busca de errores. Ayudan a entender cómo se ejecuta el código, visualizar el contenido de registros, la memoria y las pilas de ejecución, y a rastrear la ejecución paso a paso. GDB (GNU Debugger): Es el depurador de código fuente más común para programas en C, C++, y ensamblador en sistemas Linux. Permite ejecutar el programa de manera controlada, ver los valores de las variables, y realizar otros análisis en tiempo de ejecución. OllyDbg: Es un depurador de código ensamblador utilizado principalmente en sistemas Windows. Es conocido por su interfaz gráfica amigable y su capacidad para depurar código sin tener el código fuente original, lo que lo hace útil para el análisis de programas binarios.

Aquí puedes poner un título destacado

Plantea una pregunta o problema que haga pensar a la clase; es el ingrediente esencial para mantener su atención. Se suele plantear al inicio del tema para fomentar su pensamiento crítico y participación.

  • Planificar la estructura de tus contenidos.
  • Darle peso visual a los puntos clave y más principales.
  • Definir mensajes secundarios con interactividad.
  • Establecer un flujo a través del contenido.
  • Medir los resultados.

Escribe un titular genial

El contenido visual es un lenguaje transversal y universal, como la música. Somos capaces de entender imágenes de hace millones de años, incluso de otras culturas.

¿Sabías que Genially permite compartir tu creación directamente, sin necesidad de descargas? Listo para que el alumnado pueda visualizarlo en cualquier dispositivo y aprender en cualquier lugar.

Importancia, ventajas y desventajas

Importancia del Lenguaje Ensamblador

  • Se usa en sistemas embebidos, desarrollo de controladores y optimización de software.
  • Permite comprender cómo funciona el hardware.
  • Es útil en ciberseguridad y análisis de malware.
  • Ventajas y Desventajas del Lenguaje Ensamblador
✅ Ventajas:
  • Alta eficiencia y rapidez.
  • Control absoluto del hardware.
  • Uso reducido de memoria.
❌ Desventajas:
  • Código complejo y difícil de mantener.
  • Dependencia de la arquitectura del procesador.
  • Requiere conocimiento avanzado del hardware.

Importancia en la Gestión de Eventos

Permiten la ejecución concurrente de múltiples tareas. Mejoran la respuesta del sistema ante eventos externos. Son fundamentales para implementar multitarea y multiprocesamiento.

Ejemplos

  • Ejemplo de interrupciones:
int 01h–>un solo paso int 02h–>interrupcion no enmascarable int 03h–> punto de interrupcion int 04h–>desbordamiento int 05h–>impresion de pantalla int 08h–>Cronometro i

Tipos de registro

  • Registros de Propósito General (GPR, General-Purpose Registers)
Se usan para almacenar datos temporales o direcciones de memoria durante la ejecución de instrucciones. Ejemplo: En la arquitectura x86, los registros EAX, EBX, ECX y EDX pueden almacenar datos usados en operaciones aritméticas y lógicas.
  • Registros de Propósito Específico
Tienen funciones específicas dentro del CPU, como el control del flujo de ejecución o la gestión de memoria. Ejemplos: Contador de Programa (PC, Program Counter): Guarda la dirección de la siguiente instrucción a ejecutar. Puntero de Pila (SP, Stack Pointer): Apunta a la última dirección en la pila de memoria. Registro de Instrucción (IR, Instruction Register): Contiene la instrucción actual que se está ejecutando. Registro de Estado o Flags: Indica condiciones como si el resultado de una operación es cero o si ocurrió un desbordamiento.
Mapeo

El mapeo de memoria define cómo se organizan los datos dentro de la RAM. 1.- Segmentación Divide la memoria en segmentos (código, datos, pila). Cada segmento tiene una dirección base y un desplazamiento. Ejemplo en ensamblador x86:

2.- Paginación

  • Divide la memoria en páginas de tamaño fijo (4 KB en sistemas comunes).
  • Permite mejor uso de la RAM y evita fragmentación.
  • Usada en sistemas operativos modernos con memoria virtual.

Modo directo e indirecto

Directo: Se proporciona la dirección de memoria explícitamente en la instrucción.Indirecti Indirecto: La dirección de memoria está almacenada en un registro. Ejemplos:

Definición

Las interrupciones son señales que detienen temporalmente la ejecución normal del procesador para atender eventos internos o externos. Estas señales pueden ser generadas por hardware, software o el propio sistema operativo para mejorar la eficiencia en la gestión de tareas.

1. Fases del Ensamblado 1.1 Análisis Léxico y Sintáctico Análisis Léxico: En esta fase, el ensamblador divide el código fuente en tokens, que son las unidades más pequeñas de significado (por ejemplo, palabras clave, instrucciones, registros, constantes, etc.). Este paso verifica que los elementos del código estén correctamente identificados. Análisis Sintáctico: A continuación, el ensamblador verifica si la estructura del código sigue las reglas del lenguaje ensamblador. Esto incluye verificar que las instrucciones sean válidas y que estén correctamente formadas, siguiendo la sintaxis del lenguaje (por ejemplo, que las instrucciones se escriban de la manera correcta). 1.2 Traducción Convierte a Lenguaje Máquina: Una vez que el código ha pasado el análisis léxico y sintáctico, se traduce a código máquina o código objeto. En esta fase, el ensamblador genera archivos intermedios llamados archivos objeto (por ejemplo, programa.o o programa.obj). Estos archivos contienen instrucciones en lenguaje máquina, pero aún no están completamente listos para ejecutarse. 1.3 Generación del Ejecutable Producción del Archivo Ejecutable: Esta fase es donde se crea el archivo ejecutable final. El archivo objeto generado en la fase anterior se utiliza para crear un archivo binario completo, como un archivo .exe en Windows o un archivo binario en Linux. Este archivo puede ser ejecutado directamente por el sistema operativo. .

Definición

El modo de direccionamiento determina la forma en que una instrucción accede a los datos en memoria o en los registros dentro de un programa. Existen diferentes modos de direccionamiento según la arquitectura y la forma en que los operandos son especificados.

Referencias IEEE

[1] “Lenguajes de Programación de Bajo Nivel: Ejemplos y Características - ProgramaciónPro”. ProgramaciónPro. Accedido el 16 de marzo de 2025. [En línea]. Disponible: https://programacionpro.com/lenguajes-de-programacion-de-bajo-nivel-ejemplos-y-caracteristicas/ [2] V. Hugo. “Unidad 1. Introducción al lenguaje ensamblador”. Accedido el 16 de marzo de 2025. [En línea]. Disponible: https://vhugobarnes.wordpress.com/2020/04/21/introduccion-al-lenguaje-ensamblador . [3] Andres Felipe Nieto uruburu. “Memorias - Mapa Mental”. Mindomo - Collaborative Mind Map Software. Accedido el 16 de marzo de 2025. [En línea]. Disponible: https://www.mindomo.com/zh/mindmap/memorias-ffa962624024462eb14d20d1c30382de [4] “Tipos de interrupciones de lenguaje ensamblador”. Lenguaje de interfaz. Accedido el 16 de marzo de 2025. [En línea]. Disponible: https://lenguajeinterfaz-marcosvelazquez.blogspot.com/2019/01/tipos-de-interrupciones-de-lenguaje.html [5] R. R. Martinez. “LLAMADAS AL SISTEMA”. Lenguajes de Interfaz. Accedido el 16 de marzo de 2025. [En línea]. Disponible: https://rigobertoruizmartinez12.blogspot.com/2020/03/llamadas-al-sistema.html [6] “Interpretación de resultados: cómo leer y comprender los resultados de sus pruebas”. Reis Digital. Accedido el 16 de marzo de 2025. [En línea]. Disponible: https://reisdigital.es/datos-e-informacion/interpretacion-de-resultados/

Tipos de llamadas al sistema

Entrada de Datos:La computadora recibe datos e instrucciones de entrada a través de dispositivos como el teclado, el mouse, o la red.Procesamiento: El procesador (CPU) ejecuta las instrucciones recibidas y realiza cálculos o manipulaciones de datos, utilizando registros y memoria. Almacenamiento: Los datos procesados se almacenan temporalmente en la RAM (memoria principal) o permanentemente en dispositivos de almacenamiento como discos duros o SSD. Salida de Datos: Después del procesamiento, los resultados se envían a dispositivos de salida (pantalla, impresora, etc.) para que el usuario los vea o utilice. Interrupciones y Gestión de Recursos: Durante el proceso, las interrupciones gestionan eventos asíncronos, como la entrada de teclado o la finalización de un proceso, para garantizar que la CPU responda adecuadamente. Control del Sistema Operativo: El sistema operativo maneja el acceso a los recursos (procesador, memoria, dispositivos) y coordina la ejecución de los programas mediante llamadas al sistema.

Escribe un titular genial

El contenido visual es un lenguaje transversal y universal, como la música. Somos capaces de entender imágenes de hace millones de años, incluso de otras culturas.

¿Sabías que Genially permite compartir tu creación directamente, sin necesidad de descargas? Listo para que el alumnado pueda visualizarlo en cualquier dispositivo y aprender en cualquier lugar.

Modo Inmediato

El operando es un valor fijo dentro de la instrucción.

Modo relativo y basado en registros

El modo relativo es comúnmente utilizado en instrucciones de salto, como los saltos condicionales o incondicionales. En este modo, la dirección efectiva del operando se calcula a partir de una dirección base (como el contador de programa, o PC) y un desplazamiento (offset). Ejemplo: JMP etiqueta ; Salta a la dirección especificada por 'etiqueta' calculada desde la posición actual del PC. En el modo basado en registros, la dirección del operando se obtiene sumando un valor de desplazamiento a la dirección contenida en un registro específico. Este modo es útil para acceder a datos en estructuras como arreglos o buffers. Ejemplo: MOV AX, [BX + 10h] ; AX = valor almacenado en la dirección contenida en BX + 10h

Definición

  • Las llamadas al sistema son funciones proporcionadas por el sistema operativo que permiten a los programas interactuar con el hardware y los recursos del sistema.