Está en la página 1de 24

1

9. Lenguaje ensamblador
Lenguaje mquina: un programa o secuencia de
instrucciones viene dado por una secuencia de cdigos
binarios.
Lenguaje ensamblador: secuencia lgica de sentencias
pertenecientes a alguna de las siguientes clases:
- Una lnea de comentario.
- Una instruccin ejecutable.
- Una directiva de ensamblado.
La escritura en lenguaje mquina es tediosa y proclive a
errores, el lenguaje ensamblador facilita la tarea de la
escritura sin perder la cercana a la mquina.
2
9. Lenguaje ensamblador
Programa ensamblador:
Programa ensamblador: traduce el lenguaje ensamblador al
lenguaje mquina de la CPU
Programa
fuente
Programa
objeto
lenguaje ensamblador lenguaje mquina
ensamblador
3
9. Lenguaje ensamblador
El formato bsico de una sentencia en lenguaje ensamblador
es:
Etiqueta Opcode Operando(s) Comentario
* El campo etiqueta es opcional
* Opcode contiene el mnemnico de la instruccin o la
directiva de ensamblador.
* Operando(s), son los operandos (1 o 2 o ninguno) de la
instruccin o directiva. Cuando hay 2 o ms operandos,
estos se separan por comas.
* De forma opcional, el ltimo campo es el comentario.
4
9. Lenguaje ensamblador
Directivas: son rdenes para el ensamblador y no tienen
traduccin a cdigo mquina. Utilizaremos:
ORG:
- Inicializa el contador de programa con el valor del operando.
Si no se utiliza una directiva ORG, se asume que el PC vale
0.
- Sintaxis: ORG valor
- Ejemplo: ORG $400
5
9. Lenguaje ensamblador
- EQU:
- Asigna al smbolo contenido en el campo etiqueta el valor de la
expresin en el campo operando.
- Sintaxis: etiqueta EQU valor
- Ejemplo: PI EQU !"4"#
6
9. Lenguaje ensamblador
$%:
- Define constantes en memoria. Permite asignar valores
numricos, tablas, caracteres o cadenas a variables de
memoria.
- &'a(ien(o !)* !+ o !, se in(i-a el tama'o (e la
-onstante! Si no se in(i-a na(a* se asume tama'o +!
- Se pue(en asi.nar /asta 01# 23tes (e (atos en una
4ni-a (ire-tiva
7
9. Lenguaje ensamblador
- Sintaxis: ETIQUETA DC.t const1,const2,.....
- Ejemplos:
8
9. Lenguaje ensamblador
- DS:
- Se utiliza para reservar posiciones de memoria.
- Aadiendo .B, .W o .L se indica el tamao de cada
elemento reservado. Si no se indica nada, se asume
tamao W.
- Sintaxis: ETIQUETA DS.t valor
- Ejemplo:
DS.B 256 Reserva 256 bytes consecutivos de
memoria
DS.L 1 Reserva una palabra larga
Hola DS 2 Reserva dos palabras a partir de la
direccin asignada por el ensamblador a Hola
9
10. Procesamiento de excepciones
,as ex-ep-iones permiten interrumpir la eje-u-i5n
normal (e una se-uen-ia (e instru--iones para
pasar a aten(er* (e 6orma inme(iata* la situa-i5n
parti-ular que las .enera!
Se -lasi6i-an en internas o externas se.4n el ori.en
(e la situa-i5n parti-ular!
10
10. Procesamiento de excepciones
Clasificacin
11
10. Procesamiento de excepciones

Cada excepcin tiene asociada un vector de excepcin


almacenado en una posicin concreta de la memoria.

Un vector de excepcin es una direccin de memoria (puntero,


doble palabra). Dicha direccin hace referencia a la posicin de
memoria que ocupa la primera instruccin de la rutina de
excepcin.

Existen un total de 255 vectores de excepcin almacenados en la


tabla de vectores de excepcin situada a partir de la direccin
$000000 de la RAM y con un tamao total de 1Kbytes.

Cada vector de excepcin de la tabla es identificado por el


nmero de vector de excepcin, N (N vara de 0 a 255, byte). A
partir de este N, el microprocesador determina la direccin de la
RAM donde se encuentra el vector de excepcin realizando la
operacin 4*N.

Los 64 primeros vectores estn preasignados (aunque pueden


sobreescribirse), los restantes quedan libres par su utilizacin.
12
10. Procesamiento de excepciones
TABLA DE VECTORES DE EXCEPCIN
13
10. Procesamiento de excepciones

La atencin de una excepcin debe cubrir:


- Atencin inmediata a la excepcin, con interrupcin, incluso, si
la prioridad es alta, de la instruccin en curso.
- La bifurcacin a la direccin correcta de comienzo de la rutina
de servicio de la excepcin.
- El retorno correcto a la secuencia de instrucciones
interrumpida, una vez finalizada la rutina de servicio.
Para conseguir estos objetivos, el procesamiento de una
excepcin por el MC68000 transcurre en una secuencia de
pasos:
1. El registro SR se copia en un registro interno. Se desactiva el
modo traza y se activa el bit S por lo que el microprocesador
entra en modo supervisor. Para excepciones asociadas a
peticiones de interrupcin, o a RESET, se actualiza el valor
de la mscara de interrupciones I2-I0..
SECUENCIA DE PROCESAMIENTO
14
10. Procesamiento de excepciones
2. Se determina el nmero de vector de excepcin por lgica interna,
si es uno de los preasignados, o a partir de una bsqueda
denominada "reconocimiento de interrupcin", si se trata de una
interrupcin de usuario. A partir del nmero de vector se genera la
direccin del vector de excepcin.
3. Se salvan, en la pila del supervisor (SSP), los contenidos del
contador de programa PC y del registro de estado SR. Primero se
guarda PCL, seguido de PCH y SR.
4. Se carga en el registro PC el contenido del vector de excepcin..
15
10. Procesamiento de excepciones
El microprocesador ejecuta, a continuacin, las instrucciones de la rutina de
excepcin, cuya ltima instruccin, RTE, permite recuperar de la pila SR,
PCH y PCL y restaurar la ejecucin desde el punto interrumpido.
16
10. Procesamiento de excepciones
TIPOS DE EXCEPCIN
Existen grupos de prioridad en las excepciones y, aunque su
procesamiento se realiza de la forma genrica descrita
anteriormente, las acciones que toma el MC68000 antes de dar
comienzo a dicho procesamiento son ligeramente diferentes para
cada uno de estos grupos.
17
10. Procesamiento de excepciones
El procesamiento de las excepciones generadas internamente
sigue el esquema general descrito en el apartado de secuencia de
procesamiento de excepcin, salvo en el caso de error de direccin.
Error de direccin (N=3)
- Se produce cuando el MC68000 intenta a acceder a una
palabra o a una palabra larga con una direccin impar.
- En la pila se guardan, adems de los registros PC y SR,
informacin adicional que ayude a la rutina de excepcin a
identificar la causa del error.
EXCEPCIONES INTERNAS
18
10. Procesamiento de excepciones
Instruccin ilegal (N=4)
- Ocurre cuando al buscar la primera palabra de una instruccin,
encuentra que no contiene ninguno de los cdigos de operacin
vlidos de su repertorio de instrucciones.
- La ejecucin de la instruccin ILLEGAL tiene el mismo efecto.
Instruccin de emulacin (N=10 y N=11)
- Estos cdigos de operacin han sido reservados para extender el
juego de instrucciones del MC68000 mediante emulacin.
- Ocurre si los cdigos de operacin encontrados son las
combinaciones 1010 o 1111. Para cada uno de ellos se bifurca a los
vectores 10 u 11 respectivamente.
Violacin de privilegio (N=8)
- Se produce cuando se intenta ejecutar una instruccin reservada al
modo supervisor con el bit S=0, es decir, en modo usuario.
19
10. Procesamiento de excepciones
Divisin por cero (N=5)
- Se produce si se intenta utilizar un divisor igual a cero con las
instrucciones DIVU o DIVS.
Traza (N=9)
- El modo traza (paso a paso) se activa cuando se pone a 1 el bit T del
registro de estado SR.
- El procesador genera una excepcin despus de cada instruccin.
Instruccin TRAP (N=32-47)
- El formato es TRAP #numero_trap. Con numero_trap un entero de 4
bits (0 al 15). El nmero de TRAP identifica uno de los 16 vectores de
excepcin asignados a esta instruccin.
- Proporciona una va para acceder a rutinas genricas almacenadas la
memoria no volatil (llamadas a la BIOS) o en la implementacin de
puntos de ruptura.
20
10. Procesamiento de excepciones
Instruccin TRAPV (N=7)
- Situada inmediatamente despus de una instruccin
aritmtica susceptible de producir desbordamiento (que
pueda poner el cdigo de condicin V=1), produce una
excepcin en caso de que se produzca ese hecho.
Instruccin CHK (N=6)
- Compara el contenido de un registro con un lmite superior
almacenado en un lugar especificado. Si el contenido del
registro supera dicho lmite, se produce la excepcin.
21
10. Procesamiento de excepciones
RESET (N=0 y 1)
- Se da cuando se activa el terminal de RESET.
-Una excepcin por RESET persigue un fin diferente al resto de la
excepciones, inicializar el sistema, por tanto:
a) No tiene sentido guardar los valores del PC y el SR en la
pila porque no se desea volver a recuperarlos.
b) Se carga un valor inicial en el registro SSP (vector 0)
adems del PC (vector 1).
c) Se inicializa el registro SR de la forma siguiente:
1) Se desactiva el modo traza T=0.
2) Se activa el modo supervisor: S=1
3) Se enmascaran todos los niveles de prioridad de
interrupcin: I2-I0=111
EXCEPCIONES EXTERNAS
22
10. Procesamiento de excepciones
ERROR DE BUS (N=2)
- Ocurre cuando se activa la entrada #BERR.
- El procesamiento es idntico al de error de direccin salvo
por el vector de interrupcin.
- Si #BERR se activa nuevamente cuando se procesa la
excepcin de error de bus (doble error de bus) el 68000
para. En tal situacin, slo un RESET permite reanudar la
ejecucin de instrucciones.
23
10. Procesamiento de excepciones
INTERRUPCIONES
- Se producen mediante la activacin de los terminales #IPL2-0 que
codifican el nivel de peticin (desde nivel 0, ausencia de peticin,
hasta nivel 7, mxima prioridad o NMI).
- Una interrupcin se atiende si su nivel de peticin supera al fijado en
la mscara de interrupcin (bits I2-0 del registro SR), excepto para
el nivel 7, que siempre se atender.
- Si el MC68000 acepta una interrupcin, se desencadenan los
mismos procesos que los descritos para las excepciones, salvo que
el nmero del vector de excepcin se obtiene mediante un ciclo
especial de lectura (ciclo de reconocimiento de interrupciones) y
que los bits de mscara se actualizan al nivel peticionario.
- El ciclo de reconocimiento de interrupcin es un ciclo especial de
lectura en el que las salidas FC2,FC1,FC0 estn todas a 1, y por los
bits A3,A2,A1 del bus de direcciones se muestra el nivel de
interrupcin que la CPU va a procesar.
24
10. Procesamiento de excepciones
- A partir de aqu pueden pasar varias cosas:
1) Se activa la entrada #VPA que identifica que la interrupcin fue
solicitada por un perifrico sncrono. En tal caso, el
microprocesador utiliza el autovector asociado al nivel de
interrupcin actual.
2) Se activa la entrada #DTACK. En este caso, el perifrico,
adems de activar esa seal, ha colocado, en el bus de datos un
byte que contiene un nmero de vector de excepcin. Este nmero
de vector debe estar comprendido entre 64-255, constituyendo los
vectores de excepcin de usuario.
3) Se activa la entrada #DTACK pero se recibe, como nmero de
vector, el $F. Esto da lugar a la interrupcin no inicializada.
4) Se activa la entrada #BERR, o sea, no se ha recibido ningn
vector de interrupcin. Esto provoca la generacin de la
interrupcin esprea, que tiene, como nmero de vector de
excepcin, el 24.

También podría gustarte