Está en la página 1de 6

1.

1 Importancia de la programación en lenguaje


ensamblador.
La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente
con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene
la ventaja de que en él se puede realizar cualquier tipo de programas que en los lenguajes de
alto nivel no lo pueden realizar.
Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria. El
lenguaje ensamblador, es un lenguaje de programación de bajo nivel. Consiste en un conjunto
de mnemónicos que representan instrucciones básicas para los computadores,
microprocesadores, micro controladores y otros circuitos integrados programables. Implementa
una representación simbólica de los códigos de máquina binarios y otras constantes necesarias
para programar una arquitectura de procesador y constituye la representación más directa del
código máquina específico para cada arquitectura legible por un programador.

Ventajas
Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este
lenguaje es el más cercano a la máquina la computadora lo procesa más rápido.

Eficiencia de tamaño. - Un programa en ensamblador no ocupa mucho espacio en memoria


porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel

Flexibilidad. - Es flexible porque todo lo que puede hacerse con una máquina, puede hacerse
en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra
forma limitante para explotar al máximo los recursos de la máquina.

Características
· El código escrito en lenguaje ensamblador posee una cierta dificultad de ser
entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un
lenguaje de bajo nivel.
· El lenguaje ensamblador es difícilmente portable, es decir, un código escrito
para un microprocesador, puede necesitar ser modificado, para poder ser usado en
otra máquina distinta. Al cambiar a una máquina con arquitectura diferente,
generalmente es necesario reescribirlo completamente.
· Los programas hechos por un programador experto en lenguaje ensamblador
son generalmente mucho más rápidos y consumen menos recursos del sistema
(memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje
de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden
crear programas que se ejecutan más rápidamente y ocupan menos espacio que
con lenguajes de alto nivel.
· Con el lenguaje ensamblador se tiene un control muy preciso de las tareas
realizadas por un microprocesador por lo que se pueden crear segmentos de código
difíciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre
otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que
generalmente no están disponibles en los lenguajes de alto nivel.
· También se puede controlar el tiempo en que tarda una rutina en ejecutarse,
e impedir que se interrumpa durante su ejecución.
La programación en lenguaje ensamblador, aunque menos común en comparación con
lenguajes de programación de más alto nivel como Python o Java, sigue siendo importante por
varias razones:
1. Acceso directo al hardware: El lenguaje ensamblador proporciona un control muy
preciso sobre la arquitectura de hardware de una computadora. Esto permite a los
programadores optimizar el rendimiento de sus programas al interactuar directamente
con la CPU, la memoria y otros dispositivos de hardware.
2. Eficiencia y velocidad: Los programas escritos en lenguaje ensamblador pueden ser
muy eficientes en términos de uso de recursos y velocidad de ejecución. Dado que cada
instrucción en ensamblador se traduce directamente a una instrucción de máquina, los
programas escritos en este lenguaje pueden ejecutarse rápidamente sin la sobrecarga
de interpretación o compilación adicional.
3. Programación de sistemas y embebida: En entornos de programación de sistemas
operativos, controladores de dispositivos y firmware de bajo nivel, la comprensión del
lenguaje ensamblador es esencial. Muchos sistemas embebidos, como
microcontroladores y sistemas en tiempo real, se programan con lenguaje ensamblador
debido a su eficiencia y control directo sobre el hardware.
4. Comprensión profunda del funcionamiento interno: Aprender lenguaje ensamblador
proporciona a los programadores una comprensión profunda del funcionamiento interno
de una computadora. Esto puede ser útil para el desarrollo de software de seguridad,
depuración de código, ingeniería inversa y optimización de rendimiento en niveles más
altos de abstracción.
5. Desarrollo de habilidades de programación: Escribir código en ensamblador requiere
un pensamiento lógico y detallado sobre cómo interactúan las instrucciones con el
hardware. Esta experiencia puede mejorar las habilidades de resolución de problemas y
la comprensión de conceptos fundamentales de programación, lo que puede ser
beneficioso incluso para programadores que trabajan en lenguajes de más alto nivel.
En resumen, aunque la programación en lenguaje ensamblador puede no ser la opción más
común para el desarrollo de software en la actualidad, sigue siendo importante para ciertos
casos de uso específicos donde se requiere un control preciso del hardware y una optimización
extrema del rendimiento. Además, aprender ensamblador puede proporcionar una base sólida
para comprender mejor la informática en general y mejorar las habilidades de programación en
todos los niveles.
1.2 El procesador y sus registros internos
El procesador, también conocido como unidad central de procesamiento (CPU), es el
componente principal de un sistema informático responsable de ejecutar instrucciones y
procesar datos.
Los registros se encuentran dentro de cada microprocesador y su función
es almacenar los valores de datos, comandos, instrucciones o estados binarios que
ordenan qué dato debe procesarse, como la forma en la que se debe hacer. Un registro no deja
de ser una memoria de velocidad alta y con poca capacidad.
Cada registro puede contener una instrucción, una dirección de almacenamiento o cualquier
tipo de dato. En un procesador encontramos espacios con una capacidad que oscila
entre 4 y 64 bits porque cada registro debe tener un tamaño suficiente para contener una
instrucción. En el caso de que un ordenador de 64 bit, cada registro de tener un tamaño de 64
bits.
Cada microprocesador tiene varias tareas o deberes de procesar información. Recibe la
información en lenguaje binario procedente de las aplicaciones (ceros y unos) para, después,
procesarlos de una forma determinada. Digamos que la CPU traduce esos datos para que
nosotros, los usuarios, los entendamos.
Dentro de un microprocesador encontramos el registro de información, cuya función es
guardar de forma temporal los datos a los que se accede frecuentemente.
Los registros internos son pequeñas áreas de almacenamiento de alta velocidad ubicadas
dentro de la CPU que se utilizan para diversas funciones durante la ejecución de programas.
Aquí hay una descripción general de algunos de los registros internos comunes en una CPU
típica:
1. Registro de instrucción (IR): Este registro almacena la instrucción actualmente en
ejecución. Durante el ciclo de ejecución, la CPU lee la instrucción de la memoria
principal y la coloca en el registro IR para su decodificación y ejecución.
2. Contador de programa (PC): También conocido como puntero de instrucción, este
registro contiene la dirección de memoria de la próxima instrucción a ejecutar. Después
de ejecutar una instrucción, el PC se actualiza para apuntar a la siguiente instrucción en
secuencia.
3. Registro de instrucción siguiente (NIR o IR2): Algunas arquitecturas de CPU incluyen
un registro adicional para almacenar la siguiente instrucción antes de su ejecución. Esto
puede facilitar la ejecución de instrucciones en paralelo o la predicción de bifurcaciones
(branch prediction).
4. Registro de estado (SR): Este registro almacena información sobre el estado actual de
la CPU, como el estado de las banderas de condición (carry, overflow, zero, etc.), el
modo de operación (usuario, supervisor, kernel, etc.), y otros indicadores importantes.
5. Registros generales (R0, R1, ..., Rn): Estos son registros de propósito general
utilizados para almacenar datos temporales y resultados de cálculos durante la
ejecución de programas. La cantidad y el tamaño de estos registros pueden variar
según la arquitectura de la CPU.
6. Registro de dirección de memoria (MAR): Este registro almacena la dirección de
memoria a la que se accede actualmente, ya sea para leer datos de la memoria
principal o para escribir datos en ella.
7. Registro de datos (MDR): También conocido como registro de datos de memoria, este
registro almacena temporalmente los datos leídos desde la memoria principal o los
datos que se van a escribir en ella.
8. Registro de acumulador (ACC): Algunas arquitecturas de CPU incluyen un registro
especial destinado a realizar operaciones aritméticas y lógicas. Los resultados de estas
operaciones se almacenan temporalmente en el registro de acumulador.
Estos son solo algunos de los registros internos comunes en una CPU. La cantidad y la
funcionalidad específica de los registros pueden variar significativamente entre diferentes
arquitecturas de procesadores. Los registros internos son esenciales para el funcionamiento
eficiente de la CPU y juegan un papel crucial en la ejecución de programas y el procesamiento
de datos.
1.3.- MEMORIA.
¿Qué es la memoria RAM?
Es una de las tres memorias mas rapidas del la PC siendo la primera los registros del CPU y
despues las memorias cache L1, L2, L3. Esta memoria es de tipo volatil que quiere decir que
los datos que se hayan guardado dentro de las celdas se pierden al dejar de ser alimentada, en
pocas palabras es una meoria temporal.
La principal funcion de la memoria RAM (Random Accsess Memory) es de almacenar las
intrucciones que va a utilizar el CPU en primera instancia, ademas de que guarda datos de los
programas para ser manupilados posteriormente.

Tipos de memorias que existen y cuales son sus caracteristiacs.


En las RAMs hay dos tipos de memorias la cuales son :

DRAM: Dynamic Random Accsess Memory.- conjunto de pequeños condensadores


que pueden estar cargados o descargados. Debe refrescarse cada pocos milisegundos para
impedir la pérdida de información. Tienen mayor capacidad que las estáticas.

SRAM: Static Random Accsess Memory.- flips-flops internos que almacenan


información binaria.
La información almacenada es válida mientras la unidad está encendida.
Las memorias se agrupan en módulos, que se conectan a la placa base del computador. Según
los tipos de conectores que lleven los módulos, se clasifican en:

Módulos SIMM (Single In-line Memory Module), con 30 o 72 contactos.

Módulos DIMM (Dual In-line Memory Module), con 168 contactos.

Módulos RIMM (RAMBUS In-line Memory Module), con 184 contactos.

Como se organiza la memoria.


Una memoria principal se compone de un conjunto de celdas básicas dotadas de una
determinada organización. Cada celda soporta un bit de información. Los bits se agrupan en
unidades direccionales denominadas palabras.
La longitud de palabra la determina el número de bits que la componen y constituye la
resolución de la memoria (mínima cantidad de información direccionarle). La longitud de
palabra suele oscilar desde 8 bits (byte) hasta 64 bits.
Cada celda básica es un dispositivo físico con dos estados estables (o semi-estables) con
capacidad para cambiar el estado (escritura) y determinar su valor (lectura). Aunque en los
primeros computadores se utilizaron los materiales magnéticos como soporte de las celdas de
memoria principal (memorias de ferritas, de película delgada, etc.) en la actualidad sólo se
utilizan los materiales semiconductores.
Desde un punto de vista conceptual y con independencia de la tecnología, consideraremos la
celda básica de memoria como un bloque con tres líneas de entrada (entrada dato, selección y
lectura/escritura) y una de salida (salida dato). La celda sólo opera (lectura ó escritura) cuando
la selección está activa.

1.4.- INTERRUPCIONES.
¿Qué es una interrupción y cuál es su función?
Una interrupción es una situación especial que suspende la ejecución de un programa de modo
que el sistema pueda realizar una acción para tratarla. Tal situación se da, por ejemplo, cuando
un periférico requiere la atención del procesador para realizar una operación de E/S.
Una interrupción es el rompimiento en la secuencia de un programa para ejecutar un programa
especial llamando una rutina de servicio cuya característica principal es que al finalizar regresa
al punto donde se interrumpió el programa.

Tipos de interrupciones.
Interrupciones de hardware.
Estas son asíncronas a la ejecución del procesador, es decir, se pueden producir en
cualquier momento independientemente de lo que esté haciendo el CPU en ese momento

Excepciones.
Son aquellas que se producen de forma síncrona a la ejecución del procesador. Normalmente
son causadas al realizarse operaciones no permitidas tales como la división entre 0, el
desbordamiento, el acceso a una posición de memoria no permitida, etc.

Interrupciones por software


Son aquellas generadas por un programa en ejecución. Para generarlas, existen
distintas instrucciones en el código máquina que permiten al programador producir una
interrupción

También podría gustarte