Vous êtes sur la page 1sur 72

MICROPROCESADORES.

EL 68000

Guión
1. El microprocesador 68000 como componente: patillaje, buses y conexiones básicas.

2. Modelos de programación a nivel de registro: de usuario y de sistema.

3. El conjunto de instrucciones: operandos, formatos de instrucción, modos de direccionamiento y tipos de ins-


trucción.

4. Ejemplos de aplicación en lenguaje ensamblador.

5. Operaciones de bus: el acceso a memoria.

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.

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.
M. A. de Miguel, T. Higuera: “Arquitectura de ordenadores”. Ed. Ra-Ma, 1996.

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 1


El μP68000 como componente

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.

Memoria (principal): almacena datos y programa tra-


AB bajando directamente con la CPU. Formado por memo-
rias tipo RAM y tipo ROM.

Circuitos de Entrada/Salida: son interfaz entre CPU


(con la que dialogan directamente) y los controladores de
los periféricos (monitor, teclado, impresora, ...). Los hay
E/S Periférico para transmisión síncrona o asíncrona, para transmisón
μP serie y paralelo. Es frecuente el control mediante interrup-
ciones. Incluyen conversión A/D y D/A (A: analog, D: Digi-
DB Buses externos tal).

E/S Periférico Buses: Conjunto de líneas de conexión agrupadas por un


concepto funcional común, organizados según unas nor-
CB mas y operando según unas reglas de comunicación. Son
de direcciones (AB, Address Bus), de datos (DB, Data Bus)
y de control (CB, Control Bus).

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 2


El μP68000 como componente
Historia (breve)
Serie 68xx (1974): AB[16], DB [8], acumulador

6800: μP de 8 bits, similar a Intel 8008


6809: mejora del 6800 (p.ej. ALU de 16 bits); compatible con él

Serie 680xx (1979): Arquitectura de 32 bits; sin acumulador


68000: ☺ Totalmente nuevo (no como el 8086)
Híbrido entre 16 y 32 bits
ALU y Data Bus de 16 bits; AB de 23/24 bits
☺ Registros internos de 32 bits
☺ Amplio conjunto de registros de propósito general
☺ Usado en Macintosh, Atari, Amiga, ...

68008: Barato, lento, 8bits, poca aceptación


68010: ☺ Mejora ISP para usar MMU (Management Memory Unit)
68020: ☺ AB[32] y DB [32]
☺ Memoria cache
☺ Instrucciones coprocesador MMU o FPU (Floating
Point Unit)
☺ Usado en estaciones de trabajo SUN, Apolo, HP, ...

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 ...

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 3


El μP68000 como componente

Generalidades, Patillaje, Buses y Conexiones Básicas


Circuito integrado con 64 pines: μP68000 (DIP64pines)
2 de Vcc, 2 de GND y 1 de Clk AB[23] DB[16]
23 líneas de dirección
16 líneas de datos
20 líneas de control Mem E/S
CB[20]

Dos modos de operación:


Usuario: forma normal, para ejecución de los programas de aplicación
Supervisor o sistema: forma atípica, para casos especiales (sistema operativo, excepciones)

Tipo CISC: Complete Instruction Set Computer


Múltiples instrucciones: decenas de formatos, tipos y modos de direccionamiento
Múltiples longitudes: 1, 2, 3, 4 o 5 palabras
De 0 a 2 operandos

Otras: Espacio de direcciones de 16 Mbytes (224)


Gestión asíncrona de bus (para transferir a/desde Memoria o E/S)

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 4


El μP68000 como componente
Pines
23
Vcc Α23−1
GND 16
D15−0
Clk
AS
Códigos de
FC0-2 R/W
función UDS Control de

LDS bus asíncrono


Control de E μP
DTACK
VMA
periféricos del 68000
VPA BR
6800 BG Control de

BGACK arbitraje de bus


BERR
Control RESET
3 Líneas de
interno HALT IPL0-2 entradas de
interrupción

Vcc y GND: alimentación A: Address bus


Clk: Clock D: Data bus
FC: Function Code (ver tabla) AS: Address Strobe
E: Enable R/W: Read/Write
VMA: Valid Memory Address UDS: Upper Data Strobe
VPA: Valid Peripheral Address LDS: Lower Data Strobe
BERR: Bus ERRor DTACK: Data Transfer ACKnowledge
BR: Bus Request
BG: Bus Grant
BGACK: Bus Grant ACKnowledge
IPL: InterruPt Lines

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 5


El μP68000 como componente

Bus de direcciones

Hay sólo 23 líneas de dirección, A23 - A1: falta A0

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

Normalmente recogen las direcciones de registros internos: PC, SP, etc

Excepcionalmente, durante el ciclo de reconocimiento de interrupciones,


A1 - A3 muestran el nivel de prioridad que está siendo reconocido

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 6


El μP68000 como componente

Espacio y bus de direcciones


Espacio de direcciones de 16 MBytes:
A23A22 ...A1A0 para la dirección interna ↔ 224 = 16 Mposiciones: 1 posición ↔ 1 Byte y así se conec-
tan con los μP’s y otros dispositivos (Memorias, interfaces de E/S) de 8bits precedentes (1Byte = 8bits)

Bus de direcciones de únicamente 23 líneas (8MWord):


AB [23]: A23A22 ...A1 para la dirección exterior ↔ 223 = 8 Mposiciones: 1 posición ↔ 1 Word =
1 palabra = 2 Bytes. Con ello, la capacidad total es 8MWord = 8M·2Bytes = 16MBytes
Direcciones: Pares Impares
A0 = 0 A0 = 1
$H5-H0 $H5-H0
000000 1 byte 1 byte 00001
Binario (%): Hex. ($): Una dirección física
se representa por defecto 000002 1 byte 1 byte 00003
A23A22A21A20 H5 con A0=0 (par): 000004 1 byte 1 byte 00005
A19A18A17A16 H4
A23 - A1 000006 1 byte 1 byte 00007
A15A14A13A12 H3
A11A10A9A8 H2
00A3B8 1 palabra (0A3B9)
A7A6A5A4 H1
A3A2A1A0 H0
FFFFFC 1 byte 1 byte FFFFD
FFFFFE 1 byte 1 byte FFFFF

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 7


El μP68000 como componente

Bus de datos

Hay 16 líneas de datos, D15 - D0. Se agrupan en dos Bytes:


el más alto (Upper) D15 - D8 y el más bajo (Lower) D7 - D0

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:

UDS ↔ D15 - D8 LDS ↔ D7 - D0


por lo que pueden transferir datos de 1 Word (16 bits) o de 1 Byte (el Upper o el Lower)

Excepcionalmente , D7 - D0 llevan el número de vector durante las interrupciones

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 8


