TECNOLÓGICO NACIONAL DE
MÉXICO
Instituto Tecnológico Superior de
Guasave
Unidad 1: Importancia de la programación
LENGUAJES DE
LENGUAJES DE INTERFAZ
Introducción al lenguaje ensamblador
El lenguaje ensamblador es un lenguaje de
bajo nivel, este tipo de programación nos
proporciona las herramientas para interactuar
con el hardware sus ventajas radican en la
eficiencia de tamaño y flexibilidad de los
programas sus desventajas son el tiempo de
programación y peligro de afectar recursos
inesperadamente.
LENGUAJES DE INTERFAZ
1.1 Importancia de la programación en 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. Este lenguaje proporciona las herramientas para tomar
control sobre todo lo que la computadora realiza físicamente.
LENGUAJES DE INTERFAZ
Ventajas y desventajas del Lenguaje Ensamblador
Ventajas
1.- Como trabaja directamente con el microprocesador, al ejecutar un
programa, la computadora lo procesa más rápido
LENGUAJES DE INTERFAZ
2.- Eficiencia de tamaño:
Un programa en ensamblador no ocupa mucho espacio en
memoria porque no tiene que cargar librerías y demás, como
lo hacen los lenguajes de alto nivel.
LENGUAJES DE INTERFAZ
3. 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 limitantes para explotar al máximo los recursos de la
máquina. O sea que en lenguaje ensamblador se pueden hacer tareas
específicas que en un lenguaje de alto nivel no se pueden llevar acabo porque
tienen ciertas limitantes que no se lo permite
LENGUAJES DE INTERFAZ
Desventajas
1.- Tiempo de programación: Como es un lenguaje de bajo nivel requiere más
instrucciones para realizar el mismo proceso, en comparación con un lenguaje
de alto nivel. Por otro lado, requiere de más cuidado por parte del
programador, pues es propenso a que los errores de lógica se reflejen más
fuertemente en la ejecución.
LENGUAJES DE INTERFAZ
2.- Programas fuente grandes:
Por las mismas razones que aumenta el tiempo, crecen los programas fuentes;
simplemente requerimos más instrucciones primitivas para describir procesos
equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los
programas, y nuevamente reduce la productividad de los programadores.
LENGUAJES DE INTERFAZ
3.- Peligro de afectar recursos inesperadamente:
Que todo error que podamos cometer, o todo riesgo que podamos tener,
podemos afectar los recursos de la máquina, programar en este lenguaje lo más
común que pueda pasar es que la máquina se bloquee o se reinicialice. Porque
con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de
instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto
nivel.
LENGUAJES DE INTERFAZ
4.- Falta de portabilidad:
Porque para cada máquina existe un lenguaje ensamblador; por ello,
evidentemente no es una selección apropiada de lenguaje cuando
deseamos codificar en una máquina y luego llevar los programas a
otros sistemas operativos o modelos de computadoras
LENGUAJES DE INTERFAZ
1.2 El procesador y sus registros internos
Definición de registros:
un registro es una memoria de alta velocidad y poca capacidad, integrada en el
microprocesador, que permite guardar transitoriamente y acceder a valores
muy usados, generalmente en operaciones matemáticas
LENGUAJES DE INTERFAZ
Función de los registros:
• Los registros están en la cumbre de la jerarquía de memoria, y son la manera más rápida que
tiene el sistema de almacenar datos. Los registros se miden generalmente por el número de
bits que almacenan; por ejemplo, un "registro de 8 bits" o un "registro de 32 bits“.
• La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta
velocidad llamada registro. Algunos de los registros están dedicados al control, y solo la unidad
de control tiene acceso a ellos. Los registros restantes son los registros de uso general y el
programador es el usuario que tiene acceso a ellos.
LENGUAJES DE INTERFAZ
Los registros del procesador se emplean para controlar instrucciones en ejecución,
manejar direccionamiento de memoria y proporcionar capacidad aritmética.
Los registros son direccionales por medio de un nombre. Los bits por convención, se
numeran de derecha a izquierda
LENGUAJES DE INTERFAZ
Algunos registros básicos:
Los registros internos del procesador se puede clasificar en 6 tipos
diferentes:
1. Registros de segmento
2. Registros de propósito general
3. Registros de apuntadores
4. Registros de banderas
5. Registros de Puntero de instrucción
6. Registros de Pila
LENGUAJES DE INTERFAZ
LENGUAJES DE INTERFAZ
1.3 La memoria principal (RAM)
La memoria principal está formada por un conjunto de unidades llamadas
palabras. Dentro de cada una de estas palabras se guarda la información
que constituye una instrucción o parte de ella o un dato o parte de un dato.
LENGUAJES DE INTERFAZ
Organización de la Memoria RAM
A la cantidad de palabras que forman la memoria principal se le denomina
capacidad de memoria. Una palabra esta formada a su vez de unidades más
elementales llamadas bits, del mismo modo que en el lenguaje natural “Una
palabra esta formada por letras”.
LENGUAJES DE INTERFAZ
Operaciones Posibles:
RAM estática: flips-flops internos que almacenan información binaria.
La información almacenada es válida mientras la unidad está
encendida.
RAM dinámica: conjunto de pequeños condensadores que pueden
estar cargados o descargados. Debe refrescarse cada pocos
milisegundos para impedir la pérdida de información.
LENGUAJES DE INTERFAZ
1.4 EL CONCEPTO DE
INTERRUPCIONES
Es un evento que
permite cambiar el flujo
de ejecución de la CPU
sin que intervenga la
ejecución de las
instrucciones
HARDWARE SOFTWARE
Son provocadas por Son programadas
dispositivos externos. No
son programadas y ocurre por el usuario.
en cualquier momento. Generalmente E/S.
LENGUAJES DE INTERFAZ
Ejemplo rutina de interrupción
LENGUAJES DE INTERFAZ
PASOS PARA EL
PROCESAMIENTO
1. Terminar la ejecución de la instrucción máquina en curso.
2. Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso, pueda
seguir ejecutando el programa a partir de la última instrucción.
3. La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (ISR, Interrupt Service
Routine) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la interrupción.
4. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la
pila en el paso 2 y retorna al programa que se estaba usando anteriormente.
LENGUAJES DE INTERFAZ
EJEMPLOS 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
int 15h-->Servicios del sistema
int 16h-->Funciones de entrada del teclado
int 18h-->Entrada con el Basic de Rom
int 19h-->Cargador de arranque
int 1Ah-->Leer y establecer la hora
int 1Bh-->Obtener el control con una interrupcion de teclado.
int 20h-->Terminar un programa
int 33h->Funciones del Raton
LENGUAJES DE INTERFAZ
1.5 Llamadas a servicios del sistema
Una llamada al sistema es un método o función que puede invocar un proceso para solicitar
un cierto servicio al sistema operativo.
En otras palabras, el sistema operativo actúa como intermediario, ofreciendo una interfaz de
programación (API) que el programa puede usar en cualquier momento para solicitar
recursos gestionados por el sistema operativo.
LENGUAJES DE INTERFAZ
Algunos ejemplos de llamadas al sistema son las siguientes:
Time: que permite obtener la fecha y hora del sistema.
Write: que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una
pantalla o un disco magnético.
Read: que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco
magnético.
Open: que es usada para obtener un descriptor de un fichero del sistema, ese fichero suele
pasarse a write
LENGUAJES DE INTERFAZ
1.6 Modos de direccionamiento
Los llamados modos de direccionamiento son las diferentes maneras de especificar
en informática un operando dentro de una instrucción en lenguaje ensamblador.
Un modo de direccionamiento especifica la forma de calcular la dirección de memoria
efectiva de un operando mediante el uso de la información contenida en registros y / o
constantes, contenida dentro de una instrucción de la máquina o en otra parte.
LENGUAJES DE INTERFAZ
LENGUAJES DE INTERFAZ
1.7 Proceso de ensamblado y ligado
1. El programa utiliza un editor de texto para crear un archivo de texto ASCII, conocido como
archivo de código fuente.
2. El ensamblador lee el archivo de código fuete y produce un archivo de código objeto, una
traducción del programa a lenguaje máquina. De manera opcional, produce un archivo de
listado. Si ocurre un error, el programador debe regresar al paso 1 y corregir el programa.
LENGUAJES DE INTERFAZ
3. El enlazador lee el archivo de código objeto y verifica si el programa contiene alguna
llamada a los procedimientos en una biblioteca de enlace. El enlazador copia cualquier
procedimiento requerido de la biblioteca de enlace, lo combina con el archivo de código
objeto y produce el archivo ejecutable. De manera opcional, el enlazador puede producir
un archivo de mapa.
4. La herramienta cargador (loader) del sistema operativo lee el archivo ejecutable y lo
carga en memoria, y bifurca la CPU hacia la dirección inicial del programa, para que éste
empiece a ejecutarse.
LENGUAJES DE INTERFAZ
1.8 Desplegado de mensajes en el monitor
Todos los gráficos y el texto que se muestran en el monitor se escriben en la
RAM de visualización de video, para después enviarlos al monitor mediante el
controlador de video. El controlador de video es en sí un microprocesador de
propósito especial, que libera a la CPU principal del trabajo de controlar el
hardware de video.
LENGUAJES DE INTERFAZ
Un monitor de pantalla de cristal líquido (LCD) digital directo recibe un flujo de bits digitales
directamente desde el controlador de video, y no requiere del barrido de trama.