Beruflich Dokumente
Kultur Dokumente
LENGUAJE ENSAMBLADOR
Ing. Alejandro Castañeda Pacheco
LEGUAJE DE PROGRAMACIÓN
• Es un lenguaje diseñado para describir el conjunto de
acciones consecutivas que un equipo debe ejecutar.
• Consiste en un conjunto de reglas sintácticas y semánticas
que definen su estructura y el significado de sus elementos,
respectivamente.
• Alto nivel
• Permite al programador escribir las instrucciones de un programa
utilizando palabras o expresiones sintácticas muy similares al inglés.
• Logran la independencia del tipo de máquina
• Se aproximan al lenguaje natural
• Bajo nivel
• Proporciona un conjunto de instrucciones aritmeticológicas sin la
capacidad de encapsular dichas instrucciones en funciones que
no estén ya contempladas en la arquitectura del hardware.
(nemotécnicas).
• Lenguajes de medio nivel
• C
1.1 IMPORTANCIA DE LA
PROGRAMACIÓN EN
LENGUAJE ENSAMBLADOR.
• Radica principalmente que se trabaja directamente con el
microprocesador.
• Dificultad de entendimiento
• Difícil de ser portable
• Al ser programado directamente sobre Hardware, son
generalmente más rápidos y consumen menos recursos
del sistema (memoria RAM y ROM).
• Con el lenguaje ensamblador se tiene un control muy
preciso de las tareas realizadas por un Microprocesador
• Puede controlar el tiempo en que tarda una Rutina en
ejecutarse, e impedir que se interrumpa durante su
ejecución
• Consiste en una serie de Instrucciones que corresponden al
flujo de órdenes ejecutables que pueden ser cargadas en
la Memoria de un sistema basado en Microprocesador.
• MOV al, 061h
1.2 EL PROCESADOR Y SUS
REGISTROS INTERNOS
• 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.
• Manejan direccionamiento de memoria y proporciona capacidad
aritmética.
• Los registros son direccionables por medio de un nombre.
• Los registros internos del procesador se puede clasificar en 6 tipos
diferentes
• Registros de segmento
• Registros de propósito general
• Registros de apuntadores
• Registros de banderas
• Registros de Puntero de instrucción
• Registros de Pila
REGISTROS DE SEGMENTO
• Bandera de signo
• Muestra el bit más significativo del resultado de una operación, el cual
denota el signo del número
• Bandera de dirección
• Controla la selección de autoincremento (D=0) o autodecremento (D=1),
sólo se utiliza con las instrucciones para el manejo de cadenas de
caracteres.
• Bandera de desbordamiento
• Se utiliza en la aritmética de enteros con signo cuando un número
sobrepasa la capacidad de representación del registro
REGISTROS DE PILA
• Se usan como complemento al registro y son:
• Característica
• Se trata de una memoria volátil, es decir, que pierde sus
datos cuando deja de recibir energía.
• Hay dos tipos básicos de memoria RAM
• Dinamicas
• Implican una "lectura destructiva", es decir, que la información se pierde al
leerla y para evitarlo se deben restaurar dichos datos con una operación de
"refresco".
• Tamaño
• MegaBytes
• GigaBytes
• Brinda
• Simultaneidad de vario programas
• Incremento en la velocidad de conexión o de funcionamiento del
ordenador.
• La placa base y su chipset pueden limitar el máximo de
memoria RAM que puedes instalar en tu sistema
1.4 EL CONCEPTO DE
INTERRUPCIONES (IRQ)
• Ejemplo
• Cuando un periférico requiere la atención del procesador para
realizar una operación de E/S.
• Ciclo del procesamiento
• Desbordamiento de pila
• Direccionamiento invalido
• Instrucción invalida
• Violación de protección
• Ejemplo
• Inicio de las operaciones de Entrada/Salida
• Asignación de memoria y otros recursos
• Lectura o escritura de disco
• Mostrar por pantalla
• Implica que una o mas instrucciones especiales serán ejecutas por el SO.
• Interrupciones de falla de maquina
• Si ocurre esta se suspende la ejecución del programa que esta en la CPU para
atender la interrupción producida y reinicia la ejecución del programa que fue
interrumpido.
• Interrupciones Síncronas
• Son aquellas provocadas por la ejecución de una instrucción de programa
en el CPU, siendo éstas de una naturaleza tal, que necesitan de atención
especial; debido a los requerimientos necesarios para su tratamiento y los
resultados que se producen durante el mismo.
• Como estas son interrupciones internas al programa que se está
ejecutando, los únicos tipos de interrupciones que pueden ser provocadas
por esta causa son:
• Interrupciones de programa.
• Interrupciones de llamada al supervisor.
• Interrupciones Asíncronas
• Time:
• Permite obtener la fecha y hora del sistema.
• Write:
• Se emplea para escribir un dato en un cierto dispositivo de salida, tales como una
pantalla o un disco magnético.
• Read:
• Es usada para leer de un dispositivo de entrada, tales como un teclado o un disco
magnético.
• Open:
• Es usada para obtener un descriptor de un fichero del sistema, ese fichero suele
pasarse a write.
• LLAMADAS AL SISTEMA (Categorías)
Contador del
programa
Apuntador de
pila
Base
(Desplazamiento)
Absoluto
Directo Registro general
Relativo a registro
(indexados)
Indirecto Índice
Auto-incremental
Auto indexados
Auto-
decremental
• Direccionamiento implícito
• También llamado inherente, el operando se especifica en la misma
definición de la instrucción. Se usa para hacer referencia a operandos de
dos tipos:
• Registros: En el caso de que el código de operación se refiera en particular a un
registro.
• Típico de las organizaciones de un solo acumulador.
• Operandos en la pila: En el caso de que la operación se realice siempre sobre el
dato situado en la cima de pila.
• La mayoría de las instrucciones de los ordenadores con organización de pila. Estas
operaciones llevan implícitos los operandos que son los elementos de la cima de
pila.
• Direccionamiento inmediato (o literal)
• El campo de operando contiene él mismo, sin transformación alguna, la
información sobre la que hay que operar. Este modo es útil para inicializar
registros o palabras de memoria con un valor constante.
• Direccionamiento directo por registro
• En el registro del procesador se dice que el operando está especificado con
direccionamiento directo por registro, en tal caso, el operando reside en uno de los
registros del procesador que es seleccionado por un campo de registro de k bits en
la instrucción.
• Este modo es típico de los ordenadores con organización de registros de uso
general.
• Las ventajas de este modo son:
• El acceso a los registros es muy rápido, por tanto el direccionamiento por registro
debe usarse en las variables que se usen con más frecuencia para evitar accesos a
memoria que son más lentos, un ejemplo muy típico del uso de este
direccionamiento son los índices de los bucles.
• El número de bits necesarios para especificar un registro es mucho más pequeño
que el necesario para especificar una dirección de memoria, esto es debido a que
el número de registros del procesador es muy pequeño comparado con el número
de direcciones de memoria.
• Direccionamiento directo (o absoluto)
• El campo de dirección no necesita transformación alguna para dar la
dirección efectiva, es decir la función que transforma el campo de
operando en la dirección efectiva es la identidad. Esto significa que el
campo de operando es ya la dirección efectiva.
• Este direccionamiento sólo se usa en ordenadores pequeños en que el
programa siempre se sitúa en la misma zona, es decir que el código de los
programas no dependa de su situación en memoria. En ordenadores más
grandes, este modo está reservado para acceder a direcciones del sistema,
que normalmente se refieren a operaciones de entrada y salida, ya que
estas direcciones no dependen del programa.
• Direccionamiento indirecto
• En este modo el campo de operando de la instrucción indica la localización
de la dirección efectiva del operando. El modo de direccionamiento
indirecto puede adquirir diferentes formas según cuál sea el lugar donde se
encuentre la dirección del operando.
• Este direccionamiento es útil cuando se trabaja con apuntadores ya que los
apuntadores son variables que contienen las direcciones de los operandos,
no los operandos mismos
• Direccionamiento relativo
• Hay algunos modos de direccionamiento en que se hace uso de una propiedad
muy generalizada de los programas denominada localidad de referencia, esta
propiedad consiste en que las direcciones referenciadas por los programas no
suelen alejarse mucho unas de otras y, por tanto, suelen estar concentradas en una
parte de la memoria. Estas consideraciones nos llevan a la conclusión de que no es
necesario utilizar todos los bits de la dirección de memoria en el campo de
operando, basta utilizar los bits precisos para cubrir la parte de memoria donde
estén incluidas las direcciones a las que el programa hace referencia.
• Hay varios direccionamientos basados en esta técnica que reciben diferentes
nombres dependiendo de cuál sea el registro en el que radica la dirección tomada
como referencia. Todos ellos podrían catalogarse como direccionamientos relativos
a un registro.
• Direccionamiento por base y desplazamiento