El μP68000 como componente

Organización y representación de datos 1


El μP68000 maneja datos de la forma siguiente:

Anchuras: B = Byte : 8 bits 7 6 5 4 3 2 1 0

W = Word : 16 bits 15 8 7 0

L = Long word : 32 bits 31 16 15 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

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 9


El μP68000 como componente

Organización y representación de datos 2


Ejemplo: Representar en Memoria los números primos (1, 2, 3, 5) desde $001122

BCD empaquetado: En tamaños W y L hay alineamiento PAR

PAR IMPAR Binario sin signo tamaño Long


$001122 0001 0010 0011 0101 word:
$001124 Binario sin signo tamaño Word:
PAR IMPAR
$001126
$001122 0000 0000 0000 0000
$001128 PAR IMPAR
$001124 0000 0000 0000 0001
$00112A $001122 0000 0000 0000 0001
$001126 0000 0000 0000 0000
$001124 0000 0000 0000 0010
Binario sin signo tamaño Byte: $001128 0000 0000 0000 0010
$001126 0000 0000 0000 0011
$00112A 0000 0000 0000 0000
PAR IMPAR $001128 0000 0000 0000 0101
$00112C 0000 0000 0000 0011
$001122 0000 0001 0000 0010 $00112A
$00112E 0000 0000 0000 0000
$001124 0000 0011 0000 0101
$001130 0000 0000 0000 0101
$001126
$001128
$00112A

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 10


El μP68000 como componente

Bus de control: bus del sistema, que es asíncrono


23
AS: Address Strobe: activa en 0
Α23−1
16
D15−0
R/W: Read/Write: 1 para lectura Par Impar
(datos desde Mem o E/S hacia el μP) UDS LDS D15-D8 D7-D0
AS
y 0 para escritura (escribe el μP)
μP R/W 0 0 Válido Válido
UDS Control de UDS: Upper Data Strobe 0 1 Válido No
68000 LDS: Lower Data Strobe
LDS bus asíncrono 1 0 No Válido
DTACK
DTACK: Data Transfer Acknow- 1 1 No No
ledge: Es entrada al μP, por lo que es
generada por Mem o E/S

Ciclo estándar de bus: Se sigue el siguiente protocolo:


1º El μP, sucesivamente, va poniendo: a/ valor de A23-A1 (y de FC0-FC2);
b/ validación del bus de direcciones mediante AS
c/ valor de R/W
d/ valor de UDS y/o LDS, tras lo cual espera a DTACK
2º La Mem o E/S actúan y, cuando han transferido los datos, ponen a 0 la señal DTACK
3º El μP, tras recibir DTACK=0, en su caso termina de transferir el dato y desactiva por orden las líneas
anteriormente activadas

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 11


El μP68000 como componente

Bus de control: arbitraje del bus y líneas de interrupción


BR Arbitraje del bus: El control del bus del sistema, que nor-
BG Control de malmente lo tiene el μP, puede cedérselo a otro dispositivo con
μP
BGACK arbitraje de bus estas líneas:
68000 BR: Bus Request, petición del control del bus por parte
de algún dispositivo como DMA (Direct Access Memory)
3 Líneas de
IPL0-2 entradas de
BG: Bus Grant, concesión del control por parte del μP
interrupción BGACK: Bus Grant ACKnowledge, reconocimiento de
la concesión.
El dispositivo peticionario controla el bus desde que recibe BG y
Líneas de interrupción: devuelve el control al μP cuando desactiva BGACK
La ejecución de un proceso puede ser
interrumpido para que el μP atienda
BR
a otra tarea y, tras terminarla, conti-
nuar el proceso. BG
IPL: InterruPt Lines, líneas que acti-
van los dispositivos para interrumpir BGACK
según una prioridad:
111: no hay interrupción
bus controlado por dispositivo
000: máxima prioridad

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 12


El μP68000 como componente

Bus de control: Alimentación, reloj y códigos de función


Vcc Código de función, FC0-2 (Function Code):
GND μP
Indican qué tipo de acceso al bus del sistema se está realizando,
Clk 68000 datos/programa de supervisor/usuario o interrupción
Código de
FC0-2 FC
Tipo de ciclo máquina
función 210
000
Alimentación: 001 Acceso a la memoria de datos, modo usuario
2 pines para Vcc y 2 para GND
010 Acceso a la memoria de programa, modo usuario
011
Reloj, Clk:
* El μP 68000 opera internamente 100
CON RELOJ, aunque los accesos al 101 Acceso a la memoria de datos, modo supervisor
bus del sistema sean asíncronos. 110 Acceso a la memoria de programa, modo supervisor
* Hay límites mínimo y máximo a
111 Espacio de CPU: Reconocimiento de interrupciones
la frecuencia de reloj. Según la ver-
sión: fmín ε [2, 4] MHz
fmáx ε [8, 12.5] MHz

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 13


El μP68000 como componente

Bus de control: Control interno y compatibilidad 6800


Control de E
Control interno: Son tres señales para el control interno
VMA
periféricos del del μP
VPA
6800 μP * BERR (Bus ERRor): Señal de entrada al μP que es generada
68000
por los dispositivos externos para avisar de un error de acceso
BERR al bus (dirección sin Mem ni E/S, dispositivo que no contesta,
Control escritura sobre ROM, etc)
RESET

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

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 14


MICROPROCESADORES. EL 68000

Guión
1. El microprocesador 68000 como componente: patillaje, buses y conexiones básicas.

2. Modelos de programación a nivel de registro: de usuario y de sistema.

3. El conjunto de instrucciones: operandos, formatos de instrucción, modos de direccionamiento y tipos de ins-


trucción.

4. Ejemplos de aplicación en lenguaje ensamblador.

5. Operaciones de bus: el acceso a memoria.

6. Excepciones e interrupciones.

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 15


68k: Modelos de registro
Modelo a nivel de registro: Los registros internos del μP68k que presentamos corresponden al llamado
modelo de programación, esto es, pueden ser utilizados por el programador del μP. No obedece a la
realidad de los registros incluídos en el μP.

Hay 2 modelos: el de USUARIO y el de SUPERVISOR. Los registros del modelo supervisor


sólo son accesibles en este modo (sólo acceden la unidad de control o instrucciones privilegiadas)

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]

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 16


68k: Modelos de registro

Uso de los registros


Datos Di Registro CCR
L 31 dato 0 C: Arrastre (carry/borrow)
7 6 5 4 3 2 1 0
V: Desbordamiento (oVerflow)
W 15 dato 0
Z: Se activa si cero (Zero)
X N Z VC
N: Negativo
B 7 dato 0
X: eXtension, para arrastre BCD

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

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 17


