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
- Teléfono móvil en modo silencio.
- Las llamadas urgentes /prio se contestan fuera del salón.
- Turnos de una sola persona para ir al WC.
- Dos faltas a la semana sin justificante perderían derecho a las cuestiones de aprendizaje.
- Levantar la mano para participar.
- Respetar la participación de cada alumno.
Lineamientos de clase
- Mantenerse informado acerca de las lecturas, actividades y tareas del curso asistiendo por lo menos dos veces por semana, durante la duración del curso.
- Cumplir dentro del aula virtual con todas las tareas, foros y actividades detalladas por el programa académico y el profesor, en el tiempo y forma establecidos.
-
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
- Tabla comparativa
- Cuestionamientos de aprendizaje.
Descripción de las actividades
Unidad 2 Arquitectura y funcionamiento de un microprocesador.
- Caso de estudio.
- Cuestionamientos de aprendizaje
Descripción de las actividades
Unidad 3 Organización de memoria principal.
- Caso de estudio.
- Cuestionamientos de aprendizaje.
Descripción de las actividades
Unidad 4 Instrucciones básicas.
- Solución de ejercicios
- Cuestionamientos de aprendizaje.
Descripción de las actividades
Unidad 5 Uso de un programa debugger.
- Caso de uso
- Cuestionamientos de aprendizaje.
Descripción de las actividades
Unidad 6. Control de secuencia.
- Caso de estudio
- Cuestionamientos de aprendizaje.
Actividades de encuadre
Actividades de encuadre
Instrucciones:
- En una hoja escribe la respuesta a la siguiente pregunta:
- ¿Qué esperas que se enseñe en este curso?
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
- Debajo de la pregunta anterior responde la siguiente cuestión:
- ¿A qué te comprometes en este curso?
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
- Debajo de la pregunta anterior responde la siguiente cuestión:
- ¿Qué deseas aprender en este curso?
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:
- Presentación / portada
- Introducción
- Conclusión
Párrafos:
- Mayores a tres líneas
- Menores a ocho líneas
- Coherencia entre párrafos
Ortografía - Gramática
- Acentuación.
- Evitar redundancia.
- Pleonasmos.
- Mínimo tres errores.
Recomendaciones para las actividades
Referencias bibliográfica
- Al menos tres citas dentro del trabajo.
- En formato APA 7ma edición.
Lista referencia bibliográfica
- Al menos tres fuentes de diversos autores.
- Con sangría francesa al inicio de cuatro espacios.
- Fuente Times New Roman.
- 12 puntos.
- Sin enlaces activos.
Recomendaciones para las actividades
Introducción y conclusión
- Al menos tres párrafos.
Formato del trabajo
- Fuente Arial.
- Tamaño de título: 14 puntos.
- Tamaño de texto: 12 puntos.
- Interlineado 1.5
- Alineación justificada del texto.
- Los títulos alineados a la izquierda.
- En el encabezado del documento colocar el logotipo del instituto alineado a la derecha. Nombre de la carrera a la izquierda.
Recomendaciones para las actividades
Diagramas:
- Hacerlos en día.
- Exportarlos a jpg / png
Códigos fuentes:
- Colocarlos en github.
- En el documento a entregar, colocar el enlace al código.
Tablas:
- Colocarle al pie de la tabla un nombre a la tabla, bajo el siguiente formato: <Tabla numero consecutivo>. <nombre_tabla> .<Fuente:> <donde_fue_tomada> .
- Colocar un párrafo descriptivo de la tabla.
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:
- Colocarle al pie de la imagen / diagrama / gráfica un nombre, bajo el siguiente formato: <nombre_objeto numero consecutivo>. <nombre_objeto> <fuente:> <donde_fue_tomada> .
- Colocar un párrafo donde se describa la imagen / diagrama / gráfica
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?
Introducción al lenguaje ensamblador
![](https://4.bp.blogspot.com/--FzG0_4vjn4/T6scHtCcQzI/AAAAAAAAA0A/Fn54wPX85AY/s1600/ens-06.jpg)
Lenguaje ensamblador | Introducción
¿Qué es el lenguaje ensamblador?
- Lenguaje de programación de bajo nivel que se utiliza para programar computadoras y dispositivos electrónicos.
- Se compone de códigos mnemotécnicos y representa las instrucciones directas que comprende una unidad de procesamiento central (CPU) o microcontrolador.
Lenguaje ensamblador | Introducción
¿Qué es el lenguaje ensamblador?
- Cada tipo de CPU o microcontrolador tiene su propio conjunto de instrucciones en lenguaje ensamblador, diseñadas para operar directamente en su arquitectura de hardware.
- Cada instrucción generalmente se traduce en una operación específica del hardware, como sumar dos números, mover datos entre registros y realizar saltos condicionales.
Lenguaje ensamblador | Introducción
¿Qué es el lenguaje ensamblador?
- Útil para la programación de sistemas embebidos, donde la eficiencia y el control directo sobre el hardware son esenciales.
- Es más complejo y menos legible en comparación con los lenguajes de programación de alto nivel.
Lenguaje ensamblador | Introducción
¿Qué es el lenguaje ensamblador?
- Los programas escritos en lenguaje ensamblador suelen ser más eficientes en términos de velocidad y uso de recursos en comparación con los programas en lenguajes de alto nivell.
- Suele ser más difíciles de desarrollar y mantener debido a su naturaleza detallada y orientada al hardware.
Lenguaje ensamblador | Introducción
¿Qué es el lenguaje ensamblador?
- Abre tu navegador favorito
- Goglea la palabra "Frexus"
- Selecciona la opción que dice "valor agregado"
- Pulsa en la opción "Curso"
- Selecciona el curso que tiene el nombre de "Ensamblador"
- Lee el recurso Ethercalc
- Crea y completa la tabla siguiente:
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ón
Evolución
- La evolución de los lenguajes ensambladores también ha sido un proceso interesante a lo largo de la historia de la programación.
- Estos lenguajes, que se encuentran en el nivel más bajo de abstracción, han experimentado cambios y mejoras a medida que la tecnología de hardware ha avanzado.
Lenguaje ensamblador | Evolución
Lenguajes de Máquina y Ensamblador (Décadas de 1940 y 1950)
- Los lenguajes de máquina eran esencialmente códigos binarios que las computadoras podían entender directamente.
- La programación en lenguaje de máquina era tediosa y propensa a errores, ya que los programadores tenían que escribir instrucciones en códigos numéricos específicos para cada operación.
Lenguaje ensamblador | Evolución
Lenguajes Ensambladores Simples (Décadas de 1950 y 1960)
- Los lenguajes ensambladores surgieron como una mejora sobre los lenguajes de máquina.
- Estos lenguajes utilizaban mnemotécnicos en lugar de códigos numéricos, lo que los hacía más legibles y más fáciles de escribir.
- Los programadores todavía trabajaban cerca del hardware, pero la programación se volvió más comprensible.
Lenguaje ensamblador | Evolución
Estandarización y Ampliación (Décadas de 1960 y 1970)
- A medida que las computadoras se volvieron más avanzadas, se crearon lenguajes ensambladores estándar para plataformas específicas.
- Uno de los ejemplos más notables es el ensamblador IBM System/360, que se convirtió en un estándar en la industria.
- Además, los lenguajes ensambladores comenzaron a incluir más características y abstracciones para hacer que la programación fuera más eficiente.
Lenguaje ensamblador | Evolución
Lenguajes Ensambladores Avanzados (Décadas de 1980 y 1990)
- Con la llegada de las microcomputadoras y los procesadores más potentes, los lenguajes ensambladores se volvieron más avanzados y ricos en características.
- Los programadores podían aprovechar nuevas instrucciones y modos de direccionamiento para mejorar la eficiencia de los programas.
Lenguaje ensamblador | Evolución
Ensambladores Modernos y Abstracciones (Siglo XXI)
- A medida que la complejidad de los procesadores y sistemas aumentó, los ensambladores modernos introdujeron características que ayudaron a los programadores a lidiar con problemas más complejos.
- También se introdujeron abstracciones más sofisticadas para facilitar la programación, aunque aún mantenían el control preciso sobre el hardware.
Lenguaje ensamblador | Evolución
Ensambladores en la Era de la Computación Cuántica (En desarrollo)
- Con el avance de la computación cuántica, también se están desarrollando ensambladores específicos para estas arquitecturas únicas.
- Estos ensambladores permitirán a los programadores trabajar con las operaciones y las instrucciones de la computación cuántica.
Lenguaje ensamblador | Evolución
Evolución
- Abre tu hoja ethercalc
- Ordena las características de cada década de la tabla siguiente:
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ón
Aplicaciones del lenguaje ensamblador.
- Pesar de su complejidad y nivel de abstracción bajo, tiene aplicaciones importantes en diversos campos.
- Su uso ha disminuido en comparación con lenguajes de programación de alto nivel.
- Relevante en áreas que requieren un control preciso del hardware y un alto rendimiento
Lenguaje ensamblador | Aplicación
Programación de Sistemas Empotrados
- Los sistemas empotrados, como microcontroladores y microprocesadores en dispositivos electrónicos, a menudo se programan en lenguaje ensamblador.
- Estos sistemas requieren un control fino del hardware y un uso eficiente de los recursos, lo que hace que el ensamblador sea una elección adecuada.
Lenguaje ensamblador | Aplicación
Programación de Sistemas Operativos
- Los componentes críticos de los sistemas operativos, como el arranque del sistema y la gestión de interrupciones, se pueden programar en ensamblador debido a la necesidad de acceder directamente al hardware y garantizar la eficiencia.
Lenguaje ensamblador | Aplicación
Programación de Controladores de Dispositivos
- Los controladores de dispositivos, que permiten que el software interactúe con el hardware, a menudo se programan en lenguaje ensamblador.
- Esto es esencial para garantizar que los dispositivos funcionen correctamente y sean eficientes.
Lenguaje ensamblador | Aplicación
Optimización de Código
- En ciertas situaciones, los programadores utilizan el ensamblador para optimizar partes críticas de un programa de alto nivel.
- Esto puede mejorar el rendimiento y la eficiencia del código, especialmente en aplicaciones intensivas en recursos.
Lenguaje ensamblador | Aplicación
Seguridad y Hacking Ético
- En el campo de la seguridad informática, los expertos en seguridad a veces usan el ensamblador para analizar y manipular códigos binarios con fines de hacking ético y seguridad.
Lenguaje ensamblador | Aplicación
Depuración y Análisis de Código
- El lenguaje ensamblador es útil para depurar y analizar programas a nivel de código de máquina.
- Puede ayudar a identificar problemas de rendimiento, errores de software y problemas de seguridad.
Lenguaje ensamblador | Aplicación
Programación de Plataformas Específicas
- En casos donde se requiere un ajuste muy preciso y específico para una plataforma de hardware particular, como en el desarrollo de videojuegos para consolas o software integrado en dispositivos específicos, el ensamblador puede ser utilizado para lograr el máximo rendimiento.
Lenguaje ensamblador | Aplicación
- Aunque las aplicaciones del lenguaje ensamblador pueden ser limitadas debido a su complejidad y falta de portabilidad entre diferentes arquitecturas de hardware, sigue siendo una herramienta valiosa en situaciones en las que el control preciso del hardware y la optimización son críticos.
- En la mayoría de los casos, los programadores que utilizan lenguajes de programación de alto nivel para crear aplicaciones más rápidamente y con menos esfuerzo, reservando el ensamblador para tareas específicas que requieren un nivel extremo de control y eficiencia.
Lenguaje ensamblador | Aplicación
Aplicación
- Abre tu hoja ethercalc.
- Genera una pequeña búsqueda donde encuentres más aplicaciones del lenguaje ensamblador.
- Completa la tabla siguiente:
Actividad de Aprendizaje
Aplicación | Limitante | Ventaja |
---|---|---|
Lenguaje ensamblador | fam. Intel
la familia de microprocesadores de Intel.
- Intel es una de las compañías más prominentes en la industria de microprocesadores y ha desarrollado una amplia gama de procesadores que han tenido un impacto significativo en la informática.
- La relación entre los microprocesadores de Intel y el lenguaje ensamblador es fundamental, ya que estos procesadores se programan a través de instrucciones en lenguaje ensamblador.
Lenguaje ensamblador | fam. Intel
Familia Intel 8086/8088
- El Intel 8086, lanzado en 1978, fue uno de los primeros microprocesadores de 16 bits y marcó el inicio de la arquitectura x86 de Intel.
- Su versión ligeramente reducida, el Intel 8088, se utilizó en la primera computadora personal IBM PC.
- Estos microprocesadores estaban programados en lenguaje ensamblador y su conjunto de instrucciones definió gran parte de la arquitectura x86 que sigue utilizándose hoy en día.
Lenguaje ensamblador | fam. Intel
Familia Intel 80286
- El Intel 80286, lanzado en 1982, amplió la arquitectura x86 con características como la protección de memoria y el modo protegido.
- Esto permitió la ejecución de múltiples tareas de manera más segura y eficiente.
- La programación en lenguaje ensamblador para el 80286 involucró trabajar con estas nuevas características y modos de operación.
Lenguaje ensamblador | fam. Intel
Familia Intel 80386
- El Intel 80386, lanzado en 1985, introdujo el modo protegido avanzado y la capacidad de multitarea más sólida.
- Este microprocesador abrió la puerta a sistemas operativos más avanzados y programas de mayor complejidad.
- La programación en lenguaje ensamblador para el 80386 se volvió más compleja debido a las características adicionales.
Lenguaje ensamblador | fam. Intel
Familia Intel Pentium y Procesadores Posteriores
- Los procesadores Intel Pentium y sus versiones posteriores continuaron mejorando la arquitectura x86 con mejor rendimiento y características adicionales.
- Se desarrollaron procesadores más rápidos y potentes, los programadores podían aprovechar la potencia de cálculo adicional al escribir código en lenguaje ensamblador.
Lenguaje ensamblador | fam. Intel
Familia Intel Core y Procesadores Modernos
- La familia de procesadores Intel Core, introducida en la década de 2000, llevó la arquitectura x86 a nuevos niveles de rendimiento y eficiencia energética.
- Estos procesadores siguen siendo programados en lenguaje ensamblador para aprovechar al máximo sus capacidades y características avanzadas, como la tecnología de múltiples núcleos y la optimización de instrucciones.
Lenguaje ensamblador | fam. Intel
Familia Intel
- Abre tu hoja ethercalc..
- Completa la tabla siguiente:
Actividad de Aprendizaje
Familia | Año | Caracteristicas |
---|---|---|
Intel 8086/8088 | 1978 | |
Intel 80286 | Amplió la arquitectura x86 | |
Intel 80386 | 1985 | |
Intel Core |
Unidad 2
Arquitectura y funcionamiento de un microprocesador.
![](https://www.eniun.com/wp-content/uploads/arquitectura-Von-Neumann-1024x578.png)
Arquitectura y funcionamiento de un microprocesador.
- Registros y banderas.
- Unidades funcionales básicas.
- Canales de datos, direcciones y control.
- Proceso de arranque de una microcomputadora.
Arquitectura
- La arquitectura de un microprocesador se refiere a la estructura interna y al diseño de hardware que permite al microprocesador llevar a cabo operaciones de procesamiento de datos.
- El funcionamiento de un microprocesador se basa en la ejecución de instrucciones que se almacenan en la memoria y se procesan secuencialmente.
Arquitectura
Actividad de aprendizaje
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Lea la lectura recomendada: "microprocesador su función y arquitectura."
- Completa lo siguiente
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
- El funcionamiento del microprocesador se basa en la ejecución secuencial de instrucciones almacenadas en la memoria, y estas instrucciones son interpretadas y ejecutadas por la CPU.
- El rendimiento del microprocesador se mide en términos de velocidad de reloj (frecuencia) y eficiencia en la ejecución de instrucciones. Los microprocesadores modernos suelen ser altamente complejos y están diseñados para ejecutar una amplia variedad de instrucciones y operaciones de manera eficiente.
Registros
- Los registros son elementos de almacenamiento de alta velocidad ubicados dentro de la Unidad Central de Procesamiento (CPU) en la arquitectura de un microprocesador.
- Estos registros son componentes fundamentales que desempeñan un papel crucial en la ejecución de instrucciones y operaciones en un microprocesador.
- Cada microprocesador tiene un conjunto específico de registros que varía en tamaño y función según la arquitectura.
Registros
Actividad de aprendizaje
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Lea la lectura recomendada: "¿y los registros?"
- Completa lo siguiente
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
- En ensamblador, las "banderas" son indicadores de estado que se almacenan en el registro de estado (también conocido como el registro de banderas o flags register) de la CPU.
- Estas banderas reflejan el resultado de las operaciones que se han realizado y son esenciales para controlar el flujo de un programa y tomar decisiones condicionales.
- Cada arquitectura de CPU tiene su conjunto de banderas,
Banderas
Actividad de aprendizaje
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Lea la lectura recomendada: "Banderas"
- Completa lo siguiente
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
- Son unidades dentro de la Unidad Central de Procesamiento (CPU) de una computadora que realizan funciones específicas durante la ejecución de instrucciones.
- Estas son esenciales para llevar a cabo operaciones aritméticas, lógicas y de control en un microprocesador
Unidades funcionales básicas
Actividad de aprendizaje
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Lea la lectura recomendada: "Unidades función básicas"
- Completa lo siguiente
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
- Se refieren a las rutas a través de las cuales se transfieren los datos entre diferentes partes de la CPU o entre la CPU y otros dispositivos.
- Estos canales permiten que los datos se muevan de un lugar a otro dentro del sistema de manera eficiente y se utilizan en diversas operaciones de lectura, escritura y manipulación de datos
direcciones
- Son ubicaciones específicas en la memoria del sistema o en registros de la CPU donde se almacenan datos o se pueden acceder a ellos.
- Las direcciones son fundamentales para la gestión y el acceso a la memoria y a los registros, lo que permite a la CPU leer, escribir y manipular datos durante la ejecución de un programa.
Control
- Es la capacidad de gestionar el flujo de ejecución de un programa.
- Esto implica tomar decisiones sobre qué instrucciones ejecutar y en qué orden, basándose en condiciones o eventos específicos.
- El control se logra mediante el uso de instrucciones de salto (jump) y ramificaciones condicionales que permiten desviar el flujo de ejecución del programa.
Canal de datos, direcciones y control
Actividad de aprendizaje
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Lea la lectura recomendada: "Canal de datos, direcciones y control"
- Completa lo siguiente
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
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Lea la lectura recomendada: "arranque de un microcomputador"
- Completa lo siguiente
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 |
Unidad 3
![](https://media1.giphy.com/media/LqPCd3G1moFMPw5IFo/giphy.gif)
Organización de memoria principal
Organización de memoria principal
- Organización de un programa en memoria principal.
- Tipos de direccionamiento.
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2039319/images/10794795/Captura_de_pantalla_2023-09-29_a_la_s__11.53.11.png)
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:
- Sólo hay un proceso en memoria.
- Cada proceso debe contener los controladores de los dispositivos de entrada / salida que use.
- Tres formas de organizar la memoria (con un s.o. y un proceso de usuario)
- El usuario escribe un comando sobre el terminal.
- El sistema operativo carga el programa desde disco a memoria y lo ejecuta.
- Al finalizar dicho programa, el sistema operativo muestra el prompt y espera a otra demanda.
- Mala utilización de la memoria (desperdicio).
- Tiempo de ocio del procesador central en entrada / salida.
- Limitación en el tamaño total del programa.
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.
- Desdoblamiento de un programa en dos o más procesos. Hace más fácil programar una aplicación.
- Aprovechamiento de la CPU. A consecuencia de solapar los tiempos de entrada / salida con los de CPU.
Tipo de direccionamientos
- Son formas en que las instrucciones de un lenguaje de programación o arquitectura de computadora acceden a los operandos o datos en la memoria o en los registros.
- Estos tipos de direccionamiento determinan cómo se especifican las fuentes y destinos de los datos para cada instrucción.
Tipo de direccionamientos
Inmediato
- La fuente de datos es el valor literal de la propia instrucción.
- Por ejemplo, en la instrucción
MOV AX, 5
, el valor "5" es inmediato y se carga en el registro AX.
Tipo de direccionamientos
Directo
- La dirección de memoria del operando se proporciona directamente en la instrucción.
- Por ejemplo, en
MOV AX, [1234]
, "1234" es la dirección de memoria directa.
Tipo de direccionamientos
Indirecto
- La instrucción utiliza una dirección de memoria almacenada en un registro para acceder a los datos.
- Por ejemplo, en
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
- El operando proviene de un registro específico.
- Por ejemplo, en
ADD AX, BX
, los valores se toman directamente de los registros AX y BX.
Tipo de direccionamientos
Por Registro-Registro
- Se utilizan dos registros para especificar la dirección de memoria del operando.
- Por ejemplo, en
MOV AX, [SI+DI]
, se utilizan los registros SI y DI para calcular la dirección de memoria.
Tipo de direccionamientos
Por Registro-Desplazamiento
- Se utiliza un registro y un desplazamiento constante para calcular la dirección de memoria del operando.
- Por ejemplo, en
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
- Se utilizan un registro base y un registro índice para calcular la dirección de memoria.
- Por ejemplo, en
MOV AX, [BX+SI]
, los registros BX y SI se utilizan para calcular la dirección.
Tipo de direccionamientos
Basado en Pila
- Los operandos se toman de la pila, utilizando un registro de puntero de pila (como SP o BP) como referencia para la dirección de la pila.
Tipo de direccionamientos
Basado en Acumulador:
- Uno de los operandos se encuentra en un acumulador y el otro puede ser inmediato o de otro tipo.
Tipo de direccionamientos
- La elección del tipo de direccionamiento puede afectar significativamente la eficiencia y la flexibilidad de un conjunto de instrucciones y puede variar según la arquitectura de la CPU y el lenguaje de programación utilizado.
- Cada tipo de direccionamiento tiene sus propias ventajas y desventajas, y se selecciona en función de las necesidades específicas de la tarea o del diseño de la arquitectura.
Actividad de aprendizaje
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Lea la lectura recomendada: "La ram y el ensamblador"
- Completa lo siguiente
Cuestiones | Respuestas |
---|---|
¿Qué es la ram? | |
¿Qué necesita llevar un programa en lenguaje ensamblador? |
Actividad de aprendizaje
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Navega en la presentación y
- Ordena lo siguiente
SIGLAS | Definición |
---|---|
SAM | Tiempo de acceso dependiente de la posición de memoria. |
DAM | Acceso por contenido |
Actividad de aprendizaje
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Navega en la presentación y
- Ordena lo siguiente
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
![](https://www.somosbinarios.es/wp-content/uploads/2013/09/Aprender-Ensamblador-1200x675.png)
Instrucciones Básicas
- Transferencia de datos.
- Suma y resta.
- Operaciones lógicas.
- Corrimientos y rotaciones.
- Multiplicación y división (auto estudio).
Instrucciones Básicas
Transferencia de datos
- Movimiento de datos entre registros, memoria y otros dispositivos dentro de una computadora.
- Parte fundamental de la programación en ensamblador ya que muchas instrucciones están diseñadas para cargar, almacenar, copiar o manipular datos.
Las operaciones de transferencia de datos son esenciales para realizar cálculos y procesamientos en una computadora.
Instrucciones Básicas
Transferencia de datos
- Abra el navegador de su preferencia.
- Escriba en la barra de búsqueda la palabra frexus.
- Seleccione la opción que dice "Valor agregado"
- Selecciona la opción "Cursos"
- Buscar y hacer clic donde esté el nombre de la materia.
- Lea la lectura recomendada: Transferencia de datos
- Ordena lo siguiente
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 resta
Para 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 AX
Instrucciones Básicas
Suma y resta
Para 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 AX
Instrucciones Básicas
Operaciones Lógicas
- Las operaciones lógicas se utilizan para manipular bits individuales en registros o en memoria.
- Estas operaciones incluyen:
- AND lógico,
- OR lógico,
- XOR lógico y
- NOT lógico, entre otras.
Instrucciones Básicas
Operaciones Lógicas
AND lógico
- La operación AND lógico toma dos operandos y realiza una operación "y" bit a bit en ellos.
- El resultado será 1 en los bits donde ambos operandos tengan un 1 y 0 en cualquier otro caso.
MOV AL, 11001100b ; Cargamos el valor binario 11001100 en AL
AND AL, 10101010b ; Realizamos un AND lógico con 10101010b
El valor de esta operación, AL contendrá el valor binario 10001000.
Instrucciones Básicas
Operaciones Lógicas
OR lógico (OR)
- La operación OR lógico toma dos operandos y realiza una operación "o" bit a bit en ellos.
- El resultado será 1 en los bits donde al menos uno de los operandos tenga un 1.
MOV AL, 11001100b ; Cargamos el valor binario 11001100 en AL
OR AL, 00110011b ; Realizamos un OR lógico con 00110011b
El valor de esta operación, AL contendrá el valor binario 11111111.
Instrucciones Básicas
Operaciones Lógicas
XOR lógico (XOR)
- La operación XOR lógico toma dos operandos y realiza una operación "o exclusivo" bit a bit en ellos.
- El resultado será 1 en los bits donde uno de los operandos tenga un 1, pero no en ambos.
MOV AL, 11001100b ; Cargamos el valor binario 11001100 en AL
XOR AL, 00110011b ; Realizamos un XOR lógico con 00110011b
El valor de esta operación, AL contendrá el valor binario 11111111.
Instrucciones Básicas
Operaciones Lógicas
NOT lógico (NOT)
- La operación NOT lógico invierte todos los bits de un operando.
MOV AL, 11001100b ; Cargamos el valor binario 11001100 en AL
NOT AL ; Realizamos un NOT lógico en AL
El valor de esta operación, AL contendrá el valor binario 00110011.
Instrucciones Básicas
Corrimiento y rotaciones
- Son operaciones utilizadas para mover o manipular los bits en un registro o en la memoria.
- Estas operaciones son comunes cuando se trabaja con máscaras de bits, desplazamiento de valores o manipulación de datos a nivel de bits.
Instrucciones Básicas
Corrimiento y rotaciones
Corrimiento (Shift):
- Implica mover los bits de un registro hacia la izquierda o hacia la derecha en una cantidad específica de posiciones.
Instrucciones Básicas
Corrimiento y rotaciones
Corrimiento lógico (Logical Shift)
- En esta operación, los bits se desplazan hacia la izquierda o hacia la derecha, y los bits vacíos se llenan con ceros.
MOV AL, 11001100b ; AL = 11001100b (204 en decimal)
SHR AL, 2 ; Corrimiento lógico a la derecha de 2 posiciones
El resultado de esta operación, AL contendrá el valor binario 00110011b (51 en decimal).
Instrucciones Básicas
Corrimiento y rotaciones
Corrimiento aritmético (Arithmetic Shift)
- los bits se desplazan hacia la izquierda o hacia la derecha, y los bits vacíos se llenan con el valor del bit más significativo (el bit de signo).
MOV AL, 11001100b ; AL = 11001100b (204 en decimal)
SAR AL, 2 ; Corrimiento aritmético a la derecha de 2 posiciones
El resultado de esta operación, AL contendrá el valor binario 11110011b (243 en decimal).
Instrucciones Básicas
Corrimiento y rotaciones
Rotación (Rotate):
- Implica mover los bits de un registro hacia la izquierda o hacia la derecha, pero en lugar de perder los bits que se desplazan fuera del registro, estos bits se reintroducen en el otro extremo del registro
Instrucciones Básicas
Corrimiento y rotaciones
Rotación a la izquierda (Rotate Left, ROL)
- Los bits se desplazan hacia la izquierda, y los bits que salen por el extremo izquierdo vuelven a entrar por el extremo derecho.
MOV AL, 11001100b ; AL = 11001100b (204 en decimal)
ROL AL, 2 ; Rotación a la izquierda de 2 posiciones
El 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 rotaciones
Rotación a la derecha (Rotate Right, ROR):
- Los bits se desplazan hacia la derecha, y los bits que salen por el extremo derecho vuelven a entrar por el extremo izquierdo.
MOV AL, 11001100b ; AL = 11001100b (204 en decimal)
ROR AL, 2 ; Rotación a la derecha de 2 posiciones
El 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 rotaciones
Rotación a la derecha (Rotate Right, ROR):
- Estas operaciones son útiles en situaciones en las que se necesita mover o rotar bits dentro de registros para realizar operaciones de desplazamiento, enmascaramiento o manipulación de datos a nivel de bits.
- La elección entre corrimientos lógicos o aritméticos, así como entre rotaciones a la izquierda o a la derecha, dependerá de los requisitos específicos de la aplicación.
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
ySHL
).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
yExitProcess
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 start
Instrucciones 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 inicializadas
Instrucciones 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
Ensamblador_I
By Alfredo de Jesús Gutiérrez Gómez
Ensamblador_I
Slides is a presentation platform for developers built on top of the reveal.js open source HTML presentation framework. We offer a wide range of developer-focused features like step-by-step code highlighting, a CSS editor, LaTeX typesetting and more.
- 36