Académique Documents
Professionnel Documents
Culture Documents
EL 68000
Guión
1. El microprocesador 68000 como componente: patillaje, buses y conexiones básicas.
6. Excepciones e interrupciones.
BIBLIOGRAFÍA:
J. Septién, H. Mecha, R. Moreno, K. Olcoz: “La familia del MC68000. Lenguaje ensamblador: conexión y programación de interfaces”.
Ed. Síntesis, 1995.
Introducción
Estructura básica de los computadores basados en μP68000 (μP68k)
Computador Mem Microprocesador: CPU en un chip. Recoge las instruc-
ciones, las ejecuta y controla todo el sistema.
Otros 680xx:
68030: chip con μP 68020 y MMU integrados
memoria cache de datos y de instrucciones separadas
68040: chip con FPU y con cache integrados
MMU de datos y MMU de instrucciones separadas
68060: versión RISC del 68040: 2.5 rendimiento más
Fetch y Execute en pipeline
3 memorias cache: datos, instrucciones y aceleración de
bifurcaciones.
Otros más: PowerPC ...
Bus de direcciones
Las líneas de direcciones son unidireccionales: van desde al μP68000 hacia los otros dispositivos:
de Memoria y de E/S
Las líneas de direcciones son triestado (HI). Se validan (0,1) con la señal de control AS
Bus de datos
Las líneas de datos son bidireccionales: van desde/hacia al μP68000 hacia/desde los otros
dispositivos: de Memoria y de E/S
Las líneas de datos son triestado (HI). Se validan (0,1) con las señales de control:
W = Word : 16 bits 15 8 7 0
Individualmente 1 bit: Sólo en casos especiales como ponerlo a 0 o a 1 e interrogar sobre su valor.
Tipos de datos:
Representación numérica: Ensamblador: signo-Magnitud
☺ Binario sin signo %binario %10011... -%10011...
☺ Binario con signo en Ca2 @octal @732... -@732...
☺ BCD empaquetado (DD: 4+4 bits) dec o &dec 943...=&943... -943...
No maneja punto flotante $hexadecimal $0C1... -$0C1...
$...K M a
Notación big-endian (como IBM370, RISC, ...): “Manolo” $...K+2 n o
LSB $...K+4 l o
MSB n-1 0
interno HALT
* HALT : Señal bidireccional. Si es entrada al μP, lo pone en
estado de espera. Si es salida del μP, avisa que éste ha suspen-
dido la ejecución de su tarea (probablemente por existencia de
Compatibilidad 6800/9 un fallo grave)
Para usar el 68000 (~10MHz, bus asín-
crono) con periféricos del 680x (~1MHz, * RESET: Señal bidireccional. Si es entrada al μP, lo lleva a la
bus síncrono): excepción de inicialización (ver excepciones y interrupciones). Si
* E: actúa como reloj para 680x es salida del μP, inicializa a los demás dispositivos
* VMA(Valid Memory Address): valida
AB sincronizado con E
* VPA:(Valid Peripheral Address): avisa
al μP68000 que ha direccionado un peri-
férico síncrono de la familia 680x
Guión
1. El microprocesador 68000 como componente: patillaje, buses y conexiones básicas.
6. Excepciones e interrupciones.
Modelo de USUARIO: En general son registros especializados, pero no hay acumuladores (ver cómo se
usan en página siguiente):
* 8 registros de datos, cada uno de 32 bits. Se llaman D0, D1, D2, D3, D4, D5, D6, D7
* 7 registros de direcciones, cada uno de 32 bits. Se llaman A0, A1, A2, A3, A4, A5, A6
* 1 registro de puntero de pila de 32 bits. Se llama USP (User Stack Pointer) o A7
* 1 contador de programa de 32 bits. Se llama PC (Program Counter)
* 1 registro de código de condición de 8 bits, de los que se usan 5. Se llama CCR (Condition Code Register)
D0 A0
D1 A1
D2 A2
31 32 bits 0 D3 31 32 bits 0 A3
D4 A4
D5 A5
D6 A6
D7
USP o A7
PC [32] CCR [8]
Direcciones Ai
L 31 dirección 0 Puntero de pila (USP)
* Posición ociosa apuntando a la cabecera (top, última
W 15 dirección 0
palabra escrita en la pila)
* Apila hacia direcciones descendentes
Operaciones con W (o B) * Ejemplo: apilar el PC [32]:
rotación
15 0
W No cambian
n-6 n-6
extensión de signo n-4 SP n-4 Top [PC31-16]
15 0 n-2 n-2 [PC15-0]
s bbbbbbb bbbbbbbb SP n Top n LLENA
31
n+2 n+2
0
n+4 LLENA n+4
ssss ssss ssss ssss s bbbbbbb bbbbbbbb
Modelo de SUPERVISOR
Se usan los mismos registros del modo USUARIO salvo las excepciones siguientes:
* Puntero de pila supervisor, SSP [32], que opera de forma similar al de usuario USP.
El supervisor no puede usar el puntero de ususario USP.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
* Posee un Byte H de registro CCR: T S I2 I1 I0 X N Z VC
I2I1I0: Máscara de interrupción. Sirve para poner un nivel de prioridad mínimo para que
una interrupción sea atendida. Cuando una interrupción externa llega al μP, se com-
para el valor que llega por las líneas de interrupción con las de esta máscara. Si la que
llega supera a la de la máscara, la interrupción es atendida; en caso contrario, no.
Guión
1. El microprocesador 68000 como componente: patillaje, buses y conexiones básicas.
3. El conjunto de instrucciones:
operandos, formatos de instrucción,
modos de direccionamiento y tipos de instrucción.
6. Excepciones e interrupciones.
Bibliografía:
J. Septién, H. Mecha, R. Moreno, K. Olcoz: “La familia del MC68000. Lenguaje ensamblador: conexión y programación de interfaces”.
Ed. Síntesis, 1995.
* 18 formatos
* 12 modos de direccionamiento
* 0, 1 o 2 operandos
• Código máquina:
→ Longitud entre 1 palabra (16 bits) y 5 palabras (80 bits) 16 bits
OW
→ La primera palabra es Operation Word, OW Orden de los
EW operandos:
→ Las cuatro siguientes son opcionales y extienden
EW 1º Inmediato
la longitud de instrucción: Extension Word, EW /Fuente
EW
2º Destino
EW
→ Tiene 16 bits (tamaño W). Las EW, si existen, también tienen 16 bits.
· Effective Address (EA): Dirección efectiva que indica dónde está el dato
con desplazamiento
Indirecto con Relativo al PC
011 n (An)+ postincremento 111 011 d8(PC,Ri.X) indexado con
desplazamiento
100 -(An) Indirecto con 100 #XXXXXX Inmediato
predecremento
101 d16(An) Indirecto con
desplazamiento
110 d8(An,Ri.X) Indirecto indexado
con desplazamiento
* Tamaño: B, W o L
* Número:
* 0 operandos
* 1 operando: es destino. Siendo Θ la operación: Θ(dato) → opdestino
* 2 operandos: uno fuente y otro fuente/destino. Siendo Θ la operación:
MC 68000
→ Datos:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Ejemplos
5 COP Reg COP Tam COP Reg ASL, ASR, ROR, ROL
8 COP Cuenta COP Tam COP Reg ASL, ASR, ROR, ROL
Nota:
{
t: B → 00
MC 68000
W → 01
L → 10
Modificando el tamaño
CLR.W D6 0100 0010 0100 0110 $ 4246 0 → D615-0
Modificando el operando
CLR.L D3 0100 0010 1000 0011 $ 4283 0 → D331-0
SWAP D6
EXT. L D6 0100 1000 1100 0110 $ 48C6 D615 → D6k (k: 31...16)
xxxx xxxx xxxx xxxx sbbb bbbb bbbb bbbb → ssss ssss ssss ssss sbbb bbbb bbbb bbbb
* Observaciones:
{
Tamaño; B (00); W (01); L (10)
b8 = 0: Dn es destino, Dn Θ EA → Dn
MC 68000
COP
7 COP Reg Dato
SUBQ: 0 1 0 1 1
Tamaño; B (00); W (01); L (10)
p. ej. ADDQ, además del Inmediato de 3 bits, tiene otro operando con EA
MOVE.B #$63,D5
D5 # $63 → D57-0
OW : 00 01 101 000 111 100 31 24 23 16 15 87 0
EW1: 0000 0000 0110 0011 D5 −− −− −− −− −− −− 0110 0011
( no importa) $63 no afectados
MC 68000
MOVE.L #$635043AB,D5
D5 # $635043AB → D57-0
OW : 00 10 101 000 111 100 31 24 23 16 15 87 0
EW1: 0110 0011 0101 0000 $6350 D5 0110 0011 0101 0000 0100 0011 1010 1011
EW2: 0100 0011 1010 1011 $43AB
$3 2468
EW1: 0000 0000 0000 0011
EW2: 0010 0100 0110 1000 } 1º Fuente
$002012 1110 0011 0100 0010
-$2012 = $DFEE
M($32468/9) → M($2012/3)
XXXX XXXXXX
Memoria
OW : 00 11 000 111 111 001
$3 2468
EW1: 0000 0000 0000 0011 $FFDFEE 1110 0011 0100 0010
EW2: 0010 0100 0110 1000
EW3: 1101 1111 1110 1110 $DFEE
-1/2/4
- (An)
Desplazamiento: d16(An/PC)
MC 68000
Di o Ai con tamaño X
31 24 23 16 15 87 0
Entonces, D5 −− −− −− −− 1110 0011 0100 0010
no afectados
31 24 23 16 15 87 0
Entonces, primero D5 −− −− −− −− 1110 0011 0100 0010
no afectados
W
segundo
002012 + 2 = 002014
(A5) = $00002014
Memoria
segundo
$002010 1111 0000 0101 0110
31 24 23 16 15 87 0
D5 −− −− −− −− 1111 0000 0101 0110
no afectados
* (An) se queda apuntando al ‘anterior’ dato (el siguiente si se va desde abajo hacia arriba)
Entonces Memoria
002012 + 14 = 002026
$002026 0101 0110 0111 1110
31 24 23 16 15 87 0
D5 −− −− −− −− 0101 0110 0111 1110
no afectados
coma punto
MC 68000
Entonces 31 24 23 16 15 87 0
D5 −− −− −− −− 1010 1110 0001 1110
no afectados
* Los RELATIVOS son similares a los Indirectos con desplazamiento salvo que:
1. El registro de base es ahora el PC. Concretamente, si la instrucción está en la
posición (PC), el valor que se suma es (PC)+2
2. Sólo direcciona operando tipo FUENTE
MC 68000
*** El análisis detallado de cada instrucción queda bajo responsabilidad de cada uno.
Puede estudiarse en:
· J. Septién, H. Mecha, R. Moreno, K. Olcoz: “La familia del MC68000. Lenguaje ensamblador: conexión y programación de interfaces”.
Ed. Síntesis, 1995.
· W. Cramer, G. Kane: “Manual del microprocesador 68000”. Ed Osborne/McGraw-Hill, 1987.
· S. Kelly-Bottle, B. Fowler: “68000/68010/68020. Arquitectura y programación en ensamblador”. Ed. Anaya, 1987.
• Aritmética entera: Suma, resta, multiplica y divide sin signo y con signo (Ca2); también
compara, extiende el signo, pone a 0 y hace TEST de operandos
• Lógicas: Realiza AND, OR, NOT, EOR (exclusive OR), especiales para CCR o SR
MC 68000
ASR X/C X C
ROXR
• Aritmética BCD: Suma, resta y niega en BCD empaquetado (tamaño B y bit de extensión, X)
• Control de programa: Son las instrucciones que permiten modificar la ejecución lineal de un
programa. Son: bifurcaciones condicionales (Bcc), incondicionales (BRA) y a subrutinas
MC 68000
(BSR); saltos (JMP y JSR); y otras varias (decrementa y bifurcación condicional DBcc,
retornos RTS y RTR, puesta a uno condicional Scc).
Las condiciones “cc” se ejecutan según el valor de los bits del CCR (flags), aunque en las
instrucciones se establecen como comparación de números con o sin signo.
• Control del sistema: Son instrucciones especiales del sistema (excepciones, Reset, Trap, etc.)
• No implementadas: Los OW que comienzan por 1010... y por 1111... no están implementadas
como instrucciones del MC68000. Si se decodifican dan lugar a los vectores de excepción
números 10 y 11, respectivamente, por lo que no son tratadas como ILEGALES. Así, esas
OW pueden ser utilizadas para emular por Software instrucciones no incluidas en el ISP
del MC68000, como p. ej. una operación en punto flotante
• Tamaño: “t” que puede ser L, W, B como en el ejemplo. A veces se usa “S” (short) en
lugar de B, como pasa en las instrucciones Bcc
• XNZVC: Cómo se ven afectados los bits del CCR; ej. - **00, indicando que
X está no afectado, N y Z están afectados y V y C se ponen a 0.
DBcc DBF
Se cumple No se cumple Se cumple No se cumple
cc F
Dn = Dn -1 Dn = Dn -1
= =/ = =/
Dn = -1 Dn = -1
∗ Aparecen instrucciones de varios μP: 68000, ... , 68020 (en EC sólo vemos 68000)
Guión
1. El microprocesador 68000 como componente: patillaje, buses y conexiones básicas.
6. Excepciones e interrupciones.
∗ Formato general:
Etiqueta b/ mnemónico instrucción [ b/ comentarios]
* Las líneas que empiezan por * son de comentario (b/ es espacio en blanco)
* mnemónico instrucción tiene la forma: cop.t oper1, oper2
el tamaño “t” es, por defecto, W
Expresión
END
∗ Indica el final del programa fuente (al programa Ensamblador)
MC 68000
∗ Equipara nombre a expresión (en tiempo de ensamblado sustituye nombre por expresión)
∗ ∗ Notar que el orden de la sintaxis es diferente a la directiva EQU del CS2
∗ ∗ El valor de nombre no es reasignable
ORG dirección
a esa dirección.
** Admite tamaño de dirección largo (ORG.L) y origen relativo (RORG)
∗ Ejemplo:
MC 68000
∗ Inicia el contenido de las posiciones de memoria a partir de etiqueta a los valores dados
por tamaño tam y lista de operandos
etiqueta DS.tam
MACROS
∗ Son trozos de programa que se escriben una sola vez (en la definición del macro)
y que se reescribirá donde se invoque al macro, tantas veces como se invoque.
∗ ∗ No confundir con SUBRUTINA: ésta sólo tiene un código objeto que es llamado
y del que se retorna al lugar de donde es llamada
∗ ∗ Por contra, el MACRO generará tantos códigos objetos como veces es llamado,
sin que exista apilamiento/retorno
MC 68000
Definición de MACRO
etiqueta MACRO
instr. A
instr. B Programa del MACRO
... ... ...
instr. C
ENDM
Uso de MACRO
Código objeto
Programa Principal
I
I A
ejemM MACRO B
A Ensamblado C
MC 68000
B II
C
ENDM A
B
II C
ejemM III
III A
B
ejemM C
IV IV
Programa en ensamblador:
* Inicialización del PC:
MC 68000