68k: Modelos de registro

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

T: Traza. Cuando T = 1, la ejecución de programas se hace paso a paso (modo traza)

S: Supervisor. Cuando S = 1, el μP está en modo supervisor

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.

Prioridad mínima: 000 Prioridad máxima: 111

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 18


MICROPROCESADORES. EL 68000

Guión
1. El microprocesador 68000 como componente: patillaje, buses y conexiones básicas.

2. Modelos de programación a nivel de registro: de usuario y de sistema.

3. El conjunto de instrucciones:
operandos, formatos de instrucción,
modos de direccionamiento y tipos de instrucción.

4. Ejemplos de aplicación en lenguaje ensamblador.

5. Operaciones de bus: el acceso a memoria.

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.

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 19


CONJUNTO DE INSTRUCCIONES
Generalidades
• El MC68000 es un CISC (Complex Instruction Set Computer)

• Las instrucciones contienen:


* 5 longitudes diferentes
* 75 tipos de operaciones
MC 68000

* 18 formatos
* 12 modos de direccionamiento
* 0, 1 o 2 operandos

• Los datos son:


* 3 anchuras: B (Byte = 8 bits), W (Word = 16 bits) y L (Long Word = 32 bits)
* A veces se acceden a bits individuales (sólo chequear valor y puesta a 0 y a 1)
* 3 tipos: binario, complemento a 2 y BCD empaquetado (1B = 2 dígitos BCD)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 20


CONJUNTO DE INSTRUCCIONES
Formatos de las instrucciones
• Visiones de las instrucciones:

1. Código máquina: Será leído de memoria (Fetch) y ejecutado (Execute)

2. Sintaxis: Nombre mnemónico de la instrucción, usado para programar en


ensamblador

3. Funcional u operativo: Indica lo que hace la instrucción. Se usa lenguaje RT


MC 68000

• 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

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 21


CONJUNTO DE INSTRUCCIONES
• OW: Es la primera palabra de la instrucción y la identifica

→ Tiene 16 bits (tamaño W). Las EW, si existen, también tienen 16 bits.

→ Se encuentra siempre en una DIRECCIÓN PAR

→ Campos: · OPCODE o COP: Código de operación, que indica el tipo de operación

· Tam, tamaño de los operandos: B (excepcionalmente, S: Short), W o L.


MC 68000

(Los operandos W o L siempre tendrán direcciones pares de memoria)

· Effective Address (EA): Dirección efectiva que indica dónde está el dato

EA Ver tablas: modo: indica el modo de direccionamiento


modo reg reg: apunta a uno de los registros internos (D0/A0 a D7/A6)
3 + 3 bits
Ejemplo: Dn
000 110 D6
n=6

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 22


CONJUNTO DE INSTRUCCIONES

Tabla con las direcciones efectivas (EA) del MC68000


(Ver los modos de direccionamiento)

Modo Reg. Direccionamiento Modo Reg. Direccionamiento


000 Dn Directo a Dn 000 XXXX Absoluto corto
001 An Directo a An 001 XXXXXX Absoluto largo
010 (An) Indirecto 010 d16(PC) Relativo al PC
MC 68000

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

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 23


CONJUNTO DE INSTRUCCIONES
• Operandos y datos:

→ Operandos: Los operandos de las instrucciones tienen:

* 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

destino Θ fuente → destino

→ Datos:

* Internamente maneja datos binarios, en Ca2 y en BCD empaquetado

* En las instrucciones (mnemónico) se dan en Signo-Magnitud [(-)M], y en las bases


