Presentación
Instrucciones para la presentación
1. Piense en el nombre de un animal que inicie con la primera letra de su nombre.
2. Este no deberá repetirse.
3. Al presentarse deberá completar la siguiente frase: Mi nombre es: _______ y he venido sobre un/a: _______ a la escuela desde _____
4. Dar respuesta a las preguntas:
4.1 ¿Porqué estudio está carrera?
4.2 ¿Qué me ha gustado de la carrera hasta ahora?
Temas del curso
Unidad 1. Introducción al lenguaje ensamblador
1.1 Evolución de los lenguajes.
1.2 Aplicaciones del lenguaje ensamblador.
1.3 La familia de microprocesadores de Intel.
Temas del curso
Unidad 2. Arquitectura y funcionamiento de un microprocesador.
2.1 Registros y banderas.
2.2 Unidades funcionales básicas.
2.3 Canales de datos, direcciones y control.
2.4 Proceso de arranque de una microcomputadora.
Temas del curso
Unidad 3 Organización de memoria principal.
3.1 Organización de un programa en memoria principal.
3.2 Tipos de direccionamiento.
Temas del curso
Unidad 4 Instrucciones básicas.
4.1 Transferencia de datos.
4.2 Suma y resta.
4.3 Operaciones lógicas.
4.4 Corrimientos y rotaciones.
4.5 Multiplicación y división (auto estudio).
Temas del curso
Unidad 5 Uso de un programa debugger.
5.1 Observación y modificación de datos.
5.2 ejecución paso a paso.
5.3 uso de breakpoints.
Temas del curso
Unidad 6 Control de secuencia.
6.1 Instrucciones para comparar operandos.
6.2 Saltos condicionales e incondicionales.
6.3 Definición y llamada de procedimientos.
6.4 Instrucciones para el manejo del stack.
6.5 Programación estructurada (auto estudio).
Políticas de clase
Lineamientos de clase
El incumplimiento de las tareas en tiempo y forma llevarán a una no aprobación del curso.
Lineamientos de clase
Realizar el seguimiento personal desde el Aula Virtual.
Estar pendiente de los resultados de las evaluacion/es parcial/es y final/es.
Notificar al tutor por escrito, con copia a la coordinación académica, si, por alguna razón excepcional, se encontrara en una circunstancia especial que le impidiera continuar con el curso y recibir así indicaciones de cómo proceder a partir de ese momento.
Descripción de las actividades
Unidad 1 Introducción al lenguaje ensamblador
Descripción de las actividades
Unidad 2 Arquitectura y funcionamiento de un microprocesador.
Descripción de las actividades
Unidad 3 Organización de memoria principal.
Descripción de las actividades
Unidad 4 Instrucciones básicas.
Descripción de las actividades
Unidad 5 Uso de un programa debugger.
Descripción de las actividades
Unidad 6. Control de secuencia.
Actividades de encuadre
Actividades de encuadre
Instrucciones:
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Una vez contestadas las preguntas anteriores escribir en el foro respectivo la respuesta a cada pregunta.
Tiempo de la actividad: 6 minutos.
Recomendaciones para las actividades
Trabajos:
Párrafos:
Ortografía - Gramática
Recomendaciones para las actividades
Referencias bibliográfica
Lista referencia bibliográfica
Recomendaciones para las actividades
Introducción y conclusión
Formato del trabajo
Recomendaciones para las actividades
Diagramas:
Códigos fuentes:
Tablas:
Ejemplo recomendado para el uso de tablas
| IA I | POO | P. batch |
|---|---|---|
| 10 | 10 | 8 |
| 19 | 6 | 9 |
Tabla 1. Listado de materias con calificaciones obtenidas en cada actividad. Fuente: Creación propia
En la tabla 1, se puede apreciar tres materias donde se encuentra las calificaciones obtenidas en dos actividades realizadas en cada una de ellas. Para calcular el promedio solo se debe de sumar cada actividad en un nuevo renglón y dividirlo entre dos que son el número de actividades.
Ejemplo recomendado para el uso de tablas
| IA I | POO | P. batch |
|---|---|---|
| 10 | 10 | 8 |
| 19 | 6 | 9 |
Tabla 1. Listado de materias con calificaciones obtenidas en cada actividad. Fuente: Tomada del libro Introducción a la programación de Luis Joyanes Aguilar. P.19.
En la tabla 1, se puede apreciar tres materias donde se encuentra las calificaciones obtenidas en dos actividades realizadas en cada una de ellas. Para calcular el promedio solo se debe de sumar cada actividad en un nuevo renglón y dividirlo entre dos que son el número de actividades. (Joyanes, 2000).
Recomendaciones para las actividades
Imagenes / diagramas / gráficas:
Recomendaciones para el uso de imágenes / gráficas / diagramas
Imagen 1. Fachada de una casa. Fuente: Creación propia
En la imagen 1 se puede observar la fachada de una casa convencional donde. Lo que permite poder llevar acabo construcciones básicas pero eficientes, con canaletas para la recolección de agua pluvial y su posterior tratamiento.
Recomendaciones para el uso de imágenes / gráficas / diagramas
Imagen 1. Fachada de una casa. Fuente: Tomado del libro Diseños y principios básicos de arquitectura de Ruben Vazquez
En la imagen 1 se puede observar la fachada de una casa convencional donde. Lo que permite poder llevar acabo construcciones básicas pero eficientes, con canaletas para la recolección de agua pluvial y su posterior tratamiento. (Vazquez, 2000)
¿Dudas / Preguntas / comentarios?
Lenguaje ensamblador | Introducción¿Qué es el lenguaje ensamblador?
Lenguaje ensamblador | Introducción¿Qué es el lenguaje ensamblador?
Lenguaje ensamblador | Introducción¿Qué es el lenguaje ensamblador?
Lenguaje ensamblador | Introducción¿Qué es el lenguaje ensamblador?
Lenguaje ensamblador | Introducción¿Qué es el lenguaje ensamblador?
Actividad de Aprendizaje
| Frase | V | F | Complemento |
|---|---|---|
| Lenguaje de ---- permite programar pc | Alto nivel | |
| Utiliza instrucciones más---- comprensibles | Instrucciones | |
| Cada cpu tiene su ---- instrucciones | Humanas |
Lenguaje ensamblador | EvoluciónEvolución
Lenguaje ensamblador | EvoluciónLenguajes de Máquina y Ensamblador (Décadas de 1940 y 1950)
Lenguaje ensamblador | EvoluciónLenguajes Ensambladores Simples (Décadas de 1950 y 1960)
Lenguaje ensamblador | EvoluciónEstandarización y Ampliación (Décadas de 1960 y 1970)
Lenguaje ensamblador | EvoluciónLenguajes Ensambladores Avanzados (Décadas de 1980 y 1990)
Lenguaje ensamblador | EvoluciónEnsambladores Modernos y Abstracciones (Siglo XXI)
Lenguaje ensamblador | EvoluciónEnsambladores en la Era de la Computación Cuántica (En desarrollo)
Lenguaje ensamblador | EvoluciónEvolución
Actividad de Aprendizaje
| Década | Características |
|---|---|
| 1980 y 1990 | Mejora sobre los lenguajes |
| 1950 y 1960 | Procesadores más potentes |
| 1940 y 1950 | Programación en tediosa y propensa a errores |
Lenguaje ensamblador | AplicaciónAplicaciones del lenguaje ensamblador.
Lenguaje ensamblador | AplicaciónProgramación de Sistemas Empotrados
Lenguaje ensamblador | AplicaciónProgramación de Sistemas Operativos
Lenguaje ensamblador | AplicaciónProgramación de Controladores de Dispositivos
Lenguaje ensamblador | AplicaciónOptimización de Código
Lenguaje ensamblador | AplicaciónSeguridad y Hacking Ético
Lenguaje ensamblador | AplicaciónDepuración y Análisis de Código
Lenguaje ensamblador | AplicaciónProgramación de Plataformas Específicas
Lenguaje ensamblador | AplicaciónLenguaje ensamblador | AplicaciónAplicación
Actividad de Aprendizaje
| Aplicación | Limitante | Ventaja |
|---|---|---|
Lenguaje ensamblador | fam. Intella familia de microprocesadores de Intel.
Lenguaje ensamblador | fam. IntelFamilia Intel 8086/8088
Lenguaje ensamblador | fam. IntelFamilia Intel 80286
Lenguaje ensamblador | fam. IntelFamilia Intel 80386
Lenguaje ensamblador | fam. IntelFamilia Intel Pentium y Procesadores Posteriores
Lenguaje ensamblador | fam. IntelFamilia Intel Core y Procesadores Modernos
Lenguaje ensamblador | fam. IntelFamilia Intel
Actividad de Aprendizaje
| Familia | Año | Caracteristicas |
|---|---|---|
| Intel 8086/8088 | 1978 | |
| Intel 80286 | Amplió la arquitectura x86 | |
| Intel 80386 | 1985 | |
| Intel Core |
Arquitectura y funcionamiento de un microprocesador.
Arquitectura
Arquitectura
Actividad de aprendizaje
| Elemento | Función |
|---|---|
| CPU | Se utiliza para almacenar datos y programas |
| ALU | Son pequeñas ubicaciones de almacenamiento de alta velocidad dentro de la CPU |
Función
Registros
Registros
Actividad de aprendizaje
| Elemento | Función |
|---|---|
| GPR | Incluye registros de control de interrupciones, registros de segmento |
| SP | Registro que almacena información sobre el estado de las operaciones realizadas por el microprocesador |
Banderas
Banderas
Actividad de aprendizaje
| Elemento | Función |
|---|---|
| D | Se establece cuando una operación aritmética produce un resultado que es demasiado grande |
| S/N | Se establece si el resultado de una operación es igual a cero. |
Unidades funcionales básicas
Unidades funcionales básicas
Actividad de aprendizaje
| Elemento | Función |
|---|---|
| ALU | Maneja las instrucciones de salto condicional e incondicional |
| Store Unit | Se encarga de descodificar las instrucciones del programa |
canales de datos
direcciones
Control
Canal de datos, direcciones y control
Actividad de aprendizaje
| Elemento | Función |
|---|---|
| E/S | Ubicaciones de almacenamiento internas dentro de la CPU que se utilizan para realizar operaciones y cálculos |
| Registro de Bandera | Permiten al programa cambiar de manera no secuencial de una ubicación de memoria a otra |
Arranque de un microcomputador
Actividad de aprendizaje
| Elemento | Función |
|---|---|
| POST | Después de que el POST se complete con éxito, |
| Ejecución | programa que se encarga de cargar el sistema operativo en la memoria RAM |
Organización de memoria principal
Organización de la memoria principal
Método de acceso
Acceso aleatorio (RAM):
Acceso directo y tiempo de acceso constante e independiente de la posición de memoria.
Acceso Secuencial (SAM):
Tiempo de acceso dependiente de la posición de memoria.
Acceso Directo (DAM):
Acceso directo a un sector con tiempo de acceso dependiente de la posición, y acceso secuencial dentro del sector.
Asociativas (CAM):
Acceso por contenido
Organización de la memoria principal
Soporte físico
Semiconductor
RAM, ROM, FLASH, EEPROM, NVRAM, CACHÉ, SRAM, DRAM, SDRAM
Magnético
DD, Cintas, Disquete, tarjeta de cinta, zip, jaz, DVC.
Ópticas
CD-ROM, CD-R, CD-RW, DVD, Mini Disc, memoria SD
Magneto-ópticas
Tecnología UDO, Unidad de disco magnetico-optico de 2.5, 3.5 y 5.5 pulgadas
Organización de la memoria principal
Alterabilidad
RAM
Lectura y escritura
ROM
Memorias de solo lecturas y existen diferentes variantes
ROM: programadas por máscara, cuya información se escribe en el proceso de fabricación y no se puede modificar
PROM, o ROM: programable una sola vez. Utilizan una matriz de diodos cuya unión se puede destruir aplicando sobre ella una sobretensión.
EPROM (Erasable PROM) o RPROM (Reprogramable ROM), cuyo contenido puede borrarse mediante rayos ultravioletas para volverlas a escribir.
EAROM (Electrically Alterable ROM) o EEROM (Electrically Erasable ROM): son memorias que están entre las RAM y las ROM ya que su contenido se puede volver a escribir por medios eléctricos. Se diferencian de las RAM en que no son volátiles.
Organización de la memoria principal
Jerarquía
Organización de 1 programa en M.P.
Es un aspecto esencial en la ejecución eficiente de software.
Organización de 1 programa en M.P.
MonoProgramación:
Organización de 1 programa en M.P.
MultiProgramación:
Ejecución entrelazada o concurrente de dos o más procesos. Se opera sobre más de un proceso a la vez, y los recursos del sistema se distribuyen entre esos procesos.
Tipo de direccionamientos
Tipo de direccionamientos
Inmediato
MOV AX, 5, el valor "5" es inmediato y se carga en el registro AX.Tipo de direccionamientos
Directo
MOV AX, [1234], "1234" es la dirección de memoria directa.Tipo de direccionamientos
Indirecto
MOV AX, [BX], el valor en el registro BX se usa como dirección de memoria para obtener el valor de la memoria.Tipo de direccionamientos
Registrador
ADD AX, BX, los valores se toman directamente de los registros AX y BX.Tipo de direccionamientos
Por Registro-Registro
MOV AX, [SI+DI], se utilizan los registros SI y DI para calcular la dirección de memoria.Tipo de direccionamientos
Por Registro-Desplazamiento
MOV AX, [BX+4], el registro BX se combina con un desplazamiento de 4 para calcular la dirección.Tipo de direccionamientos
Por Registro-Indexado
MOV AX, [BX+SI], los registros BX y SI se utilizan para calcular la dirección.Tipo de direccionamientos
Basado en Pila
Tipo de direccionamientos
Basado en Acumulador:
Tipo de direccionamientos
Actividad de aprendizaje
| Cuestiones | Respuestas |
|---|---|
| ¿Qué es la ram? | |
| ¿Qué necesita llevar un programa en lenguaje ensamblador? |
Actividad de aprendizaje
| SIGLAS | Definición |
|---|---|
| SAM | Tiempo de acceso dependiente de la posición de memoria. |
| DAM | Acceso por contenido |
Actividad de aprendizaje
| Propiedad | Ejemplos |
|---|---|
| Semiconductor | Unidad de disco magnetico-optico de 2.5, 3.5 y 5.5 pulgadas |
| Magneticas | CD-ROM, CD-R, CD-RW, DVD, Mini Disc, memoria SD |
Instrucciones Básicas
Instrucciones Básicas
Instrucciones Básicas
Transferencia de datosLas operaciones de transferencia de datos son esenciales para realizar cálculos y procesamientos en una computadora.
Instrucciones Básicas
Transferencia de datos| Instruccion | aplicación/concepto |
|---|---|
| OUTS | Se utiliza para copiar datos de una ubicación a otra |
| XCHG | Se utilizan para operaciones de pila |
Instrucciones Básicas
Suma y restaPara sumar dos valores, generalmente se usan registros o ubicaciones de memoria.
Se requiere sumar dos valores y almacenar el resultado en un tercer lugar.
Se usará los registros AX y BX
MOV AX, 10 ; Se carga el valor 10 en el registro AX
MOV BX, 20 ; Se carga el valor 20 en el registro BX
ADD AX, BX ; Se suma de AX y BX y se almacena el AXInstrucciones Básicas
Suma y restaPara restar dos valores, generalmente se usan registros o ubicaciones de memoria.
Se requiere sumar dos valores y almacenar el resultado en un tercer lugar.
Se usará los registros AX y BX
MOV AX, 50 ; Se asigna el valor 50 en el registro AX
MOV BX, 30 ; Se asigna el valor 30 en el registro BX
SUB AX, BX ; Se resta el contenido de BX de AX y se almacena el resultado en AXInstrucciones Básicas
Operaciones LógicasInstrucciones Básicas
Operaciones LógicasAND lógico
MOV AL, 11001100b ; Cargamos el valor binario 11001100 en AL
AND AL, 10101010b ; Realizamos un AND lógico con 10101010bEl valor de esta operación, AL contendrá el valor binario 10001000.
Instrucciones Básicas
Operaciones LógicasOR lógico (OR)
MOV AL, 11001100b ; Cargamos el valor binario 11001100 en AL
OR AL, 00110011b ; Realizamos un OR lógico con 00110011bEl valor de esta operación, AL contendrá el valor binario 11111111.
Instrucciones Básicas
Operaciones LógicasXOR lógico (XOR)
MOV AL, 11001100b ; Cargamos el valor binario 11001100 en AL
XOR AL, 00110011b ; Realizamos un XOR lógico con 00110011bEl valor de esta operación, AL contendrá el valor binario 11111111.
Instrucciones Básicas
Operaciones LógicasNOT lógico (NOT)
MOV AL, 11001100b ; Cargamos el valor binario 11001100 en AL
NOT AL ; Realizamos un NOT lógico en ALEl valor de esta operación, AL contendrá el valor binario 00110011.
Instrucciones Básicas
Corrimiento y rotacionesInstrucciones Básicas
Corrimiento y rotacionesCorrimiento (Shift):
Instrucciones Básicas
Corrimiento y rotacionesCorrimiento lógico (Logical Shift)
MOV AL, 11001100b ; AL = 11001100b (204 en decimal)
SHR AL, 2 ; Corrimiento lógico a la derecha de 2 posicionesEl resultado de esta operación, AL contendrá el valor binario 00110011b (51 en decimal).
Instrucciones Básicas
Corrimiento y rotacionesCorrimiento aritmético (Arithmetic Shift)
MOV AL, 11001100b ; AL = 11001100b (204 en decimal)
SAR AL, 2 ; Corrimiento aritmético a la derecha de 2 posicionesEl resultado de esta operación, AL contendrá el valor binario 11110011b (243 en decimal).
Instrucciones Básicas
Corrimiento y rotacionesRotación (Rotate):
Instrucciones Básicas
Corrimiento y rotacionesRotación a la izquierda (Rotate Left, ROL)
MOV AL, 11001100b ; AL = 11001100b (204 en decimal)
ROL AL, 2 ; Rotación a la izquierda de 2 posicionesEl resultado de esta operación, AL contendrá el valor binario 00110011b (51 en decimal), y los bits que se desplazaron a la izquierda regresaron por la derecha.
Instrucciones Básicas
Corrimiento y rotacionesRotación a la derecha (Rotate Right, ROR):
MOV AL, 11001100b ; AL = 11001100b (204 en decimal)
ROR AL, 2 ; Rotación a la derecha de 2 posicionesEl resultado de esta operación, AL contendrá el valor binario 00110011b (51 en decimal), y los bits que se desplazaron a la derecha regresaron por la izquierda.
Instrucciones Básicas
Corrimiento y rotacionesRotación a la derecha (Rotate Right, ROR):
Instrucciones Básicas
Multiplicación y División
Suelen ser operaciones más complejas que las operaciones aritméticas básicas como suma y resta. La implementación varía según la arquitectura de la CPU.
Instrucciones Básicas
Multiplicación y División
Puede realizarse de varias maneras, dependiendo de la arquitectura y las instrucciones disponibles. Una técnica común es el método de multiplicación "por escalonamiento", que se basa en la suma repetida y el desplazamiento de bits.
Multiplicación
Instrucciones Básicas
Multiplicación y División
Suponga que se desea multiplicar dos números, A y B.
Multiplicación
Inicializa un registro para almacenar el resultado (AX ).
Inicializa otro registro (BX) con el valor de B.
Utilice un ciclo para realizar la multiplicación. En cada iteración, realiza los siguiente:
a. Verifica el bit menos significativo de A. Si es 1, suma el valor de BX al resultado.
b. Desplaza A a la derecha y BX a la izquierda (SHR y SHL).
c. Repite hasta que todos los bits de A se hayan procesado.
Al finalizar, el registro que contiene el resultado contendrá el producto de A y B.
Instrucciones Básicas
Multiplicación y División
La división en ensamblador también puede realizarse de varias maneras, dependiendo de la arquitectura y las instrucciones disponibles. La técnica más común es la "división por sustracción y resta".
Divición
Instrucciones Básicas
Multiplicación y División
Suponga que se desea dividir dos números, A y B.
Divición
Inicialice un registro para almacenar el cociente (AX) y otro para el residuo (DX).
Inicializa el registro AX con el valor de A.
Inicializa otro registro (BX) con el valor de B.
Utiliza un ciclo para realizar la división. Cada iteración realiza lo siguiente:
a. Divide el contenido de AX por BX y coloca el cociente en AL y el residuo en AH.
b. Verifica el residuo (AH). Si es cero, termina el ciclo;
c. Desplaza el contenido de DX a la izq y el residuo (AH) en DL.
Al final, el registro AX contendrá el cociente y el registro DX contendrá el residuo de la división.
Instrucciones Básicas
Estructura de un programa en ensamblador
Instrucciones Básicas
Estructura de 1 programa
La estructura de un programa en lenguaje ensamblador suele constar de varias secciones y directivas que organizan el código y definen cómo se ensambla y ejecuta. A continuación, se muestra una estructura básica típica de un programa en ensamblador x86
Instrucciones Básicas
Estructura de un programa
La estructura real de un programa en ensamblador puede variar según la arquitectura y el ensamblador que estés utilizando.
En el siguiente ejemplo es específico para ensamblador x86 en sistemas basados en Linux usando la llamada al sistema int 0x80.
Las secciones y directivas pueden variar según la plataforma y la herramienta que se este utilizando.
Instrucciones Básicas
Estructura de un programa
En esta sección, puedes definir variables y constantes que se utilizan en tu programa. Estos datos pueden ser inicializados.
section .data:
Esta es la sección de código principal donde se encuentra la lógica del programa. Aquí se escriben las instrucciones en ensamblador.
section .text:
Instrucciones Básicas
Estructura de un programa
Define el punto de entrada del programa. En este caso, "_start" es el símbolo global que indica dónde comienza la ejecución.
global _start:
Aquí es donde comienza la ejecución del programa. Es el punto de entrada principal.
_start:
Instrucciones Básicas
Estructura de un programa
En esta sección, escribirás las instrucciones en ensamblador que realizan las operaciones deseadas.
Código de instrucciones:
Al final del programa, generalmente se utilizan llamadas al sistema para realizar acciones como salir del programa (syscall exit).
Terminación del programa:
En esta sección, se pueden definir variables que no están inicializadas en la etapa de compilación. Estas variables se inicializan durante la ejecución.
section .bss:
Instrucciones Básicas
Estructura de un programa
section .data
; Sección de datos
; Define variables y constantes aquí
section .text
global _start
; Sección de código
; Inicio del programa
_start:
; Punto de entrada principal del programa
; Aquí comienza la ejecución
; Código de instrucciones
; ...
; Terminación del programa
mov eax, 1 ; syscall número 1 (exit)
mov ebx, 0 ; código de salida 0
int 0x80 ; realizar la llamada al sistema para salir
section .bss
; Sección de datos sin inicializar (bss)
; Define variables no inicializadas aquí
Instrucciones Básicas
Estructura de un programa
La estructura de un programa en ensamblador para Windows puede variar significativamente debido a diferencias en las llamadas al sistema y las convenciones específicas de Windows.
Instrucciones Básicas
Estructura de un programa
Se utilizan directivas específicas de MASM (Microsoft Macro Assembler) y se incluyen archivos de encabezado de Windows.
La sección .data se utiliza para definir variables y constantes.
La sección .code contiene el código de instrucciones.
Se utiliza el punto de entrada start.
Se realizan llamadas a funciones de Windows como MessageBox y ExitProcess para mostrar un cuadro de diálogo de mensaje y finalizar el programa.
Los datos del cuadro de diálogo de MessageBox se definen en la sección .data.
Instrucciones Básicas
Estructura de un programa
.386
.model flat, stdcall
option casemap : none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
.data
; Sección de datos
; Define variables y constantes aquí
.code
start:
; Punto de entrada principal del programa
; Aquí comienza la ejecución
; Código de instrucciones
; ...
; Llamada a funciones de Windows
invoke MessageBox, NULL, addr MessageBoxText, addr MessageBoxCaption, MB_OK
invoke ExitProcess, 0
.data
; Datos del cuadro de diálogo de MessageBox
MessageBoxCaption db "Ejemplo", 0
MessageBoxText db "Hola, mundo!", 0
end startInstrucciones Básicas
Estructura de un programa
Un programa en ensamblador para macOS generalmente sigue una estructura similar a la de otros sistemas operativos basados en Unix, como Linux, debido a que macOS se basa en el núcleo Unix.
Sin embargo, las llamadas al sistema y las convenciones de llamadas pueden variar.
Instrucciones Básicas
Estructura de un programa
La sección .data se utiliza para definir variables y constantes.
La sección .text contiene el código de instrucciones. El punto de entrada se llama _start, que es el punto de entrada común en programas de ensamblador de sistemas basados en Unix.
Se pueden realizar llamadas al sistema específicas de macOS para realizar tareas como escribir en la consola, abrir archivos, etc.
Puedes definir más datos y espacio para variables no inicializadas en las secciones .data y .bss según sea necesario.
section .data
; Sección de datos
; Define variables y constantes aquí
section .text
global _start
_start:
; Punto de entrada principal del programa
; Aquí comienza la ejecución
; Código de instrucciones
; ...
; Llamadas al sistema de macOS
; ...
section .data
; Datos
; Define más datos aquí
section .bss
; Sección .bss (Bloated Storage Space)
; Define espacio para variables no inicializadas aquí
section .text
; Más código de instrucciones
; ...
section .data
; Datos adicionales
; Define más datos aquí
section .bss
; Más espacio para variables no inicializadasInstrucciones Básicas
Estructura de un programa
Instrucciones Básicas
Estructura de un programa
Actividad de aprendizaje
¿Qué diferencias existen en cada uno de los códigos mostrados?
1. Responde lo siguiente:
Instrucciones Básicas
Hola mundo en ensamblador
Instrucciones Básicas
Text