de numeración más comunes. Por ejemplo, para 149(10:

** Hexadecimal: (-)$hex : $95 -$95


** Decimal: (-)dec/&dec: 149 o &149 -149 o -&149
** Octal: (-)@oct: @225 -@225
** Binario: (-)%bin: %10010101 -%10010101

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 24


CONJUNTO DE INSTRUCCIONES
• Sintaxis:
* Ensamblador: MNEM es un mnemónico del tipo o código de operación (COP),
tam indica el tamaño (B, W, L) de los datos

* A nivel RT: fuente → destino o destino ← fuente

** NINGÚN operando: MNEM

Ejemplo: No OPeration NOP NOP {PC + 2 → PC}


MC 68000

** UN operando: MNEM.tam op_destino


punto espacio en blanco
Ejemplo: CLeaR D6 CLR.L D6 0 → D631-0

** DOS operandos: MNEM.tam op_fuente,op_destino


coma

Ejemplo: SUBtract SUB.W D1,D6 D615-0 - D115-0 → D615-0

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 25


CONJUNTO DE INSTRUCCIONES
Tipos de formatos de instrucción (OW)

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Ejemplos

1 COP Tam EA (destino) EA (fuente) MOVE

2 COP Reg Modo EA ADD, AND, SUB, CHP

3 COP Reg COP EA MULS, DIVS, LEA

4 COP Reg Modo COP Reg MOVEP

5 COP Reg COP Tam COP Reg ASL, ASR, ROR, ROL

6 COP Reg COP Reg ABCD, EXG, SBCD

7 COP Reg COP Dato MOVEQ

8 COP Cuenta COP Tam COP Reg ASL, ASR, ROR, ROL

9 COP Dato COP Tam EA ADDQ, SUBQ

10 COP Condición COP EA Scc

11 COP Condición Desplazamiento Bcc

12 COP Condición COP Reg DBcc

13 COP Tam EA CLR, NOT, NEG, ADDI,


CHPI, TEST

14 COP Tam EA MOVEM


MC 68000

15 COP EA JMP, JSR, NBCD, PEA

16 COP Vector TRAP

17 COP Reg SWAP, EXT,


LINK, UNLINK

18 COP NOP, RESET, RTS, TRAPV

COP: Código de operación Tam: Tamaño (B, W, L)


Reg: Registro EA: Effective Address (de Operando)

¿Es error: 5 = 8? El bit 5 indica de dónde procede el número de rota-


ciones (bits 11-9): de un registro (caso 5) o del dato inmediato ‘cuenta’ (caso 8)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 26


CONJUNTO DE INSTRUCCIONES
Ejemplos de formatos:

Instrucciones sin operando: Todo la OW es código de operación (COP)


18 COP Ejemplo: NOP (No Operación)
Sintaxis OW (bin y hex) Operación
NOP 0100 1110 0111 0001 $ 4E71 PC + 2 → PC
MC 68000

Nota:

Para ver el valor de OW y la operación de una instrucción, puede consultar:


J. Septién, H. Mecha, R. Moreno, K. Olcoz: “La familia del MC68000. Lenguaje ensamblador: conexión y programación de inter-
faces”. Ed. Síntesis, 1995.
También puede verse en las “Hojas de examen del 68000” suministradas. En ella, además, conocida la OW se
puede determinar cuál es la instrucción.

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 27


CONJUNTO DE INSTRUCCIONES
Instrucciones con 1 operando

13 COP t EA Ejemplo: CLR (Puesta a cero)


EA: mod reg ⇒ D6: 000 110

Sintaxis OW (bin y hex) Operación


CLR.L D6 0100 0010 1000 0110 $ 4286 0 → D631-0

{
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

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 28


CONJUNTO DE INSTRUCCIONES
Instrucciones con 1 operando

Otras instrucciones del mismo formato


13 COP t EA Ejemplos: NOT y NEG (Negaciones lógica y aritmética)

Sintaxis OW (bin y hex) Operación


MC 68000

Negación lógica (complemento)


NOT.L D6 0100 0110 1000 0110 $ 4686 D631-0 → D631-0

Negación aritmética (opuesto)


NEG.L D6 0100 0100 1000 0110 $ 4486 0 - D631-0 → D631-0

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 29


CONJUNTO DE INSTRUCCIONES
Instrucciones con 1 operando
Instrucciones con otros formatos
17 COP [13 bits] Dn Sólo Dn

Sintaxis OW (bin y hex) Operación


Permutar (swap): tamaño implícito y único, W

0100 1000 0100 0110 $ 4846 D631-16 ↔ D615-0


MC 68000

SWAP D6

EXT, extensión de signo: dos tamaños, W y L

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

EXT. W D6 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 $ 4 8 8 6 D67 → D6k (k: 15...8)


xxxx xxxx xxxx xxxx xxxx xxxx sbbb bbbb → xxxx xxxx xxxx xxxx ssss ssss sbbb bbbb

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 30


CONJUNTO DE INSTRUCCIONES
Instrucciones con 2 operandos:
MNEM.tam op_fuente,op_destino

1 COP tam EA destino EA fuente Sólo instrucción MOVE (mover)


reg mod mod reg
tam: B → 01
W → 11
L → 10

Sintaxis OW (bin y hex) Operación


MC 68000

MOVE.W D1,D6 0011 1100 0000 0001 $ 3C01 D115-0 → D615-0

* Observaciones:

1 El orden en sintaxis es fuente,destino, pero en la OW es destino-fuente

2 En EA el orden es reg mod en EAdestino pero es mod reg en EAfuente

3 El código del tamaño (B, W, L) es distinto en MOVE que en CLR

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 31


CONJUNTO DE INSTRUCCIONES
Instrucciones con 2 operandos de datos:
MNEM.tam op_fuente,op_destino ⇒ destino Θ fuente → destino

2 mod Ejemplo: SUB (Restar)


COP Dn EA
oper
b8b7b6

{
Tamaño; B (00); W (01); L (10)

b8 = 0: Dn es destino, Dn Θ EA → Dn
MC 68000

b8 = 1: Dn es fuente y EA es tipo amea, amea Θ Dn → amea


(amea: modos indirectos y absolutos, ver más adelante)

Sintaxis OW (bin y hex) Operación


SUB.L D6,D1 1001 0010 1000 0110 $ 9286 D1 - D6 → D1

SUB.L D1,D6 1001 1100 1000 0001 $ 9C81 D6 - D1 → D6

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 32


CONJUNTO DE INSTRUCCIONES
Instrucciones con 2 registros internos (An, Dn) como operandos:
MNEM.tam op_fuente,op_destino

6 COP Reg COP[6] Reg Ejemplo: EXG (Intercambiar, sólo L)


b8b7b6b5b4b3
1 0 1 0 0 0 : Ambos Registros son de Datos, Dn
1 0 1 0 0 1 : Ambos Registros son de Direcciones, An
1 1 0 0 0 1 : Un Registro es de Datos, Dn, y el otro de Dirección, An
MC 68000

Sintaxis OW (bin y hex) Operación


EXG D6,D1 1100 1101 0100 0001 $ CD41 D6 ↔ D1

EXG A6,A1 1100 1101 0100 1001 $ CD49 A6 ↔ A1

EXG D6,A1 1100 1101 1000 1001 $ CD89 D6 ↔ A1


Dn An

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 33


CONJUNTO DE INSTRUCCIONES
Ejemplos de formatos cortos:
Se usan para dar datos pequeños (cortos) en sumas, restas y movimientos en la propia
OW (modo inmediato).
Ejemplo 1: MOVEQ mueve dato de 8 bits a registro Dn con extensión de signo a L
Dato ∈ [-128, 127]

COP
7 COP Reg Dato

Sintaxis OW (bin y hex) Operación


MOVEQ #$5D,D6 0111 1100 0101 1101 $ 7C5D $0000005D → D6
MC 68000

Ejemplo 2,3: Suma/resta un dato de 3 bits (entre 1 y 8(10) a operando (tipoAEA)


Usados para hacer contadores crecientes (ADD) o decrecientes (SUB)
Dato ∈ [1, 8]
COP

9 COP Dato Tam EA El valor 8 ocurre con 000


ADDQ: 0 1 0 1 0
{

SUBQ: 0 1 0 1 1
Tamaño; B (00); W (01); L (10)

Sintaxis OW (bin y hex) Operación


ADDQ.W #8,D6 0101 0000 0100 0110 $ 5046 D6(15-0 + 8→ D6(15-0

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 34


CONJUNTO DE INSTRUCCIONES
Formatos para bifurcaciones (saltos):
Ejemplo: Bcc: Bifurca (branch) si se cumple la condición “cc”
11 COP Condic Desplazam. Desplazamiento ∈ [-128, 127](10
* Si es POSITIVO ( 0bbb bbbb) el salto es hacia adelante
Condiciones (“cc”):
* Si es NEGATIVO ( 1bbb bbbb) el salto es hacia atrás
* “cc” puede ser: HI (HIgher), GT (Great
Than), ... y la instrucción es BHI o BGT o ... * Si es CERO (0000 0000) el desplazamiento está en una
MC 68000

palabra de extensión (EW) de 16 bits. Entonces, el salto


* Campo de 4 bits que codifican 16 condicio- estará entre [-32768, 32767](10
nes de salto (ver tabla)

Sintaxis OW (bin y hex) Operación


BLS.S etiqueta 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 $ 6 3 F 2 If “LS” then PC+2+Desp
else PC+2
{
{
B... LS
{
Desp = -14(10

etiqueta = PC + 2 + Desp = PC + 2 - 14(10


Si Desp = 0, la sintaxis sería
BLS etiqueta

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 35


CONJUNTO DE INSTRUCCIONES
Condiciones de salto/bifurcaciones
($H es el Hexadecimal de los 4 bits de condición)

Aritmética sin signo (HI,CS,CC,LS)


Aritmética con signo
y con/sin signo (EQ,NE,T,F)

$H Condición(significado) Cálculo $H Condición(significado) Cálculo


E GT(Greater Than) Z + (N⊕V) = 0 2 HI (HIgher) Z+C=0

D LT(Less Than) N⊕V=1 5 CS (Carry Set) C=1

C GE(Greater or Equal) N⊕V=0 4 CC (Carry Clear) C=0

F LE(Less or Equal) Z + (N⊕V) = 1 3 LS (Low or Some) Z+C=1

9 VS(oVerflow Set) V=1 7 EQ (EQual) Z=1


8 VC(oVerflow Clear) V=0 6 NE (No Equal) Z=0
A PL (PLus) N=0 0 T (True) 1
B MI (MInus) N=1 1 F (False) 0

Punto de vista práctico de la tabla anterior


Instrucción para Código para la condición
Condición evaluarla (hay
otras) Con signo Sin signo
MC 68000

A>B CMP B,A GT HI


A>B CMP B,A GE CC
A<B CMP B,A LT CS
A<B CMP B,A LE LS
A=B CMP B,A EQ EQ
A =/ B CMP B,A NE NE
A>0 TST A PL -
A<0 TST A MI -
Desbordamiento Aritméticas VS CS
No desbordamiento Aritméticas VC CC

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 36


CONJUNTO DE INSTRUCCIONES
Bcc etiq: visión gráfica y textual
Salto hacia
Adelante (Desp > 0) Atrás (Desp < 0)
Se cumple No se cumple
cc Programa: Programa:
[PC] Instrucción [PC] Instrucción
Sigue PC+2
... ... ... ...
N Bcc etiq N+2+Desp etiq instrucción de salto
MC 68000

N+2 ...(instrucción sig.) .


. .
. .
. N Bcc etiq
N+2+Desp etiq instrucción de salto N+2 ...(instrucción sig.)

El programa ENSAMBLADOR es el que calcula el valor


Sigue en del desplazamiento una vez que conoce dónde está
etiq = la instrucción de llamada (PC = N) y la etiqueta (etiq).
= PC+2+Desp

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 37


CONJUNTO DE INSTRUCCIONES
Modos de direccionamiento
* Son las distintas formas de dar operandos (datos, desplazamientos, ...) en la instrucción
* En general pertenecen a alguna de los tipos o categorías siguientes:
** IMPLÍCITO o INHERENTE: Sin operando, todo es COP
** INMEDIATO: El operando está en la propia instrucción
Instrucción OW&EW: ... operando ...
** DIRECTO: El operando está en un registro cuya dirección se da
MC 68000

directamente en la propia instrucción


Instrucción OW&EW: ... dirección ...
operando
** INDIRECTO: El operando está en memoria y su dirección se obtiene del
contenido de otro registro -a veces llamado registro base- cuya
posición se da en la instrucción
Instrucción OW&EW: ... registro base...

... dirección ... operando

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 38


CONJUNTO DE INSTRUCCIONES
Modos de direccionamiento en el MC68000
* Hay diferentes subtipos en algunos de los tipos anteriores (se incluye la sintaxis):
** DIRECTO:· de registro interno de datos, Dn
· de registro interno de direcciones, An
· de Memoria: se llama direccionamiento ABSOLUTO y se dan todos (24)
los bits de direcciones (absoluto largo, XXXXXX) o sólo 16 de ellos
(absoluto corto, XXXX)
MC 68000

** INDIRECTO. Hay dos grandes subtipos, según quién es el registro base:


1. Si es An, se llaman direccionamientos indirectos de registro y hay 5 distintos:
· Indirecto de registro (I.R.), (An)
· I.R. con postincremento, (An)+
· I.R. con predecremento, -(An)
· I.R. con desplazamiento, d16(An)
· I.R. indexado con desplazamiento, d8(An,Ri.X)
2. Si es PC, se llaman direccionamientos relativos al PC y hay 2 distintos:
· relativo con desplazamiento, d16(PC)
· relativo indexado con desplazamiento, d8(PC,Ri.X)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 39


CONJUNTO DE INSTRUCCIONES
* En el MC68000 los direccionamientos se pueden dar de forma:
· corta, p. ej. ADDQ (formato 9) tiene Inmediato de 3 bits,
EXG (formato 6) tiene Directo a Dn o a An de 3 bits cada uno
MOVEQ (formato 7) tiene Directo a Dn/An de 3bits e Inmediato de 8 bits.

· EA de 6 bits: 3 bits de modo y 3 bits de Registro, según la tabla siguiente

Modo Reg. Direccionamiento Modo Reg. Direccionamiento


MC 68000

000 Dn 000 XXXX


001 An 001 XXXXXX
010 (An) 010 d16(PC)
111
011 (An)+ 011 d8(PC,Ri.X)
100 n -(An) 100 #XXXXXX
101 d16(An)
110 d8(An,Ri.X)

p. ej. ADDQ, además del Inmediato de 3 bits, tiene otro operando con EA

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 40


CONJUNTO DE INSTRUCCIONES
Uso de los modos de direccionamiento del 68000
Implícito

♦ Son instrucciones sin operando (estrictamente, sin direccionamiento).

♦ Sólo tienen COP en su OW (formato 18).

♦ Algunos ejemplos son (sintaxis y su OW en hexadecimal):


MC 68000

NOP (No OPeration): $ 4 E 7 1


RTS (ReTurn from Subroutine): $ 4 E 7 5
RTE (ReTurn from Exception): $ 4 E 7 3
TRAPV (TRAP o oVerflow): $ 4 E 7 6
RTR ((ReTurn and Restore condition codes): $ 4 E 7 7

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 41


CONJUNTO DE INSTRUCCIONES
♦ En los ejemplos que siguen utilizaremos la instrucción MOVE.t fuente,destino
(t es el tamaño; fuente es tipo <ea> y destino es tipo <adea>1).
B: 01 EA destino EA fuente
MOVE, OW: 0 0 W: 11 reg [3] / mod [3] mod [3] / reg [3]
L: 10 | |

Nota: Respecto a MOVE, si el destino es An debe utilizarse MOVEA.t <ea>, An


la cual sólo admite tamaños W y L
MC 68000

♦ En cada ejemplo presentaremos:


sintaxis código ejecutable (binario o hex) operación

1. La notación <ea>, <adea> y otras se presenta más adelante

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 42


CONJUNTO DE INSTRUCCIONES
INMEDIATO COP & operando

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

EJERCICIO 1: Si (D6)=$10325476 y se ejecuta MOVE.W # -38,D6, indique cuál es el código ejecutable


generado y el contenido de D6 tras la ejecución de la instrucción.

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 43


CONJUNTO DE INSTRUCCIONES
DIRECTO
Dn Registro Interno de Datos
mod/reg An Registro Interno de Dirección
COP & EA
XXXX Absoluto corto Memoria
XXXXXX Absoluto largo
MC 68000

Si, antes, es: (A4) = $ CA FE 36 63


MOVE.B A4,D5
A47-0 → D57-0
D5 A4 31 24 23 16 15 87 0
OW : 00 01 101 000 001 100 D5 −− −− −− −− −− −− 0110 0011
no afectados

EJERCICIO 2: Si (D6)=$10325476 y se ejecuta MOVEA.L D6,A4, indique cuál es el código ejecutable


generado y el contenido de A4 tras la ejecución de la instrucción. Comente qué ocurriría si la ins-
trucción hubiese sido MOVEA.B D6,A4

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 44


CONJUNTO DE INSTRUCCIONES
ABSOLUTOS:
♦ LARGO: Se dan en EW todos los bits (24) de direcciones: $HHHHHH (H: dígito hex)
Se puede acceder a cualquier posición de memoria
♦ CORTO: Se dan en EW 16 bits de direcciones: $HHHH o -$HHHH
Se accede sólo a las primeras 32K ($000000-$007FFF)
o a las últimas 32K ($FF8000-$FFFFFF) posiciones de memoria
MC 68000

Si, antes, es: M($32468) = $ E3


MOVE.B $32468,D5
M(...) → D57-0
D5 XXXXXX 31 24 23 16 15 87 0
OW : 00 01 101 000 111 001 D5 −− −− −− −− −− −− 1110 0011
$3 2468

EW1: 0000 0000 0000 0011 no afectados

EW2: 0010 0100 0110 1000

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 45


CONJUNTO DE INSTRUCCIONES
Si, antes, es: M($32468) = $ E3 y M($32469) = $42
MOVE.W $32468,$2012
M($32468/9) → M($2012/3)
XXXX XXXXXX
Memoria
OW : 00 11 000 111 111 001

$3 2468
EW1: 0000 0000 0000 0011
EW2: 0010 0100 0110 1000 } 1º Fuente
$002012 1110 0011 0100 0010

EW3: 0010 0000 0001 0010 $2012 2º Destino


MC 68000

MOVE.W $32468, - $2012 Si, antes, es: M($32468) = $ E3 y M($32469) = $42

-$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

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 46


CONJUNTO DE INSTRUCCIONES
INDIRECTOS
COP & EA (An) (An) Memoria
Registro Interno de Dirección
(An)+
+1/2/4

-1/2/4
- (An)
Desplazamiento: d16(An/PC)
MC 68000

COP & EA (An o PC) An o PC


Desplazamiento d16 Memoria
+
Indexado con desplazamiento: d8(An/PC, Ri.X)
COP & EA (An o PC) An o PC
Ri (D/A) X (W/L) d8 Memoria
+
{

Di o Ai con tamaño X

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 47


CONJUNTO DE INSTRUCCIONES
Ejemplo de INDIRECTO DE REGISTRO
mod 010, reg An; sintaxis (An)

MOVE.W (A5),D5 M [(A5)]15-0 → D515-0


D5 (A5) Si, antes, es:
Memoria
OW : 00 11 101 000 010 101 (A5) = $00002012
$002012 1110 0011 0100 0010
MC 68000

31 24 23 16 15 87 0
Entonces, D5 −− −− −− −− 1110 0011 0100 0010
no afectados

* MOVE.W (A5),D5 con (A5) = $00002013, da ERROR


por haber alineamiento incorrecto (impar)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 48


CONJUNTO DE INSTRUCCIONES
Ejemplo de INDIRECTO CON POSTINCREMENTO
mod 011, reg An; sintaxis (An)+

MOVE.W (A5)+,D5 M [(A5)]15-0 → D515-0, (A5+2) → (A5)


D5 (A5)+ Si, antes, es: Memoria
OW : 00 11 101 000 011 101 (A5) = $00002012
$002012 1110 0011 0100 0010
MC 68000

31 24 23 16 15 87 0
Entonces, primero D5 −− −− −− −− 1110 0011 0100 0010
no afectados
W
segundo
002012 + 2 = 002014
(A5) = $00002014

* (An) se queda apuntando al ‘siguiente’ dato (sea cual sea su tamaño)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 49


CONJUNTO DE INSTRUCCIONES
Ejemplo de INDIRECTO CON PREDECREMENTO
mod 100, reg An; sintaxis -(An)

MOVE.W -(A5),D5 M [(A5-2)]15-0 → D515-0, (A5-2) → (A5)


D5 - (A5) Si, antes, es:
OW : 00 11 101 000 100 101 (A5) = $00002012
W
Entonces, primero 002012 - 2 = 002010 (A5) = $00002010
MC 68000

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)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 50


CONJUNTO DE INSTRUCCIONES
Ejemplo de INDIRECTO CON DESPLAZAMIENTO
mod 101, reg An; sintaxis +d16(An)

MOVE.W 20(A5),D5 M [(A5+20)]15-0 → D515-0


D5 d16(A5) Si, antes, es: (A5) = $00002012
OW : 00 11 101 000 101 101 Atención: el desplazamiento está en decimal:
EW : 0000 0000 0001 0100 20(10 = $ 14
MC 68000

Entonces Memoria
002012 + 14 = 002026
$002026 0101 0110 0111 1110

31 24 23 16 15 87 0
D5 −− −− −− −− 0101 0110 0111 1110
no afectados

* Desplazamiento positivo → salto adelante; desplazamiento negativo → salto atrás


* La suma/resta debe realizarse en una sola base (todo en hex, o todo en decimal, o ...)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 51


CONJUNTO DE INSTRUCCIONES
Ejemplo de INDIRECTO INDEXADO CON DESPLAZAMIENTO
mod 110, reg An; sintaxis +d8(An, Ri.X)

* Sintaxis: +d8(An, Ri.X)

coma punto
MC 68000

d8 es el desplazamiento (8 bits); An el registro de direcciones que sirve de base;

Ri.X es el Registro índice Ri (Dn o An) junto con su tamaño X (W, L)

* La palabra de extensión, EW, tiene el siguiente formato


15 14-12 11 10-8
D/A REG W/L
0/1 bbb 0/1 000 d8 (8 bits en Ca2: entre -128(10 y +127(10)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 52


CONJUNTO DE INSTRUCCIONES

MOVE.W -4(A5,D4.W),D5 M [(A5+ D415-0 - 4]15-0 → D515-0


D5 d8(A5,Ri.X) Si, antes, es: (A5) = $00002012 y (D4)=$11223344
OW : 00 11 101 000 110 101
EW : 0 100 0 000 1111 1100 002012 + 3344 + (-4) = 005352
D 4 W - 4 (en CA2)
Memoria

$005352 1010 1110 0001 1110


MC 68000

Entonces 31 24 23 16 15 87 0
D5 −− −− −− −− 1010 1110 0001 1110
no afectados

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 53


CONJUNTO DE INSTRUCCIONES
Ejemplo de RELATIVO AL PC CON DESPLAZAMIENTO
mod 111, reg 010; sintaxis +d16(PC)

* 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

MOVE.W -$200(PC),D5 M [(PC-$200)]15-0 → D515-0


D5 d16(PC) Si, antes, es: (PC) = $00001234
OW : 00 11 101 000 111 010
Entonces Memoria
EW : 1111 1110 0000 0000
-$200 = $FE00 001234 + 2 - 200 = 001036
$001036 1100 1111 1111 1010
31 24 23 16 15 87 0
D5 −− −− −− −− 1100 1111 1111 1010
no afectados

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 54


CONJUNTO DE INSTRUCCIONES
Ejemplo RELATIVO AL PC INDEXADO CON DESPLAZAMIENTO
mod 111, reg 011; sintaxis +d8(PC, Ri.X)

* La palabra de extensión, EW, tiene el mismo formato del equivalente Indirecto:


15 14-12 11 10-8
D/A REG W/L
0/1 bbb 0/1 000 d8 (8 bits en Ca2: entre -128(10 y +127(10)
MC 68000

MOVE.W -4(PC,D4.W),D5 M [(PC+ 2 + D415-0 - 4]15-0 → D515-0


D5 d8(PC,Ri.X) Si, antes, es: (PC) = $00001234 y (D4)=$11223344
OW : 00 11 101 000 111 011
001234 + 2 + 3344 + (-4) = 004576
EW : 0 100 0 000 1111 1100 Memoria
D 4 W - 4 (en CA2)
$004576 1011 1101 0101 0111
Entonces 31 24 23 16 15 87 0
D5 −− −− −− −− 1011 1101 0101 0111
no afectados

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 55


CONJUNTO DE INSTRUCCIONES
TIPOS DE INSTRUCCIONES

* El MC68000 es un CISC, por lo que:

1. Cada operación básica prácticamente tiene una instrucción que la realiza


2. No es práctico analizar las instrucciones una a una
MC 68000

** Lo que haremos en clase es:

1. Explicar qué son y cómo utilizar las “tablas de examen”


2. Comentar las instrucciones por grupos según tipo de operación

*** 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.

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 56


CONJUNTO DE INSTRUCCIONES
CONTENIDO DE LAS Tablas de examen

1. Tablas genéricas: contiene aspectos generales de sintaxis y direccionamientos

2. Repertorio de instrucciones, clasificadas por tipos de operación. Estas tablas


se usarán para programar con el ISP del MC68000.
MC 68000

3. Códigos objeto, listados por el orden numérico de la OW de la instrucción.


Se usarán para analizar un código máquina con el fin de obtener el programa
correspondiente.

4. Tablas específicas: formato de MOVE, EW de indexado&desplazamiento,


comparaciones, etc.

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 57


CONJUNTO DE INSTRUCCIONES
Tablas generales

* Modos de direccionamiento con sus valores MODO/REG, cálculo de EA y sintaxis.

* Bases numéricas: %bin, @oct, dec o &dec, $hex


MC 68000

* Bits de código de condición (CCR): 0, 1, * (afectado), - (no afectado), u (indefinido)

* Clasificación de “EA” de [Septien et al, 95]:


** ea (todos); dea (ea de datos, excluye An); mea (ea de memoria, excluye a Dn y
a An); cea (ea de control, son de memoria e independientes del tamaño de
operandos, por lo que excluye a (An)+ y a -(An) e Inmediato)
** a.ea: son los alterables .ea y constituyen los destinos de las operaciones, por lo
que excluyen a inmediato (#) y a relativos a PC

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 58


CONJUNTO DE INSTRUCCIONES
Clasificación del repertorio de instrucciones por tipos de operación

• Movimiento de datos: Mueve, intercambia o actualiza contenidos de registros/memoria

• 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

• Desplazamiento y rotación: Los desplazamientos son aritméticos o lógicos, a derecha o


izquierda y con el bit C o con X. El aritmético a la izquierda activa V (overflow) si resulta
cambio de signo. Las rotaciones son con C o extendidas (con C y X)

LSL X/C 0 ROL C


LSR 0 X/C ROR C

ASL X/C 0 ROXL C X

ASR X/C X C
ROXR

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 59


CONJUNTO DE INSTRUCCIONES
Clasificación del repertorio de instrucciones por tipos de operación (cont.)

• Aritmética BCD: Suma, resta y niega en BCD empaquetado (tamaño B y bit de extensión, X)

• Manipulación de bits: Chequea un bit y lo pone a 0, 1 o b.

• 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

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 60


CONJUNTO DE INSTRUCCIONES
Repertorio de instrucciones en las Tablas de examen

* Contienen información resumida de las instrucciones agrupadas por tipo de operación


(Se usa: CCR-Condition Code Register (usuario), SR-Status Register (supervisor)
y USP-User Stack Pointer (usuario)). No está su Código objeto.

* Para cada instrucción se indica su mnemotécnico (p. ej. MOVE) junto a:


• Sintaxis: mnemotécnico para ensamblador, incluyendo el tipo de direccionamiento (ea,
MC 68000

dea, etc.) posible para cada operando; en el ejemplo:


MOVE.t <ea>,<adea>
indicando que el fuente es cualquier <ea> y el destino, <adea>

• 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

• Función: descripción RT de la operación; ej. (fuente) → destino

• 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.

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 61


CONJUNTO DE INSTRUCCIONES
Ejemplo de instrucción difícil en las Tablas de examen: DBF
∗ DBF es un caso particular de DBcc, instrucción de Control de programa, que tiene:
Sintaxis: DBcc Dm,<etiqueta> Función: (Es compleja. Ver flujo de la figura:)

Tamaño: Desplazamiento de 16 bits If cc False Then Dm - 1 → Dm


If Dm =/ -1 Then PC+Despl. → PC
XNZVC: - - - - - (no afectados) Else PC+2 → PC
MC 68000

DBcc DBF
Se cumple No se cumple Se cumple No se cumple
cc F
Dn = Dn -1 Dn = Dn -1

= =/ = =/
Dn = -1 Dn = -1

Siguiente Etiqueta Siguiente Etiqueta


(PC+2) (PC+despl.) (PC+2) (PC+despl.)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 62


CONJUNTO DE INSTRUCCIONES
Códigos Objeto en las Tablas de examen

∗ Las instrucciones aparecen según el orden numérico de su OW de la instrucción.

∗ Utilidad: Código máquina → programa


También pueden usarse para obtener el código objeto de las instrucciones
MC 68000

(algo incómodo debido a la ordenación según OW)

∗ A veces hay poca información (p. ej. ‘bit dinámico’ en 0XXX).


Otras, hay mucha (p. ej. para las instrucciones MOVE)

∗ Aparecen instrucciones de varios μP: 68000, ... , 68020 (en EC sólo vemos 68000)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Instrucciones - 63


MICROPROCESADORES. EL 68000

Guión
1. El microprocesador 68000 como componente: patillaje, buses y conexiones básicas.

2. Modelos de programación a nivel de registro: de usuario y de sistema.

3. El conjunto de instrucciones: operandos, formatos de instrucción, modos de direccionamiento y tipos de instruc-


ción.

4. Ejemplos de aplicación en lenguaje ensamblador.

5. Operaciones de bus: el acceso a memoria.

6. Excepciones e interrupciones.

Dpto. Tecnología Electrónica 1º II - EC MC68000 - 64


APLICACIÓN ENSAMBLADOR
Ensamblador del MC68000

∗ El LENGUAJE ENSAMBLADOR del MC68000 contiene:

∗∗ todo el repertorio de instrucciones del 68000 con la sintaxis ya indicada


∗∗ un conjunto de directivas o pseudoinstrucciones que sólo veremos en parte
MC 68000

∗ 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

P. ej. lazo1 MOVE.L $4320,D0 D0 tiene valor de referencia Refer → D0

Dpto. Tecnología Electrónica 1º II - EC MC68000 Aplicación Ensamblador - 65


APLICACIÓN ENSAMBLADOR
Directivas del Ensamblador

Expresión

∗ Se pueden usar expresiones (+, -, •, ÷, ( ),...), que se calculan en tiempo de ensamblado

END
∗ Indica el final del programa fuente (al programa Ensamblador)
MC 68000

nombre EQU expresión

∗ 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

nombre SET expresión


∗ Similar a EQU, salvo que es reasignable (mediante otro SET en el mismo programa)

Dpto. Tecnología Electrónica 1º II - EC MC68000 Aplicación Ensamblador - 66


APLICACIÓN ENSAMBLADOR

ORG dirección

∗ Asigna la primera instrucción del programa fuente que venga a continuación

a esa dirección.
** Admite tamaño de dirección largo (ORG.L) y origen relativo (RORG)

∗ Ejemplo:
MC 68000

ORG $4320 La instrucción MOVE...


MOVE.W D3,D0
etc.
} y las siguientes (etc.) se
escriben en $4320 y
siguientes
$4320
$4322
Mem
$30 $03
OW próx..

MOVE.W D3,D0 → OW: $3003

Dpto. Tecnología Electrónica 1º II - EC MC68000 Aplicación Ensamblador - 67


APLICACIÓN ENSAMBLADOR

etiqueta DC.tam operandos

∗ Inicia el contenido de las posiciones de memoria a partir de etiqueta a los valores dados
por tamaño tam y lista de operandos

∗ Ejemplos que sólo ejem → $00 $00


difieren en tam: $00 $42
$00 $00
MC 68000

ejem DC.B $42,$05,$54,$51 ejem DC.L $42,$05,$54,$51 $00 $05


Mem $00 $00
ejem → $42 $00 $54
$05
$00 $00
$54 $51
$00 $51

etiqueta DS.tam

∗ Reserva posiciones de memoria a partir de etiqueta sin asignar valores

Dpto. Tecnología Electrónica 1º II - EC MC68000 Aplicación Ensamblador - 68


APLICACIÓN ENSAMBLADOR

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

Dpto. Tecnología Electrónica 1º II - EC MC68000 Aplicación Ensamblador - 69


APLICACIÓN ENSAMBLADOR

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

Dpto. Tecnología Electrónica 1º II - EC MC68000 Aplicación Ensamblador - 70


APLICACIÓN ENSAMBLADOR
Ejemplo de aplicación: Problema 22
Problema 22.- Realice una subrutina para sumar dos vectores de 10 números enteros de 32 bits que se almacenan
en posiciones consecutivas de memoria. La dirección de memoria en que se encuentra el primero de ellos es el con-
tenido del registro de direcciones A1 y la del segundo está en A2. Se cumple que (A1) + 10 x 4 < (A2). Almacene el
resultado a partir de A3

Programa en ensamblador:
* Inicialización del PC:
MC 68000

ORG 4 En la dirección 4 busca valor inicial de PC


DC.L START Se le asigna (a PC) lo indicado en START (tam L)
* Asignamos valores a los vectores para realizar un caso práctico
ORG $1000 La próxima palabra está en $1000
vect1 DC.L 1,2,3,4,5,6,7,8,9,10 El “vect1” comienza en $1000; sus elementos son:
* 1º: M($1000-1003) = 1; 2º: M($1004-1007) = 2; ...; 10º: M($1024-1027) = 10.
vect2 DC.L 4,8,12,16,20,24,28,32,36,40 El “vect2” comienza a continuación, en $1028:
*1º: M($1028-102B) = 4; 2º: M($102C-102F) = 8;...; 10º: M($104C-104F) = 40
RES DS.L 10 RES tiene reservadas 10 palabras tamaño L en
* $1050-1053; $1054-57; ...; $1074-1077

Dpto. Tecnología Electrónica 1º II - EC MC68000 Aplicación Ensamblador - 71


APLICACIÓN ENSAMBLADOR
* Programa. Empieza por la etiqueta START que es la declarada para el valor inicial de PC
*
* Primero, iniciamos los punteros a los vectores
START MOVEA.L #vect1,A1 A1 se carga con $1000
MOVEA.L #vect2,A2 A2 se carga con $1028
MOVEA.L #RES,A3 A3 se carga con $1050
* Ahora, resolvemos la tarea usando un contador de 10 en D0
MOVEQ #10,D0 D0 se carga con 10 (tamaño L)
MC 68000

bucle MOVE.L (A1)+,D1 Operamos en D1


ADD.L (A2)+,D1
BVS FIN Termina en caso de desbordamiento
MOVE.L D1,(A3)+ Almacena el resultado
SUBQ.L #1,D0 Decrementa el contador (D0) (tamaño L)
BNE bucle
FIN BREAK BREAK indica el fin de este programa

Dpto. Tecnología Electrónica 1º II - EC MC68000 Aplicación Ensamblador - 72

Vous aimerez peut-être aussi