Vous êtes sur la page 1sur 97

Pr actica de Arquitectura de Computadores Sistemas de Entrada/Salida Curso 2013/2014

Antonio P erez Ambite Santiago Rodr guez de la Fuente Departamento de Arquitectura y Tecnolog a de Sistemas Inform aticos Facultad de Inform atica Universidad Polit ecnica de Madrid Versi on 1.1 Noviembre 2013

Indice general
1. Microprocesador MC68000 1.1. Modelo de programaci on . . . . . . . . . . . . . . . . 1.1.1. Modelo de programaci on del modo usuario . 1.1.2. Modelo de programaci on del modo supervisor 1.1.3. Registro de estado . . . . . . . . . . . . . . . 1.2. Tipos de operandos y modos de direccionamiento . . 1.3. Organizaci on de datos en registros . . . . . . . . . . 1.3.1. Registros de datos . . . . . . . . . . . . . . . 1.3.2. Registros de direcciones . . . . . . . . . . . . 1.4. Mapa de direcciones . . . . . . . . . . . . . . . . . . 1.4.1. Organizaci on de datos en memoria . . . . . . 1.5. Excepciones e interrupciones . . . . . . . . . . . . . 1.5.1. Procesamiento de excepciones . . . . . . . . . 1.5.2. Tabla de vectores de excepci on . . . . . . . . 1.5.3. Procesamiento de interrupciones . . . . . . . 1.5.4. Excepci on de reset . . . . . . . . . . . . . . . 1.6. Juego de instrucciones . . . . . . . . . . . . . . . . . 1.6.1. Abreviaturas . . . . . . . . . . . . . . . . . . 1.6.2. Transferencia de datos . . . . . . . . . . . . . 1.6.3. Aritm eticas . . . . . . . . . . . . . . . . . . . 1.6.4. L ogicas . . . . . . . . . . . . . . . . . . . . . 1.6.5. Desplazamientos . . . . . . . . . . . . . . . . 1.6.6. Manejo de bits . . . . . . . . . . . . . . . . . 1.6.7. Control del programa . . . . . . . . . . . . . 1.6.8. Control del procesador . . . . . . . . . . . . . 1 1 1 1 3 3 5 5 5 5 5 6 7 7 7 9 9 9 13 17 23 25 31 32 34 35 35 36 36 38 38 38 39 39 40

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

2. Controlador de l neas serie MC68681 2.1. Transmisi on as ncrona de caracteres por una l nea serie 2.2. Caracter sticas de la DUART MC68681 . . . . . . . . . 2.3. Descripci on de los registros . . . . . . . . . . . . . . . . 2.3.1. Registros de modo 1 (MR1A y MR1B) . . . . . . 2.3.2. Registros de modo 2 (MR2A y MR2B) . . . . . . 2.3.3. Registros de estado (SRA y SRB) . . . . . . . . 2.3.4. Registros de selecci on de reloj (CSRA y CSRB) . 2.3.5. Registros de control (CRA y CRB) . . . . . . . . 2.3.6. Registros del buer de recepci on (RBA y RBB) . i

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

II

Pr actica de EntradaSalida (20122013) 2.3.7. 2.3.8. 2.3.9. 2.3.10. 2.3.11. Registros del buer de transmisi on (TBA y TBB) Registro de control auxiliar (ACR) . . . . . . . . . Registro de estado de interrupci on (ISR) . . . . . . Registro de m ascara de interrupci on (IMR) . . . . Registro del vector de interrupci on (IVR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 40 40 41 41 43 43 44 44 44 44 44 45 45 45 45 46 46 46 47 48 48 48 48 49 49 51 51 53 53 54 54 55

3. Programa ensamblador 68kasm 3.1. Llamada al programa ensamblador . . . . . . . . . . . . 3.2. Formato del c odigo fuente . . . . . . . . . . . . . . . . . 3.2.1. Campo de etiquetas . . . . . . . . . . . . . . . . 3.2.2. Campo de operaci on . . . . . . . . . . . . . . . . 3.2.3. Campo de operandos . . . . . . . . . . . . . . . . 3.2.4. Campo de comentario . . . . . . . . . . . . . . . 3.2.5. S mbolos . . . . . . . . . . . . . . . . . . . . . . 3.2.6. Expresiones . . . . . . . . . . . . . . . . . . . . . 3.2.7. Especicaci on de los modos de direccionamiento 3.3. Instrucciones de bifurcaci on . . . . . . . . . . . . . . . . 3.4. Pseudoinstrucciones . . . . . . . . . . . . . . . . . . . . 3.4.1. Set origin ORG . . . . . . . . . . . . . . . . . . . . 3.4.2. Equate EQU . . . . . . . . . . . . . . . . . . . . . 3.4.3. Dene constant DC . . . . . . . . . . . . . . . . . 3.4.4. Dene storage DS . . . . . . . . . . . . . . . . . . 3.4.5. Set symbol SET . . . . . . . . . . . . . . . . . . . 3.4.6. Dene register set REG . . . . . . . . . . . . . . . 3.4.7. Dene constant block DCB . . . . . . . . . . . . . 3.5. Formato del listado ensamblador . . . . . . . . . . . . . 3.6. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Simulador BSVC 4.1. Carga de computador virtual . . . . . . . . . . 4.2. Carga de un programa objeto . . . . . . . . . . 4.3. Men us de la ventana de manejo del simulador . 4.4. Botones de la ventana de manejo del simulador 4.5. Errores conocidos . . . . . . . . . . . . . . . . . 5. Enunciado de la pr actica

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

A. Instalaci on del entorno de la pr actica en un computador con sistema operativo Linux A.1. Instalaci on en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.1.1. Obtenci on del entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . A.1.2. Instalaci on del paquete . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Compilaci on de bsvc en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.1. Obtenci on del entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.2. Instalaci on del paquete . . . . . . . . . . . . . . . . . . . . . . . . . . A.3. Conexi on remota a batman . . . . . . . . . . . . . . . . . . . . . . . . . . . .

83 83 83 83 84 84 84 85

INDICE GENERAL

III

B. Depuraci on de fallos que se maniesten como excepciones en el procesador MC68000 87 B.1. Identicaci on la instrucci on que provoc o la excepci on . . . . . . . . . . . . . . 88 B.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

IV

Pr actica de EntradaSalida (20122013)

Cap tulo 1

Microprocesador MC68000
El microprocesador MC68000 fue introducido en 1979 y es el primer microprocesador de la familia M68000 de Motorola. Es un procesador CISC, aunque posee un juego de instrucciones muy ortogonal, tiene un bus de datos de 16 bits y un bus de direcciones de 24 bits.

1.1.

Modelo de programaci on

El MC68000 fue uno de los primeros microprocesadores en introducir un modo de ejecuci on privilegiado. As , las instrucciones se ejecutan en uno de los dos modos posibles: Modo usuario: este modo proporciona el entorno de ejecuci on para los programas de aplicaci on. Modo supervisor: en este modo se proporcionan algunas instrucciones privilegiadas que no est an disponibles en el modo usuario. El software de sistema y el sistema operativo ejecuta en este modo privilegiado.

1.1.1.

Modelo de programaci on del modo usuario

El modelo de programaci on del modo usuario es com un para todos los microprocesadores de la familia M68000. Este modelo contiene (ver gura 1.1) 16 registros de 32 bits de prop osito general (D0D7, A0A7), un contador de programa (PC, Program Counter) de 32 bits y un registro de estado de 8 bits (CCR, Condition Code Register). Los primeros 8 registros (D0D7) se usan para almacenar operandos de un octeto (byte = 8 bits), una palabra (word = 16 bits) o de una palabra larga (longword = 32 bits). El otro grupo de 7 registros (A0A6) y el puntero de pila de usuario (A7 o USP, User Stack Pointer) se pueden usar como registros de direcciones o punteros de pila de usuario, en particular el registro A6 se suele utilizar como puntero de marco (FP, Frame Pointer). Estos registros de direcciones s olo se pueden usar para operandos de una palabra o de una palabra larga, pero no de un octeto. Todos estos 16 registros se pueden usar como registros ndices en los desplazamientos m ultiples.

1.1.2.

Modelo de programaci on del modo supervisor

En el modelo de programaci on del modo supervisor est an disponibles todos los registros del modo usuario y otros adicionales. Los registros adicionales de este modo para el procesador

2
31 16 15 8 7

Pr actica de EntradaSalida (20122013)


0 D0 D1 D2 D3 D4 D5 D6 D7 31 16 15 0 A0 A1 A2 A3 A4 A5 A6 PUNTERO DE PILA DE USUARIO CONTADOR DE PROGRAMA REGISTRO DE ESTADO SIETE REGISTROS DE DIRECCIONES OCHO REGISTROS DE DATOS

A7 (USP)

PC

CCR

Figura 1.1: Modelo de programaci on de usuario

MC68000 se muestran en la gura 1.2.


31 16 15 0 A7 (SSP) 8 7 CCR SR REGISTRO DE ESTADO PUNTERO DE PILA DE SUPERVISOR

Figura 1.2: Modelo de programaci on de supervisor

En este modo se tiene acceso al octeto de mayor peso del registro de estado y se dispone de un puntero de pila de supervisor (A7 o Supervisor Stack Pointer). De este modo, si se referencia el registro A7 se referencia el USP o el SSP dependiendo del modo de ejecuci on. Como es habitual, desde el modo supervisor se tiene acceso al puntero de pila de usuario, pero no a la inversa.

1. Microprocesador MC68000

1.1.3.

Registro de estado

El registro de estado (ver gura 1.3) tiene 16 bits, aunque los bits 5, 6, 7, 11, 12 y 14 no se usan en el MC68000 y est an reservados para uso futuro. El octeto de menor peso (octeto de usuario) contiene los siguientes biestables de estado: desbordamiento (O, Overow), cero (Z, Zero), negativo (N, Negative), acarreo (C, Carry) y precisi on extendida (X, Extend). El octeto de mayor peso (octeto de sistema) contiene biestables de control de modo para modo traza (T, Trace) y supervisor (S, supervisor), as como la m ascara de interrupci on (I2 ,I1 ,I0 ).
BYTE DE SISTEMA
15 13 10 9 8

BYTE DE USUARIO
4 3 2 1 0

T
MODO TRAZA MODO SUPERVISOR MASCARA DE INTERRUPCION

I2 I1 I0

XNZ VC
ACARREO DESBORDAMIENTO CERO NEGATIVO PRECISION EXTENDIDA

Figura 1.3: Registro de estado

1.2.

Tipos de operandos y modos de direccionamiento

El procesador MC68000 soporta los siguientes tipos de operandos: 1. Bits. 2. Decimal Codicado en Binario (BCD) de 4 bits por d gito. 3. Octetos (8 bits) 4. Palabras (16 bits) 5. Palabras largas (32 bits) Existen nem onicos espec cos para operandos de bits y BCD. Sin embargo, para distinguir entre octetos, palabras y palabras largas se a nade un sujo al nem onico en cuesti on. De este modo, MOVE.B indica operandos de 8 bits (B, Byte), MOVE.W operandos de 16 bits (W, Word) y MOVE.L operandos de 32 bits (L, Longword). En cuanto a los modos de direccionamiento, el MC68000 proporciona 14 modos de direccionamiento que se pueden agrupar en los siguientes 7 tipos b asicos: 1. Directo a registro 2. Absoluto 3. Indirecto a registro 4. Relativo a contador de programa.

4 5. Relativo a registro base. 6. Inmediato 7. Impl cito

Pr actica de EntradaSalida (20122013)

La tabla 1.1 detalla cada uno de los modos de direccionamientos del MC68000. Modo Directo a registro de datos de direcci on Absoluto corto largo Indirecto a registro con postincremento con predecremento Relativo a PC con desplazamiento m ultiple Relativo a registro base con desplazamiento m ultiple Inmediato byte, palabra o palabra larga corto Impl cito a registro Leyenda: EA = Dn = An = CO = d8 = d16 = N = = Xn = SR = PC = USP= SSP = C alculo de la direcci on EA=Registro de dato n EA=Registro de direcci on n EA=Siguiente palabra en CO EA=Siguientes dos palabras en CO EA=An EA=An, An An+N An AnN, EA=An EA=PC+d16 EA=PC+Xn+d8 EA=An+d16 EA=An+Xn+d8 DATA=Siguientes bytes en CO DATA=3 bits en CO EA=SR,USP,SSP,PC Dn An (XXX).W (XXX).L (An) (An)+ -(An) (d16 ,PC) (d8 ,PC,Xn) (d16 ,An) (d8 ,An,Xn) #< data > #< data > SR,USP,SSP,PC Sintaxis

Direcci on efectiva Registro de datos Registro de direcciones C odigo de operaci on Desplazamiento de 8 bits Desplazamiento de 16 bits 1 para byte, 2 para palabra y 4 para palabra larga Sustituye Registro de datos o direcciones usado como ndice en los desplazamientos m ultiples Registro de estado Registro contador de programa Registro puntero de pila de usuario Registro puntero de pila de supervisor Tabla 1.1: Modos de direccionamiento

1. Microprocesador MC68000

1.3.

Organizaci on de datos en registros

Los ocho registros de datos proporcionan soporte para operandos de 1, 8, 16 o 32 bits. Los siete registros de direcciones y el puntero de pila activo proporcionan soporte para direcciones de 32 bits.

1.3.1.

Registros de datos

Cada registro de datos contiene 32 bits. Los operandos de octeto ocupan los 8 bits de menor peso, los de palabra los 16 bits de menor peso y los de palabra larga los 32 bits. El bit menos signicativo se direcciona como bit 0 y el m as signicativo como bit 31. Si alguno de estos registros se usa como fuente o destino de una operaci on de tama no inferior a palabra larga, s olo se modica la parte de menor peso correspondiente y la parte de mayor peso permanece inalterada.

1.3.2.

Registros de direcciones

Estos registros de direcciones (junto con el puntero de pila) tienen 32 bits y contiene una direcci on completa de 32 bits. Los registros de direcciones no proporcionan soporte para operandos de byte. A diferencia de los registros de datos, si un registro de direcciones se usa como destino, el registro completo se modica aunque la operaci on tenga un tama no de palabra. En este caso, se extiende el signo de los operandos antes de la realizaci on de la operaci on.

1.4.

Mapa de direcciones

Los procesadores de la familia M68000 tienen un u nico espacio o mapa de direcciones. De este modo, en dicho mapa de direcciones se deben ubicar tanto los dispositivos que conguran la memoria principal como los controladores de perif ericos. Por lo tanto, dentro del juego de instrucciones, no existen instrucciones espec cas de Entrada/Salida, sino que todas las instrucciones se podr an utilizar para direccionar tanto memoria principal como los controladores de perif erico. Aunque el MC68000 posee registros de direcciones de 32 bits de ancho, solo dispone 24 bits en el bus de direcciones1 . Como posee direccionamiento a nivel de byte, puede direccionar 224 Bytes es decir 16 Megabytes. Lo habitual es reservar las u ltimas direcciones del mapa para ubicar los controladores de perif ericos.

1.4.1.

Organizaci on de datos en memoria

El MC68000 proporciona direccionamiento a nivel de byte con una organizaci on big endian como se muestra en la gura 1.4. Como se observa, el byte de mayor peso tiene asignado una direcci on menor que la del byte de menor peso. Las instrucciones y operandos de varios bytes se deben almacenar en direcciones pares. De otro modo, se genera la excepci on Address Error si se intenta acceder a un operando de m as de un byte con una direcci on impar. En particular, los operandos de tama no de palabra
1 En realidad, existen desde el A1 hasta el A23 para direccionar palabras y dos l neas adicionales UDS y LDS (Upper y Lower Data Strobes) para seleccionar el byte de mayor peso, el de menor peso o ambos de cada palabra.

6
15 DIRECCION $000000 $000002 $000004 BYTE 000000 BYTE 000002 BYTE 000004 14 13 12 11 10 9

Pr actica de EntradaSalida (20122013)


8 7 6 5 4 3 2 1 0

PALABRA 0 PALABRA 1 PALABRA 2

BYTE 000001 BYTE 000003 BYTE 000005

. . . PALABRA 7FFFFF

$FFFFFE

BYTE FFFFFE

BYTE FFFFFF

Figura 1.4: Organizaci on de palabras en memoria

larga se almacenan en dos palabras consecutivas. Es decir, si la primera palabra se ubica en la direcci on n (n debe ser par), la segunda palabra se ubica en la direcci on n+2.

1.5.

Excepciones e interrupciones

El t ermino excepci on denota comportamientos an omalos o no deseados por el programa en ejecuci on, tal es el caso de los cepos o traps y las interrupciones. Cuando se presenta un suceso como una divisi on por cero, un error en el bus, una violaci on de privilegios o un controlador de perif erico solicita un interrupci on, se abandona el procesamiento de las instrucciones del programa en ejecuci on y se ejecuta la secuencia o ciclo de reconocimiento de excepciones. Por lo tanto, las interrupciones que solicitan los controladores de perif erico son un caso particular de las excepciones. Entre las excepciones que trata el MC68000 se encuentran: Excepci on de reset Es la que se procesa al activar RESET y HALT de forma simult anea y supone una reinicializaci on del procesador. Errores de bus y de direcci on Un error de bus se produce cuando desde el exterior se on, cuando se intenta activa la se nal BERR en un ciclo de bus, y un error de direcci acceder con direcci on impar a palabras o dobles palabras. En ambos casos se suspende el ciclo de memoria y se trata la excepci on, en este caso no se puede completar la ejecuci on de la instrucci on. Traza Se procesa al nal de cada instrucci on si est a activo el bit de traza del registro de estado. Se utiliza para la depuraci on de programas. Instrucci on ilegal Se procesa cuando se intenta ejecutar un c odigo de instrucci on no implementado. Dos casos especiales son los c odigos de instrucci on destinados a los coprocesadores de coma otante y memoria p aginada, que tienen vectores espec cos. Estos c odigos comienzan con las secuencias 1111 y 1010.

1. Microprocesador MC68000

Violaci on de privilegio Se produce cuando se intenta ejecutar en modo usuario instrucciones que s olo se pueden ejecutar en modo supervisor. TRAP La propia instrucci on TRAP procesa una de las 16 excepciones TRAP que expresa un operando inmediato. Se utiliza para solicitar servicios del sistema operativo. TRAPV Se procesa la excepci on si se cumple la condici on de overow al ejecutar una instrucci on TRAPV. CHK Se procesa la excepci on si ejecutando la instrucci on CHK se detecta un desbordamiento de rango. Se utiliza para dar soporte a los lenguajes de alto nivel2 que poseen rangos en tipos enteros, como por ejemplo el ndice de un vector. Divisi on por 0 Se provoca la excepci on si en una instrucci on de divisi on el cociente es 0. Interrupci on Se procesa al nal de una instrucci on si se solicita una interrupci on por las l neas de interrupci on IP L2, IP L1 e IP L0, con una prioridad mayor a la codicada en los bits I2 , I1 y I0 del registro de estado.

1.5.1.

Procesamiento de excepciones

En procesamiento de cualquier excepci on, supone almacenar en la pila el registro de estado y contador de programa3 . A continuaci on, se lleva el contenido de la entrada correspondiente de la tabla de vectores al PC y se procede a ejecutar instrucciones. Por lo tanto, en la entrada correspondiente de la tabla de vectores debe de almacenarse previamente la direcci on de la rutina de tratamiento de la excepci on. Adem as, se coloca a 1 el bit S del registro de estado y por lo tanto las rutinas de tratamiento de excepciones se ejecutan en modo privilegiado. Existe una instrucci on espec ca para retornar de rutina de excepci on (RTE). Esta instrucci on restaura el contador de programa y el registro de estado que se almacenaron en la pila durante el procesamiento de la excepci on. Por lo tanto, al restaurar el registro de estado, restaura el bit S y se restaura el modo de ejecuci on anterior.

1.5.2.

Tabla de vectores de excepci on

La entrada de la tabla de vectores cuyo contenido se carga en el PC, viene predeterminada para todas las excepciones excepto para las interrupciones de los perif ericos. El MC68000 tiene asignadas entradas distintas para cada tipo de excepci on, seg un se muestra en la gura 1.5. Cada entrada de esta tabla tiene 4 bytes, ya que almacena una direcci on. Por lo tanto ocupa 1 Kbytes. Adem as y a diferencia de los otros procesadores de la familia M68000, el MC68000 no posee un registro base de la tabla de vectores. Por lo tanto, esta tabla siempre debe estar ubicada a partir de la direcci on 000000 y abarca hasta la direcci on 0003FF.

1.5.3.

Procesamiento de interrupciones

Las interrupciones son un caso particular de excepciones y su procesamiento es ligeramente diferente. Las principales diferencias se reeren a:
2 3

Es decir, todos menos C En el procesamiento de las excepciones de direcci on y bus, el procesador almacena en pila m as informaci on.

8 N umero vector 0 2 3 4 5 6 7 8 9 10 11 12-14 15 16-23 24 25-31 32-47 48-63 64-255 Direcci on Dec Hex 0 000 4 004 8 008 12 00C 16 010 20 014 24 018 28 01C 32 020 36 024 40 028 44 02C 48 030 60 03C 64 040 96 060 100 064 128 080 192 0C0 256 100

Pr actica de EntradaSalida (20122013) Excepci on Reset: SSP inicial Reset: PC inicial Error de bus Error de direcci on Instrucci on ilegal Divisi on por 0 Instrucci on CHK Instrucci on TRAPV Violaci on de privilegio Traza Emulador instrucci on 1010 Emulador instrucci on 1111 Reservado Vector Int. no inicializado Reservado Interrupci on esp urea Autovectores 1-7 Instrucciones TRAP 0-15 Reservado Vectores de interrupci on

Figura 1.5: Tabla de vectores de excepci on del MC68000 Enmascaramiento selectivo. Solo se procesa la interrupci on, al nal de la ejecuci on de la 4 instrucci on en curso, si el nivel de la solicitud es estrictamente superior al nivel almacenado en los bits I2 , I1 y I0 del registro de estado. Adem as del bit S, tambi en se modican estos bits almacenando el nivel de la interrupci on que se procesa. As se enmascaran las interrupciones de nivel igual o menor a la que se ha reconocido. La instrucci on (RTE) restaura el registro de estado, por lo tanto restaura el nivel de interrupci on anterior. Vectorizaci on. A diferencia de las excepciones propiamente dichas, los controladores de perif ericos deben suministrar un vector de interrupci on de un byte5 . Este vector es el n umero de la entrada de la tabla de vectores donde est a almacenada la direcci on de su rutina de tratamiento. Por lo tanto, durante la secuencia de reconocimiento de interrupciones se producen varios ciclos de bus para obtener la direcci on de la rutina de tratamiento de la interrupci on. 1. El ciclo de bus de reconocimiento de interrupciones cuyo objetivo es leer el vector de interrupci on. Este vector debe estar comprendido entre 64 y 255 (ver tabla 1.5). 2. El vector de interrupci on le do se multiplica por 4 para obtener la direcci on de la entrada correspondiente de la tabla de vectores. Con la direcci on obtenida se inicia
Excepto las de nivel 7 que no con enmascarables Tambi en existe la posibilidad de interrupciones autovectorizadas para compatibilidad con perif ericos de otras familias distintas a la M68000
5 4

1. Microprocesador MC68000

un ciclo de bus para leer la direcci on de comienzo de la rutina de interrupci on. Esta direcci on almacenada en la tabla de vectores se lleva al PC y se comienza a ejecutar la rutina de tratamiento.

1.5.4.

Excepci on de reset

Cuando se reinicia el computador, se produce la excepci on de RESET. Durante el procesamiento de esta excepci on no se almacena nada en la pila, ya que se usa para iniciar o reiniciar el procesador. Los pasos m as destacables de esta excepci on son: Se lee el contenido de los 4 primeros bytes de la memoria y se llevan al SSP (puntero de pila de supervisor). Se lee el contenido de los siguientes 4 bytes y se llevan al PC. Se colocan a 1 los bits S, I2 , I1 y I0 del registro de estado. Por lo tanto, se va iniciar la ejecuci on de instrucciones en modo privilegiado y con las interrupciones inhibidas. Se realiza el fetch de la instrucci on apuntada por el PC y se comienza la ejecuci on de instrucciones. Por lo tanto, se debe colocar la direcci on de inicio del programa en las direcciones 000004 - 000007 y el puntero de pila inicial en las direcciones 000000 - 000003. Adem as, cuando se est e en condiciones de reconocer interrupciones se debe colocar 000 en los biestables de m ascara de interrupci on I2 , I1 y I0 del registro de estado.

1.6.

Juego de instrucciones

Las instrucciones se resumen en el conjunto de tablas ubicadas a partir de la p agina 13. En ellas se representan el nem onico de las operaciones, los operandos posibles, los bytes que ocupan, el n umero de ciclos de reloj que consumen, los bits de estado que se modican y un peque no resumen de la operaci on que ejecutan. Los posibles operandos se representan de forma abreviada. La descripci on de estas abreviaturas se encuentra en la secci on 1.6.1. Se incluye una columna que determina el n umero de ciclos de reloj que emplea cada instrucci on. El n umero de ciclos aparece con el siguiente formato: t(r/w), donde la t determina el n umero total de ciclos de reloj que emplea el procesador en ejecutar esa instrucci on, incluido el ciclo de fetch. r determina cu antos ciclos de memoria se realizan en la instrucci on, y w, cu antos de escritura. En algunos casos aparece un signo +, que indica que hay que sumar ciclos a los que aparecen, y que se emplean para calcular la direcci on efectiva seg un sea esta. Lo que hay que sumar depende del direccionamiento, y se obtendr a de la tabla 1.6. En ella todas las w valen 0.

1.6.1.

Abreviaturas

Cuando aparece una X en un bit de estado, quiere decir que la operaci on modica el bit de estado: 0 lo pone a 0 y 1 lo pone a 1. U quiere decir que quedar a indenido. Las abreviaturas empleadas son:

10

Pr actica de EntradaSalida (20122013)


Modo de direccionamiento Dn An (An) (An)+ -(An) $Desp(An) $Desp(An,I) xxx.W xxx.L $Desp(PC) $Desp(An,I) #xxx Directo a registro datos Directo a registro direcciones Indirecto a registro Indirecto a registro con postincremento Indirecto a registro con predecremento Relativo a registro base Relativo a registro base con desplazamiento m ultiple Absoluto corto Absoluto largo Relativo a PC Relativo a PC con desplazamiento m ultiple Inmediato 8(2/0) 12(3/0) 8(2/0) 10(2/0) 4(1/0) 12(3/0) 16(4/0) 12(3/0) 14(3/0) 8(2/0) Pala.,byte 0(0/0) 0(0/0) 4(1/0) 4(1/0) 6(1/0) 8(2/0) 10(2/0) Larga 0(0/0) 0(0/0) 8(2/0) 8(2/0) 10(2/0) 12(3/0) 14(3/0)

Figura 1.6: C alculo de ciclos a partir de direcciones efectivas addr: Direcci on absoluta de 16 o 32 bits. An: bitb: bitl: cc: Registro de direcci on A0, A1,... A7. N umero de bit de byte 0..7. N umero de bit de doble palabra 0..31. C odigo de condici on: CC: Carry Clear: C CS: Carry Set: C EQ: Equal: Z F: False: 0 GE: Greater Than or Equal: (N V ) (N V ) GT: Greater Than: (N V Z ) (N V Z ) HI: High: C Z LS: Low or Same: C Z LE: Less Than or Equal: Z (N V ) (N V ) LT: Less Than: (N V ) (N V ) MI: Minus: N NE: Not Equal: Z PL: Plus: N T: True: 1 VC: Overow Clear: V VS: Overow Set: V

CCR: Condition Code Register. Byte de usuario del registro de estado. count: Contador de desplazamiento 1-8. count o Dn: Operando que puede ser count o Dn, indistintamente. dadr: Direcci on destino, modos de direccionamiento posibles: Indirecto a registro (An). Indirecto a registro con postincremento (An)+.

1. Microprocesador MC68000 Indirecto a registro con predecremento -(An). Relativo a registro base d16(An). Indirecto a registro indexado con desplazamiento d8(An,i). addr Direcci on Absoluta. dAn: Registro de direcci on destino. dDn: Registro de datos destino. data3: 3 bits de dato inmediato. data8: 8 bits de dato inmediato. data16: 16 bits de dato inmediato. data32: 32 bits de dato inmediato. Dn: d8: d16: i: jadr: Registro de datos, n=0..7 (tama nos de 8, 16 o 32). Desplazamiento de 8 bits. Desplazamiento de 16 bits. Registro ndice (An o Dn, en desplazamiento m ultiple). Direcci on de salto. Igual que sadr, excluidos (An)+ y -(An).

11

label: Etiqueta o direcci on absoluta. madr: Direcci on m ultiple. Igual que dadr, excluidos (An)+ y -(An). reglist: Lista de registros, incluye varios registros separados por comas o rangos de registros Rn-Rm separados por / rd: rs: sadr: Registro destino (dDn o dAn). Registro fuente (sDn o sAn). Direcci on fuente, puede ser una de las siguientes: Indirecto a registro (An). Indirecto a registro con postincremento (An)+. Indirecto a registro con predecremento -(An). Relativo a registro base d16(An). Indirecto a registro indexado con desplazamiento d8(An,i). Direcci on absoluta addr. label o addr empleadas en direccionamiento relativo a PC. Direccionamiento relativo a PC indexado label(i). sAn: Registro de direcci on fuente.

12 sDn: SR: Registro de datos fuente. Registro de estado.

Pr actica de EntradaSalida (20122013)

USP: Puntero de pila de usuario (no es el registro A7). vector:Direcci on del vector de TRAP [ ]: Contenido de la posici on de memoria cuya direcci on est a contenida en el registro especicado. Dn [An] Indica que se almacena en Dn el contenido de la posici on de memoria cuya direcci on est a cargada en An. Dn An Indica que se carga en Dn el contenido de An. x: Complemento del valor de x. Bits del y al z de x. Por ejemplo, Dn < 0 7 > representa los 8 bits bajos

x < y z >: de Dn. +: : : : : : Suma. Resta.

: : : =:

AND l ogico. OR l ogico. OR Exclusivo l ogico. Igual.

Multiplicar. Dividir.

Movimiento de datos en el sentido de la echa. Intercambio de datos entre dos posiciones.

En las siguientes instrucciones se comentan las siguientes cuatro notas, se naladas en los casos necesarios mediante una indicaci on del tipo comentarioi , donde i puede ser 1, 2, 3 o 4: 1. Los postincrementos suman 1 y los predecrementos restan 1, salvo que el registro de direcci on que aparezca sea el A7, en cuyo caso se trabaja con 2 en vez de 1, para que A7 siempre tenga una direcci on par. 2. La direcci on efectiva debe ser par. 3. El postincremento o predecremento se hace sumando o restando 2. 4. El postincremento o predecremento se hace sumando o restando 4.

1. Microprocesador MC68000

13

1.6.2.

Transferencia de datos
Ciclos Registro estado X N X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Z X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X V 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Operaci on realizada Dn<07>[An] Dn<07>[An], AnAn+11 -(An),Dn d16(An),Dn d8(An,i),Dn addr,Dn label,Dn label(i),Dn 2 4 4 4,6 4 4 2 2 2 4 4 4,6 2,4,6,8,10 2,4,6 2,4,6 2,4,6 2,4,6,8,10 2,4,6 2,4,6 2,4,6 2,4,6,8,10 4 4,6,8 6 6 6,8,10 2 2 2 2 2 2 10(2/0) 12(3/0) 14(3/0) 4(1/0)+ 12(3/0) 14(3/0) 9(1/1) 9(1/1) 9(1/1) 13(2/1) 15(2/1) 5(0/1)+ 5(1/1)+ 4(1/0)+ 4(1/0)+ 5(0/1)+ 5(0/1)+ 4(1/0)+ 8(2/0)+ 10(0/2)+ 14(1/2)+ 8(2/0)+ 9(1/1)+ 12(3/0) 12(3/0)+ 18(2/2)+ 4(1/0) 4(1/0) 4(1/0) 4(1/0) 4(1/0) 4(1/0) X X 0 0 AnAn1, Dn<07>[An]1 Dn<07>[An+d16] Dn<07>[An+d8+i] Dn<07>[addr] Dn<07>[P C +d16] Dn<07>[P C +d8+i] [An]Dn<07> [An]Dn<07>, AnAn+11 Dn,-(An) Dn,d16(An) Dn,d8(An,i) Dn,addr AnAn1, [An]Dn<07>1 [An+d16]Dn<07> [An+d8+i]Dn<07> [addr]Dn<07> [dadr][sadr]1 Dn<015>[sadr]2,3 An<015>[sadr], An<1631>An<15>2,3 [dadr]rs<015>2,3 [dadr][sadr]2,3 Dn<031>[sadr]2,4 An<031>[sadr]2,4 [dadr]rs<031>2,4 [dadr][sadr]2,4 An<015>data16, An<1631>An<15> [dadr]data16 Dn<031>data32 An<031>data32 [dadr]data32 dDn<07>sDn<07> Dn<015>rs<015> An<015>rs<015>, An<1631>An<15> Dn<031>rs<031> An<031>rs<031> U SP An Instrucci on ejecutable en supervisor Operandos (An),Dn (An)+,Dn Bytes 2 2 reloj 8(2/0) 8(2/0)

Nem onico MOVE.B

MOVE.B

Dn,(An) Dn,(An)+

MOVE.B MOVE.W MOVE.W MOVE.W MOVE.W MOVE.L MOVE.L MOVE.L MOVE.L MOVE.W MOVE.W MOVE.L MOVE.L MOVE.L MOVE.B MOVE.W MOVE.W MOVE.L MOVE.L MOVE

sadr,dadr sadr,Dn sadr,An rs,dadr sadr,dadr sadr,Dn sadr,An rs,dadr sadr,dadr data16,An data16,dadr data32,Dn data32,An data32,dadr sDn,dDn rs,Dn rs,An rs,Dn rs,An An,USP

MOVE

USP,An

4(1/0)

AnU SP Instrucci on ejecutable en supervisor

14

Pr actica de EntradaSalida (20122013)


Ciclos Nem onico EXG LINK Operandos rs,rd An,d16 Bytes 2 4 reloj 6(1/0) 18(2/2) Registro estado X N Z V C Operaci on realizada rsrd A7A74, [A7]An AnA7, A7A7+d16 UNLK An 2 12(3/0) A7An, An[A7], A7A7+4 MOVEM.W jadr,reglist 4,6,8 8+4n(1+n/0)+ X X 0 0 reg 1<015>[jadr], reg 1<1631>reg 1<15> reg 2<015>[jadr+4], reg 2<1631>reg 2<15> : regn<015>[jadr+2n2], regn<1631>regn<15>2 Carga palabras alen

macenadas secuencialmente memoria en una lista de registros el orden en que se cargan es D0-D7,A0-A7 MOVEM.W (An)+,reglist 4 8+4n(2+n/0)+ reg 1<015>[An], reg 1<1631>reg 1r15>, An[An+2] reg 2<015>[An], reg 2<1631>reg 2<15>, An[An+2] : regn<015>[An], regn<1631>regn<15>, An[An+2]2,3 Igual que la anterior, pero con postincremento MOVEM.W reglist,madr 4,6,8 4+5n(1/n)+ [madr]reg 1<015> [madr+2]reg 2<015> [madr+4]reg 3<015> : : [madr+2n2] regn<015>2 Almacena palabras de lista de registros en espacio secuencial de de memoria, orden almacenamiento

D0-D7,A0-A7

1. Microprocesador MC68000
Ciclos Nem onico MOVEM.W Operandos reglist,-(An) Bytes 4 reloj 4+5n(1/n)+ Registro estado X N Z V C

15

Operaci on realizada An[An2], [An]regn<015> : An[An2], [An]reg 3<015> An[An2], [An]reg 2<015> An[An2], [An]reg 1<015>2,3 Almacena de lista de palabras regitros

en espacio secuencial de memoria el orden de MOVEM.L jadr,reglist (An)+,reglist reglist,madr reglist,-(An) 4,6,8 4 4,6,8 4 8+8n (2+2n/0) 4+10n (1+n) Igual que MOVEM.W, excepto que ahora se mueven los 32 bits de registros MOVEP.W d16(An),Dn 4 16(4/0)
2,4

almacenamiento

A7-A0,D7-D0

Dn<815>[An+d16], AnAn+2, Dn<07>[An+d16]3 Carga datos de perif ericos de direcciones alternas. La direcci on es de byte y lee bytes

MOVEP.W

Dn,d16(An)

18(2/2)

[An+d16]Dn<815>, AnAn+2, [An+d16]Dn<07>3 Almacena los bytes de registros en direcciones alternas de perif ericos. La direcci on es de byte y escribe bytes

MOVEP.L

d16(An),Dn

24(6/0)

Dn<2431>[An+d16], AnAn+2 Dn<1623>[An+d16], AnAn+2 Dn<815>[An+d16], AnAn+2 Dn<07>[An+d16]3 Carga datos de perif ericos de direcciones alternas. La direcci on es de byte y lee bytes

16

Pr actica de EntradaSalida (20122013)


Ciclos Nem onico MOVEP.L Operandos Dn,d16(An) Bytes 4 reloj 28(2/4) Registro estado X N Z V C Operaci on realizada [An+d16]Dn<2431>, AnAn+2, [An+d16]Dn<1623>, AnAn+2 [An+d16]Dn<815>, AnAn+2 [An+d16]Dn<07> Almacena los bytes de registros en direcciones alternas de perif ericos. La direcci on es de byte y escribe bytes MOVEQ MOVE.B MOVE.B MOVE.W LEA data8,Dn data8,Dn data8,dadr data16,Dn jadr,An 2 4 4,6,8 4 2,4,6 4(1/0) 8(2/0) 9(1/1)+ 8(2/0) 2(0/0)+ X X X X X X X X 0 0 0 0 0 0 0 0 Dn<07>data8, Dn<831>Dn<7> Dn<07>data8 [dadr]data8 Dn<015>data16 Anjadr2 Carga una direcci on efectiva en un registro de direcci on PEA jadr 2,4,6 10(1/2)+ A7A74, [A7]jadr4 Apila direcci on efectiva CLR.B CLR.W CLR.L CLR.B CLR.W CLR.L SWAP Scc dadr dadr dadr Dn Dn Dn Dn dadr 2,4,6 2,4,6 2,4,6 2 2 2 2 2,4,6 9(1/1)+ 9(1/1)+ 14(1/2)+ 4(1/0)+ 4(1/0)+ 6(1/0)+ 4(1/0) 9(1/1)+ 0 0 0 0 0 0 X 1 1 1 1 1 1 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [dadr]01 [dadr]02,3 [dadr]02,4 Dn<07>01 Dn<015>02,3 Dn<031>02,4 Dn<07>Dn<815> [dadr]todo1s si cc = TRUE [dadr] todo 0s si cc = FALSE1 Scc Dn 2 4(1/0) Dn<07>todo1s si cc = TRUE Dn<07>todo0s si cc = FALSE TAS dadr 2,4,6 11(1/1)+ X X 0 0 [dadr<7>]11 Instrucci on para multiprocesador TAS Dn 2 4(1/0) X X 0 0 Dn<7>1

1. Microprocesador MC68000

17

1.6.3.

Aritm eticas
Ciclos Registro estado X X X X N X X X Z X X X V X X X C X X X Operaci on realizada Dn<07> Dn<07>+[sadr]1 [dadr] [dadr]+Dn<07>1 Dn<015> Dn<015>+[sadr]2,3 An<031>An<031> +[sadr](expande signo)2,3 X X X X X X X X X X [dadr] [dadr]+Dn<015>2,3 Dn<031> Dn<031>+[sadr]2,4 An<031> An<031>+[sadr]2,4 X X X X X X X X X X X X X X X X X X X X [dadr] [dadr]+Dn<031>2,4 Dn<07> Dn<07>+data8 [dadr][dadr]+data81 Dn<015> Dn<015>+data16 An<031>An<031> +data16(expande signo) X X X X X X X X X X [dadr][dadr]+data162,3 Dn<031> Dn<031>+data32 An<031> An<031>+data32 X X X X X X X X X X X X X X X [dadr][dadr]+data322,4 dDn<07> dDn<07>+sDn<07> Dn<015> [Dn<015>+rs<015> An<031>An<031>+ rs<015>(expande signo) X X X X X Dn<031> Dn<031>+rs<031> An<031> An<031>+rs<031> X X X X X X X X X X X X X X X Dn<07> Dn<07>+data3 [dadr][dadr]+data31 Dn<015> Dn<015>+data3 An<031> An<031>+data3 X X X X X [dadr][dadr]+data32,3 Operandos sadr,Dn Dn,dadr sadr,Dn sadr,An Dn,dadr sadr,Dn sadr,An Dn,dadr data8,Dn data8,dadr data16,Dn data16,An data16,dadr data32,Dn data32,An data32,dadr sDn,dDn rs,Dn rs,An rs,Dn rs,An data3,Dn data3,dadr data3,Dn data3,An data3,dadr Bytes 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 4 4,6,8 4 4 4,6,8 6 6 6,8,10 2 2 2 2 2 2 2,4,6 2 2 2,4,6 reloj 4(1/0)+ 9(1/1)+ 4(1/0)+ 8(1/0)+ 9(1/1)+ 6(1/0)+ 6(1/0)+ 14(1/2)+ 8(2/0) 13(2/1)+ 8(2/0) 8(2/0)+ 13(2/1)+ 16(3/0) 16(3/0) 22(3/2)+ 4(1/0) 4(1/0) 8(1/0)+ 8(1/0) 8(1/0) 4(1/0) 9(1/0)+ 4(1/0) 4(1/0)+ 9(1/1)+

Nem onico ADD.B ADD.B ADD.W ADD.W ADD.W ADD.L ADD.L ADD.L ADD.B ADD.B ADD.W ADDA.W ADD.W ADD.L ADDA.L ADD.L ADD.B ADD.W ADD.W ADD.L ADD.L ADDQ.B ADDQ.B ADDQ.W ADDQ.W ADDQ.W

18

Pr actica de EntradaSalida (20122013)


Ciclos Nem onico ADDQ.L ADDQ.L ADDQ.L ADDX.B Operandos data3,Dn data3,An data3,dadr -(sAn),-(dAn) Bytes 2 2 2,4,6 2 reloj 8(1/0) 8(1/0) 14(1/2)+ 19(3/1) X X X X X X X X X X Registro estado X X N X Z X V X C X Operaci on realizada Dn<031> Dn<031>+data3 An<031> An<031>+data3 [dadr][dadr]+data32,4 sAnsAn1, dAndAn1 [dAn][dAn]+[sAn]+X 1 ADDX.W -(sAn),-(dAn) 2 19(3/1) X X X X X sAnsAn2, dAndAn2 [dAn][dAn]+[sAn]+X 2,3 ADDX.L -(sAn),-(dAn) 2 35(5/2) X X X X X sAnsAn4, dAndAn4 [dAn][dAn]+[sAn]+X 2,4 ADDX.B ADDX.W ADDX.L ABCD sDn,dDn sDn,dDn sDn,dDn -(aAn),-(dAn) 2 2 2 2 4(1/0) 4(1/0) 8(1/0) 19(3/1) X X X X X X X U X X X X X X X U X X X X dDn<07>dDn<07> +sDn<07>+X dDn<015>X + dDn<015>+sDn<015> dDn<031>X + dDn<031>+sDn<031> sAnsAn1, dAndAn1 [dAn][dAn]+[sAn]+X 1 Suma BCD n umeros empleando las son en bit dos de

eXtendido, direcciones byte ABCD NEG.B NEG.W NEG.L NEG.B NEG.W NEG.L NEGX.B NEGX.W NEGX.L NEGX.B NEGX.W NEGX.L NBCD sDn,dDn dadr dadr dadr Dn Dn Dn dadr dadr dadr Dn Dn Dn dadr 2 2,4,6 2,4,6 2,4,6 2 2 2 2,4,6 2,4,6 2,4,6 2 2 2 2,4,6 6(1/0) 9(1/1)+ 9(1/1)+ 14(1/2)+ 4(1/0) 4(1/0) 6(1/0) 9(1/1)+ 9(1/1)+ 14(1/2)+ 4(1/0) 4(1/0) 6(1/0) 9(1/1)+ X X X X X X X X X X X X X X U X X X X X X X X X X X X U X X X X X X X X X X X X X X U X X X X X X X X X X X X U X X X X X X X X X X X X X X

dDn<07>dDn<07> +sDn<07>+X [dadr]0[dadr]1 [dadr]0[dadr]2,3 [dadr]0[dadr]2,4 Dn<07>0Dn<07> Dn<015>0Dn<015> Dn<031>0Dn<031> [dadr]0[dadr]X 1 [dadr]0[dadr]X 2,3 [dadr]0[dadr]X 2,4 Dn<07> 0Dn<07>X Dn<015> 0Dn<015>X Dn<031> 0Dn<031>X [dadr]0[dadr]X 1 Complementa a 10 en BCD si X = 0 o a 9 si si X = 1

NBCD

Dn

6(1/0)

Dn<07>[D<07>]X

1. Microprocesador MC68000
Ciclos Nem onico SUB.B SUB.B SUB.W SUB.W SUB.W SUB.L SUB.L SUB.L SUB.B SUB.B SUB.W SUBA.W SUB.W SUB.L SUBA.L SUB.L SUB.B SUB.W SUB.W SUB.L SUB.L SUBQ.B SUBQ.B SUBQ.W SUBQ.W SUBQ.W Operandos sadr,Dn Dn,dadr sadr,Dn sadr,An Dn,dadr sadr,Dn sadr,An Dn,dadr data8,Dn data8,dadr data16,Dn data16,An data16,dadr data32,Dn data32,An data32,dadr sDn,dDn rs,Dn rs,An rs,Dn rs,An data3,Dn data3,dadr data3,Dn data3,An data3,dadr Bytes 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 4 4,6,8 4 4 4,6,8 6 6 6,8,10 2 2 2 2 2 2 2,4,6 2 2 2,4,6 reloj 4(1/0)+ 9(1/1)+ 4(1/0)+ 8(1/0)+ 9(1/1)+ 6(1/0)+ 6(1/0)+ 14(1/2)+ 8(2/0) 13(2/1)+ 8(2/0) 8(2/0)+ 13(2/1)+ 16(3/0) 16(3/0) 22(3/2)+ 4(1/0) 4(1/0) 8(1/0)+ 8(1/0) 8(1/0) 4(1/0) 9(1/0)+ 4(1/0) 4(1/0)+ 9(1/1)+ X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Registro estado X X X X X X X X X X X X N X X X X X X X X X X X Z X X X X X X X X X X X V X X X X X X X X X X X C X X X X X X X X X X X

19

Operaci on realizada Dn<07> Dn<07>[sadr]1 [dadr] [dadr]Dn<07>1 Dn<015> [Dn<015>[sadr]2,3 An<031>An<031> [sadr](expande signo)2,3 [dadr] [dadr]Dn<015>2,3 Dn<031> Dn<031>[sadr]2,4 An<031> An<031>[sadr]2,4 [dadr] [dadr]Dn<031>2,4 Dn<07> Dn<07>data8 [dadr][dadr]data81 Dn<015> [Dn<015>data16 An<031>An<031> data16(expande signo) [dadr][dadr]data162,3 Dn<031> [Dn<031>data32 An<031> An<031>data32 [dadr][dadr]data322,4 dDn<07> dDn<07>sDn<07> Dn<015> Dn<015>rs<015> An<015>An<015> rs<015>(expande signo) Dn<031> Dn<031>rs<031> An<031> An<031>rs<031> Dn<07> Dn<07>data3 [dadr][dadr]data31 Dn<015> Dn<015>data3 An<015> An<015>data3 [dadr][dadr]data32,3

20

Pr actica de EntradaSalida (20122013)


Ciclos Nem onico SUBQ.L SUBQ.L SUBQ.L SUBX.B Operandos data3,Dn data3,An data3,dadr -(sAn),-(dAn) Bytes 2 2 2,4,6 2 reloj 8(1/0) 8(1/0) 14(1/2)+ 19(3/1) X X X X X X X X X X Registro estado X X N X Z X V X C X Operaci on realizada Dn<031> Dn<031>data3 An<031> An<031>data3 [dadr][dadr]data32,4 sAnsAn1, dAndAn1 [dAn][dAn][sAn]+X 1 SUBX.W -(sAn),-(dAn) 2 19(3/1) X X X X X sAnsAn2, dAndAn2 sAnsAn2 [dAn][dAn][sAn]+X 2,3 SUBX.L -(sAn),-(dAn) 2 35(5/2) X X X X X sAnsAn4, dAndAn4 [dAn][dAn][sAn]+X 2,4 SUBX.B SUBX.W SUBX.L SBCD sDn,dDn sDn,dDn sDn,dDn -(sAn),-(dAn) 2 2 2 2 4(1/0) 4(1/0) 8(1/0) 10(3/1) X X X X X X X U X X X X X X X U X X X X dDn<07>dDn<07> sDn<07>+X dDn<015>X + dDn<015>sDn<015> dDn<031>X + dDn<031>sDn<031> sAnsAn1, dAndAn1 [dAn][dAn][sAn]X 1 Resta en BCD de byte de memoria SBCD sDn,dDn 2 6(1/0) X U X U X dDn<07>dDn<07> sDn<07>X Resta en BCD con bit de extendido MULS asdr,Dn 2,4,6 <70(1/0)+ X X 0 0 Dn<031> Dn<015>[sadr]2,3 Multiplica dos n umeros 16 bits con signo y genera uno de 32 MULS data16,Dn 4 70(1/0)+ X X 0 0 Dn<031> Dn<015>data16 Multiplica dos n umeros 16 bits con signo y genera uno de 32 MULS sDn,dDn 2 70(1/0) X X 0 0 dDn<031> dDn<015>sDn<015> Multiplica dos n umeros 16 bits con signo y genera uno de 32

1. Microprocesador MC68000
Ciclos Nem onico MULU Operandos asdr,Dn Bytes 2,4,6 reloj <74(2/0)+ Registro estado X N X Z X V 0 C 0

21

Operaci on realizada Dn<031> Dn<015>[sadr]2,3 Multiplica dos n umeros 16 bits sin signo y genera uno de 32

MULU

data16,Dn

74(2/0)+

Dn<031> [Dn<015>data16 Multiplica dos n umeros 16 bits sin signo y genera uno de 32

MULU

sDn,dDn

70(1/0)

dDn<031> dDn<015>sDn<015> Multiplica dos n umeros 16 bits sin signo y genera uno de 32

DIVS

asdr,Dn

2,4,6

<158(1/0)+

Dn<015> Dn<031>[sadr], Dn<1631>resto2,3 Divide n umeros con signo y genera cociente y resto en 16 bits

DIVS

data16,Dn

162(2/0)+

Dn<015> Dn<031>data16, Dn<1631>resto Divide n umeros con signo y genera cociente y resto en 16 bits

DIVS

sDn,dDn

158(1/0)

dDn<015> dDn<031>sDn<015>, dDn<1631>resto Divide n umeros con signo y genera cociente y resto en 16 bits

DIVU

asdr,Dn

2,4,6

140(1/0)+

Dn<015> Dn<031>[sadr], Dn<1631>resto2,3 Divide sin bits dos y n umeros genera signo

cociente y resto en 16 DIVU data16,Dn 4 74(2/0)+ X X 0 0 Dn<015> Dn<031>data16, Dn<1631>resto Divide sin bits dos y n umeros genera signo

cociente y resto en 16

22

Pr actica de EntradaSalida (20122013)


Ciclos Nem onico DIVU Operandos sDn,dDn Bytes 4 reloj 74(2/0)+ Registro estado X N X Z X V 0 C 0 Operaci on realizada dDn<015> dDn<031>sDn<015>, dDn<1631>resto Divide sin bits EXT.W EXT.L CMP.B CMP.W CMP.W CMP.L CMP.L CMPM.B Dn Dn sadr,Dn sadr,Dn sadr,An sadr,Dn sadr,An (sAn)+,(dAn)+ 2 2 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2 4(1/0) 4(1/0) 4(1/0)+ 4(1/0)+ 6(1/0)+ 6(1/0)+ 6(1/0)+ 12(3/0) X X X X X X X X X X X X X X X X 0 0 X X X X X X 0 0 X X X X X X Dn<815>Dn<7> Extiende signo Dn<1631>Dn<15> Extiende signo Dn<07>[sadr]1 Dn<015>[sadr]2,3 An<015>[sadr]2,3 Dn<031>[sadr]2,4 An<031>[sadr]2,4 [dAn][sAn] dAndAn+1, sAnsAn+11 CMPM.W (sAn)+,(dAn)+ 2 12(3/0) X X X X [dAn][sAn] dAndAn+2, sAnsAn+22,3 CMPM.L (sAn)+,(dAn)+ 2 20(5/0) X X X X [dAn][sAn] dAndAn+4, sAnsAn+42,4 CMP.B CMP.B CMP.W CMP.W CMP.W CMP.L CMP.L CMP.L CMP.B CMP.W CMP.W CMP.L CMP.L TST.B TST.W TST.L TST.B TST.W TST.L data8,Dn data8,dadr data16,Dn data16,An data16,dadr data32,Dn data32,An data32,dadr sDn,dDn rs,Dn rs,An rs,Dn rs,An dadr dadr dadr Dn Dn Dn 4 4,6,8 4 4 4,6,8 4 4 4,6,8 2 2 2 2 2 2,4,6 2,4,6 2,4,6 2 2 2 8(2/0) 8(2/0)+ 8(2/0) 8(2/0) 8(2/0) 14(3/0) 14(3/0) 12(3/0) 4(1/0) 4(1/0) 6(1/0) 6(1/0) 6(1/0) 4(1/0)+ 4(1/0)+ 4(1/0)+ 4(1/0) 4(1/0) 4(1/0) X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 0 0 0 0 0 0 X X X X X X X X X X X X X 0 0 0 0 0 0 Dn<07>data8 [dadr]data81 Dn<015>data16 An<015>data16 [dadr]data162,3 Dn<031>data16 An<031>data16 [dadr]data162,4 dDn<07>sDn<07> Dn<015>rs<015> An<015>rs<015> Dn<031>rs<031> An<031>rs<031> [dadr]01 [dadr]02 [dadr]02 Dn<07>0 Dn<015>0 Dn<031>0 dos y n umeros genera signo

cociente y resto en 16

1. Microprocesador MC68000

23

1.6.4.

L ogicas

Ciclos Nem onico NOT.B NOT.W NOT.L NOT.B NOT.B NOT.L AND.B AND.B AND.W AND.W AND.L AND.L AND.B AND.B AND.W AND.W AND.L AND.L AND.B AND.W AND.L OR.B OR.B OR.W OR.W OR.L OR.L Operandos dadr dadr dadr Dn Dn Dn sadr,Dn Dn,dadr sadr,Dn Dn,dadr sadr,Dn Dn,dadr data8,Dn data8,dadr data16,Dn data16,dadr data32,Dn data32,dadr sDn,dDn sDn,dDn sDn,dDn sadr,Dn Dn,dadr sadr,Dn Dn,dadr sadr,Dn Dn,dadr Bytes 2,4,6 2,4,6 2,4,6 2 2 2 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 4 4,6,8 4 4,6,8 6 6,8,10 2 2 2 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 reloj 9(1/1)+ 9(1/1)+ 14(1/2)+ 4(1/0)+ 6(1/0)+ 6(1/0)+ 4(1/0)+ 9(1/1)+ 4(1/0)+ 9(1/1)+ 6(1/0)+ 14(1/2)+ 8(2/0) 13(2/1)+ 8(2/0) 13(2/1)+ 16(3/0) 22(3/2)+ 4(1/0) 4(1/0) 8(1/0) 4(1/0)+ 9(1/1)+ 4(1/0)+ 9(1/1)+ 6(1/0)+ 14(1/2)+

Registro estado X N X X X X X X X X X X X X X X X X X X X X X X X X X X X Z X X X X X X X X X X X X X X X X X X X X X X X X X X X V 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Operaci on realizada [dadr][dadr]1 [dadr][dadr]2,3 [dadr][dadr]2,4 Dn<07>Dn<07> Dn<015>Dn<015> Dn<031>Dn<031> Dn<07>Dn<07>[sadr]1 [dadr][dadr]Dn<07>1 Dn<015> Dn<015>[sadr]2,3 [dadr] [dadr]Dn<015>2,3 Dn<031> Dn<031>[sadr]2,4 [dadr] [dadr]Dn<031>2,4 Dn<07>Dn<07>data8 [dadr][dadr]data81 Dn<015> Dn<015>data16 [dadr][dadr]data162,3 Dn<031> Dn<031>data32 [dadr][dadr]data322,4 dDn<07> dDn<07>sDn<07> Dn<015> dDn<015>sDn<015> Dn<031> dDn<031>sDn<031> Dn<07>Dn<07>[sadr]1 [dadr][dadr]Dn<07>1 Dn<015> Dn<015>[sadr]2,3 [dadr] [dadr]Dn<015>2,3 Dn<031> Dn<031>[sadr]2,4 [dadr] [dadr]Dn<031>2,4

24
Ciclos Nem onico OR.B OR.B OR.W OR.W OR.L OR.L OR.B OR.W OR.L EOR.B EOR.B EOR.W EOR.W EOR.L EOR.L EOR.B EOR.B EOR.W EOR.W EOR.L EOR.L EOR.B EOR.W EOR.L Operandos data8,Dn data8,dadr data16,Dn data16,dadr data32,Dn data32,dadr sDn,dDn sDn,dDn sDn,dDn sadr,Dn Dn,dadr sadr,Dn Dn,dadr sadr,Dn Dn,dadr data8,Dn data8,dadr data16,Dn data16,dadr data32,Dn data32,dadr sDn,dDn sDn,dDn sDn,dDn Bytes 4 4,6,8 4 4,6,8 6 6,8,10 2 2 2 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 2,4,6 4 4,6,8 4 4,6,8 6 6,8,10 2 2 2 reloj

Pr actica de EntradaSalida (20122013)


Registro estado X N X X X X X X X X X X X X X X X X X X X X X X X X Z X X X X X X X X X X X X X X X X X X X X X X X X V 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Operaci on realizada Dn<07>Dn<07>data8 [dadr][dadr]data81 Dn<015> Dn<015>data16 13(2/1)+ 16(3/0) 22(3/2)+ 4(1/0) 4(1/0) 8(1/0) 4(1/0)+ 9(1/1)+ 4(1/0)+ 9(1/1)+ 6(1/0)+ 14(1/2)+ 8(2/0) 13(2/1)+ 8(2/0) 13(2/1)+ 16(3/0) 22(3/2)+ 4(1/0) 4(1/0) 8(1/0) [dadr][dadr]data162,3 Dn<031> Dn<031>data32 [dadr][dadr]data322,4 dDn<07> dDn<07>sDn<07> dDn<015> dDn<015>sDn<015> dDn<031> dDn<031>sDn<031> Dn<07>Dn<07>[sadr]1 [dadr][dadr]Dn<07>1 Dn<015> Dn<015>[sadr]2,3 [dadr] [dadr]Dn<015>2,3 Dn<031> Dn<031>[sadr]2,4 [dadr] [dadr]Dn<031>2,4 Dn<07>Dn<07>data8 [dadr][dadr]data81 Dn<015> Dn<015>data16 [dadr][dadr]data162,3 Dn<031> Dn<031>data32 [dadr][dadr]data322,4 dDn<07> dDn<07>sDn<07> dDn<015> dDn<015>sDn<015> dDn<031> dDn<031>sDn<031>

8(2/0) 13(2/1)+ 8(2/0)

1. Microprocesador MC68000

25

1.6.5.

Desplazamientos

Ciclos Nem onico ASL Operandos dadr Bytes 2,4,6 reloj 9(1/1)+

Registro estado X X N X Z X V X C X Operaci on Realizada Desplazamiento aritm etico un bit a izquierda, bit 0 se pone a 0. El bit 15 pasa a X y C2,3 C X 15 0 0

ASL.B

count o Dn,Dn

6+2n(1/0)+

Desplazamiento aritm etico de varios bit a izquierda, de byte. La cantidad la determina el contador (1-8) (1-63). y C 31 o el registro 0s al Entran

bit 0 el bit 7 pasa a X 87 C X ASL.W count o Dn,Dn 2 6+2n(1/0)+ X X X X X

0

Igual que anterior, pero con palabra 31 1615 0 C X

0

ASL.L

count o Dn,Dn

6+2n(1/0)+

Igual que anterior, pero con doble palabra C X 31 0 0

ASR

dadr

2,4,6

9(1/1)+

Desplazamiento aritm etico queda como un bit a derecha. El bit 15 estaba y pasa al 14. El 0 se lleva a X y C 15 0

- -C -X

26

Pr actica de EntradaSalida (20122013)


Ciclos Nem onico ASR.B Operandos count o Dn,Dn Bytes 2 reloj 6+2n(1/0)+ Registro estado X X N X Z X V X C X Operaci on realizada Desplazamiento aritm etico byte. bit lo El de n umero (1-8) o vade un un rios bit a derecha de determina

contador

registro (1-63). El bit 7 conserva su valor y se propaga. El bit 0 pasa a C y X 31 87 0

- -C -X

ASR.W

count o Dn,Dn

6+2n(1/0)+

Igual que anterior con palabra 3116 15 0

- -C -X

ASR.L

count o Dn,Dn

6+2n(1/0)+

Igual que anterior con doble palabra 31 0

LSL dadr 2,4,6 9(1/1)+ X X X 0 X

- -C -X

Desplazamiento l ogico un bit a izquierda. El bit 0 queda a 0 y el 15 pasa a C y X. Es igual que el ASL, pero V siempre vale 0 C X 15
2,3

0 0

LSL.B

count o Dn,Dn

6+2n(1/0)+

Desplazamiento l ogico varios bit a izquierda de byte. El n umero de bits desplazado lo determina un contador (1-8) o un registro (1-63). Entran 0s por el 0 y el bit 7 pasa a X y C 31 87 0 C X

0

1. Microprocesador MC68000
Ciclos Nem onico LSL.W Operandos count o Dn,Dn Bytes 2 reloj 6+2n(1/0)+ Registro estado X X N X Z X V 0 C X

27

Operaci on realizada Igual que anterior con palabra 31 1615 C X

0

LSL.L

count o Dn,Dn

6+2n(1/0)+

Igual que anterior con doble palabra C X 31 0 0

LSR

dadr

2,4,6

9(1/1)+

Desplazamiento

L ogi-

co un bit a Derecha. El bit 15 pasa a valer 0 y el valor del 0 pasa a X y C 0LSR.B count o Dn,Dn 2 6+2n(1/0)+ X X X 0 X 15 0

- -C -X
bit a derecha

Desplazamiento l ogico varios de byte. El n umero de bits lo determina un contador (1-8) o un registro (1-63). Entran 0s al bit 7 y el bit 0 pasa a X y C 31 87 0

- -C 6 -X 0

LSR.W

count o Dn,Dn

6+2n(1/0)+

Igual que anterior, pero con palabra 3116 15 0

6 0
LSR.L count o Dn,Dn 2 6+2n(1/0)+ X X X 0 X

- -C -X

Igual que anterior, pero con doble palabra 031 0

- -C -X

28

Pr actica de EntradaSalida (20122013)


Ciclos Nem onico ROL Operandos dadr Bytes 2,4,6 reloj 9(1/1)+ Registro estado X N X Z X V 0 C X Operaci on realizada Rotaci on a al Izquierda de un bit. El bit 15 pasa al 0 y a C2,3 15 C  ROL.B count o Dn,Dn 2 6+2n(1/0)+ X X X 0 X 0

Rotaci on varios bit a izquierda de byte. El n umero de bits rotados lo determina un contador (1-8) o un registro (1-63). El bit 7 pasa al bit 0 y a C 31 87

  C ?

ROL.W

count o Dn,Dn

6+2n(1/0)+

Igual que anterior con palabra 31 1615

 C ?

ROL.L

count o Dn,Dn

6+2n(1/0)+

Igual que anterior con doble palabra C 31 0

ROR

dadr

2,4,6

9(1/1)+

Rotaci on de un bit a derecha. El bit 15 se carga con el bit 0 que pasa tambi en al C 15 0

ROR.B count o Dn,Dn 2 6+2n(1/0)+ X X X 0 X

- -C

Rotaci on de varios bit a derecha de byte. El n umero de bits lo determina un contador (1-8) o un registro (163). El bit 0 pasa bit 7 y a C 31 87 0

- -C 6

1. Microprocesador MC68000
Ciclos Nem onico ROR.W Operandos count o Dn,Dn Bytes 2 reloj 6+2n(1/0)+ Registro estado X X N X Z X V 0 C X

29

Operaci on realizada Igual que anterior, pero con palabra 3116 15 0

- -C

6
ROR.L count o Dn,Dn 2 6+2n(1/0)+ X X X 0 X Igual que anterior, pero con doble palabra 31 0

ROXL count o Dn,Dn 2 6+2n(1/0)+ X X X 0 X

- -C
a izquierda El bit 15

Rotaci on extensi on. X al 02,3 15 C 

de un bit empleando pasa al X y a C y el 0

X 6

ROXL.B

count o Dn,Dn

6+2n(1/0)+

Rotaci on varios bit a izquierda de byte empleando bit eXtensi on. El n umero de bits desplazado lo determina un contador (1-8) o un registro (1-63). El bit X pasa al bit 0 y el bit 7 pasa a X y a C 31 87 0   X 6 C ?

ROXL.W

count o Dn,Dn

6+2n(1/0)+

Igual que anterior, pero con palabra 31 1615 0

  ? C

 X 6

ROXL.L

count o Dn,Dn

6+2n(1/0)+

Igual que anterior, pero con doble palabra C 31 0

 X 6

30

Pr actica de EntradaSalida (20122013)


Ciclos Nem onico ROXR Operandos count o Dn,Dn Bytes 2 reloj 6+2n(1/0)+ Registro estado X X N X Z X V 0 C X Operaci on realizada Rotaci on de un bit a derecha empleando bit de extensi on. El bit 15 se carga con el bit X y el bit 0 pasa a X y C, y el bit 15 se carga con X 15 0

X
. ROXR.B count o Dn,Dn 2 6+2n(1/0)+ X X X 0 X

- -C

6
Rotaci on de varios bit a derecha de byte empleando bit de eXtensi on. El n umero de bits lo determina un contador (1-8) o un registro (1-63). El bit 0 pasa al bit X y a C, y el bit 7 se carga con X 31 87 0

- -C 6 X

ROXR.W

count o Dn,Dn

6+2n(1/0)+

Igual que anterior, pero con palabra 3116 15 X 0

- -C

ROXR.L

count o Dn,Dn

6+2n(1/0)+

Igual que anterior, pero con doble palabra 31 0

X

- -C

1. Microprocesador MC68000

31

1.6.6.

Manejo de bits

Ciclos Nem onico BTST Operandos bitl,Dn Dn,dDn Bytes 4 2 reloj 10(2/0) 6(1/0)

Registro estado X N Z X X V C Operaci on realizada Z Dn<bitl> Z dDn<Dn> Consulta el contenido de un bit de un registro

BTST

bitl,dadr Dn,dadr

4,6,8 2,4,6

8(2/0)+ 4(1/0)+

X X

Z [dadr<bitl>] Z [dadr<Dn>]1 Consulta el contenido de un bit de memoria

BSET

bitl,Dn Dn,dDn

4 2

12(2/0) 8(1/0)

X X

Z Dn<bitl>, Dn<bitl>1 Z dDn<Dn>, dDn<Dn>1 Consulta el contenido de un determinado bit de un registro y lo pone a 1

BSET

bitl,dadr Dn,dadr

4,6,8 2,4,6

13(2/1)+ 9(1/1)+

X X

Z [dadr<bitl>], [dadr<bitl>]1 Z [dadr<Dn>], [dadr<Dn>]11 Consulta el contenido de un bit de memoria y lo pone a 1

BCLR

bitl,Dn Dn,dDn

4 2

14(2/0) 8(1/0)

X X

Z Dn<bitl>, Dn<bitl>0 Z dDn<Dn>, dDn<Dn>0 Consulta el contenido de un determinado bit de un registro y lo pone a 0

BCLR

bitl,dadr Dn,dadr

4,6,8 2,4,6

13(2/1)+ 9(1/1)+

X X

Z [dadr<bitl>], [dadr<bitl>]0 Z [dadr<Dn>], [dadr<Dn>]01 Consulta el contenido de un bit de memoria y lo pone a 0

32
Ciclos Nem onico BCHG Operandos bitl,Dn Dn,dDn Bytes 4 2 reloj 12(2/0) 8(1/0)

Pr actica de EntradaSalida (20122013)


Registro estado X N Z X X V C Operaci on realizada Z Dn<bitl>, Dn<bitl>Dn<bitl> Z dDn<Dn>, dDn<Dn>dDn<Dn> Consulta el contenido de un bit de un registro y lo pone al valor contrario BCHG bitl,dadr Dn,dadr 4,6,8 2,4,6 13(2/1)+ 9(1/1)+ X X Z [dadr<bitl>], [dadr<bitl>][dadr<bitl>] Z [dadr<Dn>], [dadr<Dn>][dadr<Dn>]1 Consulta el contenido de un bit de memoria y lo pone al valor contrario

1.6.7.

Control del programa


Ciclos Registro estado X N Z V C Operaci on realizada P C label Salto incondicional corto relativo a PC Operandos label Bytes 2,4 reloj 10(2/0)

Nem onico BRA

JMP

jadr

2,4,6

4(1/0)+

P C jadr Salto incondicional absoluto

BSR

label

2,4

10,8(1/0) 10,12(2/0)

A7A74, [A7]P C P C label Salto subrutina corto relativo a PC

JSR

jadr

2,4,6

14(1/2)+

A7A74, [A7]P C P C jadr Salto subrutina absoluto

RTS

16(4/0)

P C [A7], A7A7+4 Retorno subrutina

RTR

20(5/0)

SR<04>[A7<04>], A7A7+2 P C [A7], A7A7+4 Restaura estado y retorna subrutina

1. Microprocesador MC68000
Ciclos Nem onico RTE Operandos Bytes 2 reloj 20(5/0) Registro estado X X N X Z X V X C X

33

Operaci on realizada SR[A7], A7A7+2 P C [A7], A7A7+4 Retorno de excepci on

Bcc

label

2,4

10,8(1/0) 10,12(2/0)

P C label, Si condici on Salto condicional corto relativo a PC Si cumple condici on

DBcc

Dn,label

12,10(2/0), 14(3/0)

nada. No cumple condici on: Dn<015>Dn<015>1 Si Dn<015>=1 siguiente instrucci on P C label Salto condicional corto relativo a PC, con decremento CHK data16,Dn 4 49(6/3), 12(2/0) X U U U Si Dn<015><0 Dn<015>>data16 entonces CHK Dn,dDn 2 45(5/3) 8(1/0) sadr,dDn 2,4,6 45(5/3) 8(1/0) X U U U X U U U Si dDn<015><0 dDn<015>>Dn entonces P C vector CHK Si dDn<015><0 dDn<015>>[sadr] entonces CHK Comprobaci on de rangos TRAP vector 2 37(4/3) A7A74, [A7]P C, A7A72, [A7]SR, P C vector Desv o al S.O. TRAPV 2 37(5/3) Si V = 1 TRAP vector TRAPV Comprobaci on overflow bit P C vector P C vector

34

Pr actica de EntradaSalida (20122013)

1.6.8.

Control del procesador


Ciclos Registro estado X X X X X N X X X X Z X X X X V X X X X C X X X X Operaci on realizada SR<04>Dn<04> Actualiza estado SR<04>[sadr<04>]2,3 SR<04>data8<04> SRDn<015> Ejecutable en supervisor Operandos Dn,CCR sadr,CCR data8,CCR Dn,SR Bytes 2 2,4,6 4 2 reloj 12(2/0) 12(2/0)+ 16(3/0) 12(2/0)

Nem onico MOVE MOVE MOVE MOVE

MOVE

sadr,SR

2,4,6

12(2/0)+

SR[sadr]2,3 Ejecutable en supervisor

MOVE

data16,SR

16(3/0)

SRdata16<08> Ejecutable en supervisor

MOVE MOVE ANDI.B

SR,Dn SR,dadr data8,SR

2 2,4,6 4

6(1/0) 9(1/1)+ 20(3/0) X X X X X

Dn<015>SR [dadr]SR2,3 SR<07>SR<07> data8 AND inmediato a SR

ANDI.W

data16,SR

20(3/0)

SRSRdata16 Ejecutable en supervisor

EORI.B

data8,SR

20(3/0)

SR<07>SR<07> data8 EOR inmediato a SR

EORI.W

data16,SR

20(3/0)

SRSRdata16 Ejecutable en supervisor

ORI.B

data8,SR

20(3/0)

SR<07>SR<07> data8 OR inmediato a SR

ORI.W

data16,SR

20(3/0)

SRSRdata16 Ejecutable en supervisor

NOP RESET STOP data16

2 2 4

4(1/0) 132(1/0) 8(2/0) X X X X X

No hace nada Activa RESET. Ejecutable en supervisor SRdata16 Bloqueado en espera de interrupci on. Ejecutable en supervisor

Cap tulo 2

Controlador de l neas serie MC68681


El MC68681 es un m odulo de entrada/salida perteneciente a la familia M68000 de Motorola. Su funci on es controlar dos l neas series con capacidad de transmisi on y recepci on as ncrona, a este tipo de dispositivo se le conoce con el nombre de DUART (Dual Universal Asynchronous Receiver/Transmiter). El calicativo Universal le viene dado porque admite una gran variedad de formatos de datos y modos de operaci on. El modo de operaci on y formato de datos de cada l nea se programa independientemente. Adem as, la MC68681 DUART tiene un mecanismo de interrupciones bastante vers atil, ya que puede proporcionar un vector durante el ciclo de reconocimiento de interrupci on y puede solicitar interrupci on por 8 sucesos distintos enmascarables individualmente. A pesar de que un dispositivo de estas caracter sticas puede parecer complejo, las UARTs son uno de los controladores de dispositivos m as sencillos. Adem as, hay que tener en cuenta que el dispositivo simulado no realiza ning un tipo de control de errores, ni interbloqueo hardware para el control de ujo de las l neas y no tiene simulado el temporizador programable para la generaci on de nuevas velocidades de transmisi on y recepci on. Por lo tanto, la descripci on que se hace en este cap tulo es incompleta y se reere solo a las funciones que realiza la DUART MC68681 simulada que proporciona el simulador BSVC. As , solo se describen los registros y bits de registros que proporcionan la funcionalidad simulada.

2.1.

Transmisi on as ncrona de caracteres por una l nea serie

En el modo de transmisi on as ncrono, el env o de un car acter constituye una transferencia elemental. El car acter se codica en un formato de codicaci on de caracteres (habitualmente c odigo ASCII) y se incluye en una trama cuyo formato se muestra en la gura 2.1. Como se puede observar en la gura 2.1, el estado inactivo de la l nea es a 1. Cada trama comienza con un bit de inicio (Start), que naturalmente es un 0. A continuaci on se transmiten los bits de datos que pueden ser desde 5 hasta 8, en la gura se utilizan 8. A continuaci on se puede incluir un bit de paridad, par o impar. Este bit, que es opcional, sirve para detectar errores en la transmisi on y no est a disponible en la MC68681 simulada, por lo que se transmitir a sin paridad. Por u ltimo, se incluye un n umero de bits de parada (Stop) a 1 que sirven para que el receptor se recupere antes del inicio de una nueva trama. El n umero

36
Bits de datos Inicio

Pr actica de EntradaSalida (20122013)

Paridad

Parada

Figura 2.1: Transferencia de un car acter en modo as ncrono con 8 bits de datos

de bits de parada es variable (desde 0,5 a 2) y en la MC68681 simulada no est an disponibles ya que no se necesitan al no haber una l nea serie f sica. El tiempo de transmisi on o recepci on de una trama depende de la velocidad a la que se utilice la l nea y del n umero de bits que contenga la trama. As , una trama como la de la gura que se compone de 12 bits y una velocidad de 9600 bits/seg, tarda en transmitirse 1,25 milisegundos pudi endose alcanzar una velocidad de transferencia m axima de 800 bytes/seg. La velocidad de transmisi on se selecciona de acuerdo a la calidad y longitud del cable y a la norma utilizada, por ejemplo RS-232, RS-422, etc.

2.2.

Caracter sticas de la DUART MC68681

El controlador de l neas serie simulado tiene las siguientes caracter sticas: Dos l neas serie fullduplex (posibilidad de recepci on y transmisi on simult anea) independientes con formato de recepci on/transmisi on as ncrono. Cada l nea se puede conectar a un proceso Unix. 18 velocidades distintas para cada transmisor y receptor, desde 50 hasta 38400 baudios. Formato de datos programable desde 5 hasta 8 bits por car acter. Modo de canal programable: Normal (fullduplex). Eco autom atico. Sistema de interrupciones vers atil: Posibilidad de petici on de interrupci on por 4 condiciones distintas enmascarables individualmente. Proporciona el vector de interrupci on almacenado en el registro correspondiente durante el ciclo de reconocimiento de interrupci on.

2.3.

Descripci on de los registros

El modo de operaci on de la DUART se programa a trav es de sus registros de control. Asimismo, se pueden leer sus registros de estado para conocer el estado de operaci on de

2. Controlador de l neas serie MC68681

37

la unidad. La tabla 2.1 muestra los registros de la DUART junto con su acr onimo de su denominaci on en ingl es, la direcci on que tienen asignada en el computador simulado de la pr actica y si son espec cos de la l nea serie A, de la B o son comunes.

Direcci on EFFC01 EFFC03 EFFC05 EFFC07 EFFC09 EFFC0B EFFC0D EFFC0F EFFC11 EFFC13 EFFC15 EFFC17 EFFC19 EFFC1B EFFC1D EFFC1F

Registro en lectura de modo A (MR1A, MR2A) de estado A (SRA) Sin acceso buer de recepci on A (RBA) Sin implementar de estado de interrupci on (ISR) Sin implementar Sin implementar de modo B (MR1B, MR2B) de estado B (SRB) Sin acceso buer de recepci on B (RBB) del vector de interrupci on (IVR) Sin implementar Sin implementar Sin implementar

Registro en escritura de modo A (MR1A, MR2A) de selecci on de reloj A (CSRA) de control A (CRA) buer de transmisi on A (TBA) de control auxiliar (ACR) de m ascara de interrupci on (IMR) Sin implementar Sin implementar de modo B (MR1B, MR2B) de selecci on de reloj B (CSRB) de control B (CRB) buer de transmisi on B (TBB) del vector de interrupci on (IVR) Sin implementar Sin implementar Sin implementar

L nea A A A A Ambas Ambas Ambas Ambas B B B B Ambas Ambas Ambas Ambas

Tabla 2.1: Registros de la DUART MC68681

Todos los registros son de 8 bits y el ancho del bus de datos de esta unidad es tambi en de 8 bits. Por lo tanto, se deber an usar instrucciones de tama no de operando de 8 bits para leer y escribir en estos registros. Como es habitual en los controladores de perif ericos, en muchos casos 2 registros distintos comparten el mismo puerto, de forma que cuando se escribe se accede a un registro y cuando se lee se accede a otro. Adem as, los 2 registros de modo de cada l nea comparten la misma direcci on. De forma que, en el primer acceso se direcciona el registro de modo 1 y en el segundo el registro de modo 2. Todos los accesos posteriores direccionar an el registro de modo 2, a menos que se reinicialice el puntero interno que los discrimina. Este puntero se reinicializa al realizar el RESET del sistema o bien ordenando una reinicializaci on del puntero en el registro de control correspondiente. A continuaci on se describen cada uno de los registros de la DUART MC68681 simulada. En muchos casos aparece la notaci on N/A que indica que la funcionalidad proporcionada por el bit correspondiente del registro no est a disponible en la unidad simulada

38

Pr actica de EntradaSalida (20122013)

2.3.1.

Registros de modo 1 (MR1A y MR1B)


Selecci on RxIRQ Bit 6 0 = RxRDY 1 = FFULL Bits por car acter Bit 1 Bit 0 00 = 5 01 = 6 10 = 7 11 = 8

N/A Bit 7

N/A Bit 5

N/A Bit 4 Bit 3

N/A Bit 2

A trav es de este registro se le ordena a la DUART el n umero de bits por car acter de la l nea correspondiente y cuando ha de solicitar una interrupci on en recepci on. En este u ltimo caso existen dos posibilidades: RxRDY (Receiver ReaDY) Se solicita una interrupci on cada vez que llega un car acter. FFULL (Fifo FULL) Cada l nea posee 3 registros de recepci on organizados como una pila FIFO (FirstInputFirstOutput), lo que permite recibir 3 caracteres consecutivos. Esta opci on supone por lo tanto que se solicite la interrupci on cuando la pila se llene, es decir cada 3 caracteres.

2.3.2.

Registros de modo 2 (MR2A y MR2B)


Modo de la l nea Bit 7 Bit 6 00 = Normal 01 = Eco 10 = N/A 11 = N/A

N/A Bit 5

N/A Bit 4

N/A Bit 3 Bit 2 Bit 1 Bit 0

A trav es de este registro se le ordena a la DUART el modo de operaci on de la l nea correspondiente. En el modo eco, la DUART retransmite autom aticamente cada car acter que recibe.

2.3.3.

Registros de estado (SRA y SRB)


N/A Bit 7 N/A Bit 6 N/A Bit 5 N/A Bit 4 TxEMT Bit 3 0 = No 1 = Yes TXRDY Bit 2 0 = No 1 = Yes FFULL Bit 1 0 = No 1 = Yes RxRDY Bit 0 0 = No 1 = Yes

En este registro se consulta el estado de la l nea correspondiente. Los sucesos que registra son: TxEMT (Transmitter EMpTy) Si est a habilitada la transmisi on por la l nea correspondiente, se pone a 1 cuando se puede cargar un nuevo car acter en el buer de transmisi on (TBA o TBB) y el car acter anterior se ha terminado de enviar.

2. Controlador de l neas serie MC68681

39

TXRDY (Transmitter ReaDY) Si est a habilitada la transmisi on por la l nea correspondiente, se pone a 1 cuando se puede cargar un nuevo car acter en el buer de transmisi on (TBA o TBB), pero puede que a un no se haya completado el env o del car acter anterior. FFULL (Fifo FULL) Hay 3 caracteres en la pila FIFO de registros de recepci on. RxRDY (Receiver ReaDY) Se ha recibido un car acter y est a en la pila FIFO de registros de recepci on.

2.3.4.

Registros de selecci on de reloj (CSRA y CSRB)


Selecci on de velocidad de transmisi on Bit 3 Bit 2 Bit 1 Bit 0 Conjunto 1 Conjunto 2 ACR Bit 7 = 0 ACR Bit 7 = 1 0000 50 75 0001 110 110 0010 134.5 134.5 0011 200 150 0100 300 300 0101 600 600 0110 1200 1200 0111 1050 2000 1000 2400 2400 1001 4800 4800 1010 7200 1800 1011 9600 9600 1100 38400 19200 1101 N/A N/A 1110 N/A N/A 1111 N/A N/A

Selecci on de velocidad de recepci on Bit 7 Bit 6 Bit 5 Bit 4 Conjunto 1 Conjunto 2 ACR Bit 7 = 0 ACR Bit 7 = 1 0000 50 75 0001 110 110 0010 134.5 134.5 0011 200 150 0100 300 300 0101 600 600 0110 1200 1200 0111 1050 2000 1000 2400 2400 1001 4800 4800 1010 7200 1800 1011 9600 9600 1100 38400 19200 1101 N/A N/A 1110 N/A N/A 1111 N/A N/A

Mediante este registro en combinaci on con el bit 7 del registro auxiliar de control (ACR), se elige la velocidad de transmisi on y recepci on de la l nea correspondiente.

2.3.5.

Registros de control (CRA y CRB)


N/A Bit 7 000 001 010 011 100 101 110 111 = = = = = = = = Miscel aneos Bit 6 Bit 5 Bit 4 Sin efecto Reinicializar puntero a MR1 Reinicializar recepci on Reinicializar transmisi on Reinicializar estado de error N/A N/A N/A Transmisi on Bit 3 Bit 2 00 = Sin efecto 01 = Habilitar 10 = Inhibir 11 = N/A Recepci on Bit 1 Bit 0 00 = Sin efecto 01 = Habilitar 10 = Inhibir 11 = N/A

40

Pr actica de EntradaSalida (20122013)

Mediante este registro de control se habilita o inhibe la transmisi on y/o recepci on en la l nea correspondiente. Adem as, se puede reinicializar el puntero para poder acceder al registro de modo 1 (MR1A o MR1B), la recepci on, la transmisi on y los estados de error de la l nea correspondiente.

2.3.6.

Registros del buer de recepci on (RBA y RBB)

En cada uno de estos puertos hay 3 registros organizados como una pila FIFO, donde se almacenan los caracteres que se reciben por la l nea correspondiente. De modo que, si se ha recibido m as de un car acter desde la u ltima vez que se ley o, estos se pueden leer en accesos consecutivos.

2.3.7.

Registros del buer de transmisi on (TBA y TBB)

En este registro se escribe el car acter que se va a enviar por la l nea correspondiente.

2.3.8.

Registro de control auxiliar (ACR)


Selecci on del conjunto de velocidades Bit 7 0 = Conjunto 1 1 = Conjunto 2

N/A Bit 6 Bit 5 Bit 4

N/A Bit 3

N/A Bit 2

N/A Bit 1

N/A Bit 0

Este registro sirve para seleccionar uno de los dos conjuntos de velocidades de recepci on y transmisi on. La velocidad elegida dentro del conjunto se especica a trav es de los registros de selecci on de reloj correspondiente (CSRA o CSRB).

2.3.9.

Registro de estado de interrupci on (ISR)


RxRDYB FFULLB Bit 5 0 = No 1 = Yes RxRDYA FFULLA Bit 1 0 = No 1 = Yes

N/A Bit 7

N/A Bit 6

TxRDYB Bit 4 0 = No 1 = Yes

N/A Bit 3

N/A Bit 2

TxRDYA Bit 0 0 = No 1 = Yes

Este registro proporciona el estado de todas las fuentes posibles de interrupci on. Los contenidos de este registro se enmascaran con los contenidos del registro de m ascara de interrupci on (IMR). De modo que, se activar a la petici on de interrupci on si y solo si existe alg un bit de este registro a 1 y el bit correspondiente del registro de m ascara de interrupci on tambi en est a a 1. Existen dos fuentes posibles de interrupci on para cada l nea: RxRDY o FFULL (Receiver ReaDY o Fifo FULL) Se colocar a a 1 si se ha recibido un car acter o la pila de registros FIFO este llena, seg un lo elegido mediante el bit 6 del registro de modo 1 correspondiente (MR1A o MR1B).

2. Controlador de l neas serie MC68681

41

TxRDY (Transmiter ReaDY) Es un duplicado del bit TxRDY del registro de estado correspondiente (SRA o SRB). Por lo tanto, se pondr a a 1 siempre que el registro buer de transmisi on est e vac o.

2.3.10.

Registro de m ascara de interrupci on (IMR)


RxRDYB FFULLB Bit 5 0 = Inhibida 1 = Habilitada RxRDYA FFULLA Bit 1 0 = Inhibida 1 = Habilitada

N/A Bit 7 Bit 6

TxRDYB Bit 4 0 = Inhibida 1 = Habilitada

N/A Bit 3 Bit 2

TxRDYA Bit 0 0 = Inhibida 1 = Habilitada

Como se ha dicho, este registro se usa para habilitar o inhibir la petici on de interrupci on de cada una de las 4 fuentes posibles. En particular, si alguno de los bit TxRDYA y TxRDYB est a a 1 se solicitar a una interrupci on siempre que se est e en condiciones de transmitir un nuevo car acter. Es decir, tras mandar el u ltimo car acter de un paquete se deber a colocar a 0. Si no, hasta que no se cargue un nuevo car acter en el registro del buer de transmisi on correspondiente (TBA o TBB) se solicitar an interrupciones de forma ininterrumpida, valga la redundancia.

2.3.11.

Registro del vector de interrupci on (IVR)

En este registro se almacenar a el vector de interrupci on que debe proporcionar el controlador MC68681 durante el ciclo de bus de reconocimiento de interrupci on. Por lo tanto, la direcci on de la rutina de tratamiento se deber a almacenar a partir de la posici on de memoria resultante de multiplicar por 4 el contenido de este registro (v ease secci on 1.5.3). Tras un reset contiene el vector 0F, que seg un la tabla 1.5 es el correspondiente a vector de interrupci on no inicializado.

42

Pr actica de EntradaSalida (20122013)

Cap tulo 3

Programa ensamblador 68kasm


El programa que se describe es un ensamblador b asico de dos pasadas para los microprocesadores MC68000 y MC68010. Este ensamblador traduce el juego completo de instrucciones de ambos procesadores a la vez que proporciona un juego de directivas para el ensamblador o pseudoinstrucciones. La salida que genera se compone de un chero con el listado de ensamblaje y un otro que contiene el c odigo objeto en el formato S-record de Motorola. Paul McKee escribi o la versi on 1 de este programa en 1986, Mark Hollomon la versi on 2.0 y Bradford W. Mott la versi on 2.1.

3.1.

Llamada al programa ensamblador

La sintaxis para invocar al programa ensamblador 68kasm es la siguiente: 68kasm [-clna] <fichero fuente> Options: -c -l -n -a Show full constant expansions for DC directives Produce listing file (infile.lis) Produce NO object file (infile.h68) Produce long word absolute addresses only (infile.h68)

La sintaxis recomendada es: 68kasm -l practica.s Lo que producir a un chero con el listado de ensamblaje llamado practica.lis y, si no ha habido errores, un chero con el c odigo objeto llamado practica.h68. Si no ha habido errores el programa mostrar a el mensaje siguiente: 68000 Assembler by PGM No errors detected No warnings generated Se recomienda utilizar la opci on -l ya que, por un lado permitir a estudiar los posibles errores en el chero de listado y, adem as, permitir a al simulador BSVC mostrar el c odigo de programa en la ventana correspondiente. Si no se utiliza esta opci on el simulador no mostrar a el c odigo ensamblador del programa y no se podr an colocar puntos de ruptura con una simple pulsaci on del rat on.

44

Pr actica de EntradaSalida (20122013)

3.2.

Formato del c odigo fuente

La entrada al programa ensamblador es un chero que contiene instrucciones, pseudoinstrucciones y comentarios. Cada l nea puede tener hasta un m aximo de 256 caracteres y el programa no distingue entre may usculas y min usculas. Cada l nea de c odigo fuente puede tener los siguientes campos: ETIQUETA OPERACION OPERANDO,, COMENTARIO

Por ejemplo: LOOP: MOVE.L (A0)+,(A1)+ *Ejemplo

Los campos se pueden separar por cualquier combinaci on de blancos y tabuladores. Sin embargo, no se permite el uso de blancos y tabuladores dentro de un campo, a excepci on del campo de comentario y en tiras de caracteres entre comillas.

3.2.1.

Campo de etiquetas

El campo de etiquetas se distingue, bien porque comienza en la primera columna o bien porque se termina con una coma, que no forma parte de la etiqueta sino que solo la naliza. Una etiqueta puede tener cualquier longitud, pero solo se tienen en cuenta los ocho primeros caracteres. Se recomienda nalizar las etiquetas con dos puntos para mejorar la legibilidad del c odigo.

3.2.2.

Campo de operaci on

Este campo espec ca la instrucci on que se va a ensamblar o la pseudoinstrucci on para el ensamblador. Si la operaci on lo permite, se puede a nadir el sujo que indica el tama no de la operaci on (.B, .W, .L o .S) para indicar byte, palabra, palabra larga o desplazamiento corto. Este campo no puede empezar en la primera columna.

3.2.3.

Campo de operandos

Los operandos se separan de la operaci on por espacios o tabuladores. Si la operaci on tiene m as de un operando, estos se deben separar por comas. Los operandos no pueden contener espacios a menos que se entrecomillen. Adem as, no se pueden incluir espacios antes o detr as de la coma que separa dos operandos.

3.2.4.

Campo de comentario

Un comentario es cualquier combinaci on de caracteres que est e en la misma l nea tras el campo de operandos. Adem as, una l nea que comience por un * se considera como l nea de comentario. Se recomienda comenzar todos los comentarios con un asterisco para mejorar la legibilidad del c odigo.

3. Programa ensamblador 68kasm

45

3.2.5.

S mbolos

Los s mbolos aparecen en el c odigo como etiquetas, constantes u operandos. El primer car acter de un s mbolo debe de ser una letra o un punto. Los restantes pueden ser: letras, $, . o _. Pueden ser de cualquier longitud aunque solo se distinguen por sus 8 primeros caracteres. Se recuerda que el programa ensamblador no distingue entre may usculas y min usculas.

3.2.6.

Expresiones

Se pueden utilizar expresiones en lugar de n umeros. Una expresi on consiste en uno o m as operandos (n umeros o s mbolos) y operadores de uno o dos operandos. Los c alculos se realizan con 32 bits y no se obtiene ning un resultado en caso de overow. Aunque, la divisi on por cero produce un error. Operandos de expresiones Un operando de una expresi on puede ser un s mbolo o una constante de cualquiera de los tipos siguientes: N umeros decimales Est an constituidos por una secuencia de d gitos decimales. N umeros hexadecimales Est an constituidos por una secuencia de d gitos hexadecimales precedidos por $. N umeros binarios Est an constituidos por una secuencia de d gitos binarios precedidos por %. N umeros octales Est an constituidos por una secuencia de d gitos octales precedidos por @. Constantes ASCII Est an constituidas por una tira de caracteres ASCII, hasta un m aximo de 4, entrecomilladas por comillas simples (). Si se quiere introducir una comilla simple en la tira hay que colocar dos consecutivas. Operadores de expresiones Los operadores se muestran en la tabla 3.1 en orden de precedencia decreciente. Los de igual precedencia se eval uan de izquierda a derecha (a excepci on de los del grupo 2).

3.2.7.

Especicaci on de los modos de direccionamiento

La tabla 3.2 detalla como se especican los modos de direccionamientos en el programa ensamblador.

3.3.

Instrucciones de bifurcaci on

Las instrucciones Bcc, BRA y BSR son las u nicas a las que se les puede a nadir el sujo .S. Este sujo obliga a ensamblar estas instrucciones con direcciones de salto de 1 byte (rango -128..127). Si se usa y la direcci on de destino cae fuera de rango se produce un error. Si se a nade el sujo .L, se usa una palabra para la direcci on de salto puede estar en el rango

46

Pr actica de EntradaSalida (20122013)

Precedencia 1 2 3

Operador () ~ << >>

4 5

& ! * / \ + -

Descripci on Par entesis Negaci on (complementa a dos) NOT (complementa a uno) Desplaza a la izquierda (x<<y signica que x se desplaza y bits y se introducen ceros) Desplaza a la derecha (x>>y signica que x se desplaza y bits y se introducen ceros) AND OR Multiplicaci on Divisi on entera M odulo Suma Resta Tabla 3.1: Operadores de expresiones

-32768..32767. Si no se usa ning un sujo el ensamblador intenta utilizar un salto corto .S, pero si la direcci on destino no est a en el rango correspondiente o no se conoce tras la primera pasada, utilizar a un salto largo .L.

3.4.
3.4.1.

Pseudoinstrucciones
Set origin ORG

Especica en qu e posiciones de memoria se ubicar an las variables o el c odigo que aparece a continuaci on. El formato de una l nea con esta pseudoinstrucci on es: <ETIQUETA> ORG <EXPRESION>

La expresi on no debe contener referencias adelantadas ya que su valor se debe conocer durante la primera pasada en la l nea donde ORG aparece. La etiqueta es opcional y si se usa, el s mbolo adquiere el valor de la direcci on <EXPRESION>.

3.4.2.

Equate EQU

Se usa para denir s mbolos cuyo valor permanece constante. El formato de una l nea con esta pseudoinstrucci on es: <ETIQUETA> EQU <EXPRESION>

La expresi on no debe contener referencias adelantadas ya que su valor se debe conocer durante la primera pasada en la l nea donde ORG aparece. La etiqueta es obligatoria ya que se trata del s mbolo que se dene y adquiere el valor de <EXPRESION>.

3. Programa ensamblador 68kasm

47

Modo Directo a registro de datos Directo a registro de direcci on Absoluto (el tama no lo elige el ensamblador) Relativo a PC Relativo a PC con desplazamiento m ultiple Indirecto a registro Indirecto a registro con postincremento Indirecto a registro con predecremento Relativo a registro base Relativo a registro base con desplazamiento m ultiple Inmediato Impl cito Leyenda: Dn An Xn

Sintaxis Dn An < ex > < ex16 >(PC) < ex8 >(PC,Xn.s) (An) (An)+ -(An) < ex16 >(An) < ex8 >(An,Xn.s) #< ex > SR,USP,PC,VBR,SFC,DFC

= Registro de datos = Registro de direcciones (se puede usar SP por A7) = Registro de datos o direcciones usado como ndice en los desplazamientos m ultiples .s = C odigo de tama no del registro ndice (.W o .L, .W es la opci on por defecto) < ex8 > = Expresi on que se calcula a 8 bits, si no se pone se asume 0 < ex16 >= Expresi on que se calcula a 16 bits, si no se pone se asume 0 < ex > = Cualquier expresi on SR = Registro de estado PC = Registro contador de programa USP = Registro puntero de pila de usuario SSP = Registro puntero de pila de supervisor VBR = Registro base de la tabla de vectores (MC68010) SFC = Registro fuente de c odigo de funci on (MC68010) DFC = Registro destino de c odigo de funci on (MC68010) Tabla 3.2: Especicaci on de los modos de direccionamiento

3.4.3.

Dene constant DC

Esta pseudoinstrucci on es equivalente a la DATA del est andar IEEE694. Se usa para almacenar tiras de caracteres y listas de constantes en memoria. El formato de una l nea con esta pseudoinstrucci on es: <ETIQUETA> DC.<TAMA~ NO> <ITEM>,<ITEM>,...

Al s mbolo de la etiqueta se le asigna la direcci on de memoria de comienzo de la lista de datos. El c odigo de <TAMA~ NO> especica si cada <ITEM> tiene el tama no de 1 byte (.B), 1 palabra (.W) o 1 palabra larga (.L). La opci on por defecto es de palabra. Ejemplo: TEXTO DC.B DC Ejemplo,$0D,$0A,0

48

Pr actica de EntradaSalida (20122013) Como consecuencia a partir de la direcci on de memoria TEXTO se almacenar a:

44 43 20 45 6A 65 6D 70 6C 6F 0D 0A 00

3.4.4.

Dene storage DS

Esta pseudoinstrucci on es equivalente a la RES del est andar IEEE694. Se usa para generar un bloque de bytes, palabras o palabras largas sin inicializar. El formato de una l nea con esta pseudoinstrucci on es: <ETIQUETA> DS.<TAMA~ NO> <LONGITUD>

3.4.5.

Set symbol SET

Es similar a la anterior, pero se usa para s mbolos que se pueden redenir usando otra pseudoinstrucci on SET (pero no usando EQU o REG). El formato de una l nea con esta pseudoinstrucci on es: <ETIQUETA> SET <EXPRESION>

3.4.6.

Dene register set REG

Se usa para denir un conjunto de registros que se van a usar en una instrucci on MOVEM. El formato de una l nea con esta pseudoinstrucci on es: <ETIQUETA> REG <EXPRESION DE REGISTROS>

La expresi on de registros es de la forma: RI/RI/RI... Por ejemplo: CONTEXTO equivale a: MOVEM D0/D3-D7/A1-A5/A6,-(A7) REG MOVEM D0/D3-D7/A1-A5/A6 CONTEXTO,-(A7)

3.4.7.

Dene constant block DCB

Se usa para generar un bloque de bytes, palabras o palabras largas que se inicializan al mismo valor. El formato de una l nea con esta pseudoinstrucci on es: <ETIQUETA> DCB.<TAMA~ NO> <LONGITUD>,<VALOR>,...

3. Programa ensamblador 68kasm

49

3.5.

Formato del listado ensamblador

El ensamblador produce un listado del c odigo fuente junto con su c odigo objeto si se le invoca con la opci on -l. El formato de una l nea de este chero es: 0000102E 22D8 200 LOOP MOVE.L (A0)+,(A1)+ Sample

La primera columna muestra la direcci on de memoria correspondiente. La segunda columna el c odigo de operaci on correspondiente a la instrucci on. La tercera columna la l nea correspondiente del chero de listado. Las columnas posteriores contienen los campos de la l nea correspondiente del c odigo fuente. En caso de que se presente alg un error o aviso, este se muestra en la l nea siguiente. Al nal del chero se imprime el n umero total de errores y avisos.

3.6.

Ejemplos

En el directorio /usr/local/datsi/bsvc/samples/m68000 existen dos programas ejemplo que se distribuyen con el simulador. Los cheros fuentes se llaman MatrixMultiply.s y example.s. Tambi en se pueden encontrar en ese directorio los listados de ensamblaje correspondientes, cuya extensi on es .lis.

50

Pr actica de EntradaSalida (20122013)

Cap tulo 4

Simulador BSVC
BSVC es una plataforma para la simulaci on de procesadores, memoria y controladores de perif ericos, desarrollada en C++ y Tcl/Tk. BSVC fue desarrollado por Bradford W. Mott en la Universidad del Estado de Carolina del Norte para la realizaci on de pr acticas de sistemas de entrada/salida y constituy o su proyecto n de carrera1 . Actualmente, BSVC simula el microprocesador MC68000, el controlador de l neas series DUART MC68681 y memoria RAM. Por lo tanto, permite construir computadores virtuales con procesador, memoria y unidades perif ericas. BSVC se compila y ejecuta sobre sistemas operativos Unix, con compilador de C++ gcc 2.7.2 e interfaz gr aco Tcl 7.5 y Tk 4.1. Existe una versi on para Windows95, pero no incorpora el simulador de la DUART MC68681. En este cap tulo se detalla la funcionalidad de BSVC necesaria para la realizaci on de la pr actica. El manual completo de este simulador se encuentra en el directorio /usr/local/datsi/bsvc/doc/Manual/html/ en formato hipertexto HTML o en /usr/local/datsi/bsvc/doc/Manual/ps en formato PostScript.

4.1.

Carga de computador virtual

Para ejecutar el simulador simplemente hay que ordenar bsvc. A continuaci on aparece el interfaz de usuario del simulador que se muestra en la gura 4.1. Si se pulsa sobre el men u File, aparece una persiana con tres opciones activas: New Setup Esta opci on permite crear un computador virtual. Open Setup Esta opci on permite cargar un computador virtual previamente creado. Quit Esta opci on permite salir del simulador. Se debe pulsar la opci on Open Setup para cargar el computador virtual sobre el que se va a realizar la pr actica. Al pulsarla aparece una nueva ventana con un contenido similar a la de la gura 4.2. El chero que contiene el computador de la pr actica se llama practica.setup y est a en /usr/local/datsi/bsvc/samples/m68000. Este computador consta de: Un microprocesador MC68000.
1

Senior design project

52

Pr actica de EntradaSalida (20122013)

Figura 4.1: Ventana inicial del simulador BSVC

Figura 4.2: Ventana de b usqueda de cheros

Un m odulo de memoria RAM de 32 Kbytes situado a partir de la direcci on 0. Una DUART MC68681 situada a partir de la direcci on EFFC00, conectada a la l nea de petici on de interruci on de nivel 4 y cuyas dos l neas series est an conectadas a dos terminales alfanum ericos que a su vez se simulan con dos ventanas. Al pulsar dos veces consecutivas sobre el se carga la conguraci on de dicho computador. La ventana inicial cambia de aspecto y se muestra la ventana de manejo del simulador (gura 4.3). Adem as aparecen dos ventanas con las etiquetas MC68681 L nea A y MC68681 L nea B, que est an conectados a las l neas correspondientes como si de terminales alfanum ericos se tratase. Existe la posibilidad de cargar el chero de conguraci on del computador (practica.setup) desde la l nea de comandos: bsvc /usr/local/datsi/bsvc/samples/m68000/practica.setup

4. Simulador BSVC

53

Figura 4.3: Ventana del simulador

4.2.

Carga de un programa objeto

Ahora que se dispone de un computador, se puede proceder a cargar un programa en la memoria. Pulsando en la opci on File aparece la persiana anterior pero con dos nuevas opciones activas: Load Program Esta opci on permite cargar un programa en la memoria del computador. Al pulsarla aparece una ventana como la de la gura 4.2. Existen programas ejemplo en /usr/local/datsi/bsvc/samples/m68000, si se desea cargar alguno hay que cargar el programa objeto de extensi on .h68. Para familiarizarse cargue example.h68 pulsando dos veces consecutivas sobre el. Save Setup Esta opci on permite salvar un computador virtual.

4.3.

Men us de la ventana de manejo del simulador

En la parte superior derecha de esta ventana (gura 4.3), existen tres men us: File Es id entica a su hom onima correspondiente a la ventana inicial y sirve para para cargar, crear y salvar computadores virtuales, as como para cargar programas y salir del simulador. Edit Sirve para ver y modicar el computador virtual que se ha cargado. Window Sirve para generar dos nuevas ventanas. Una muestra el listado de ensamblaje del programa cargado, que contiene el c odigo fuente. La otra permite ver y alterar el contenido del mapa de direcciones.

54

Pr actica de EntradaSalida (20122013)

Registers La columna izquierda de esta ventana muestra los registros del microprocesador MC68000. En su parte superior existe un men u etiquetado Registers que despliega dos opciones: Alter Permite modicar el contenido de un registro. Para ello se selecciona el registro en cuesti on y a continuaci on esta opci on. El mismo efecto se consigue pulsando dos veces consecutivas sobre el registro. Clear All Pone a 0 todos los registros. Trace La columna de la derecha es una zona de presentaci on de la traza de ejecuci on del programa. El men u superior etiquetado Trace permite seleccionar el tipo de informaci on que se muestra y salvar la traza a chero. Por defecto, se muestra la instrucci on donde se ha detenido la ejecuci on y los posibles errores.

4.4.

Botones de la ventana de manejo del simulador

En la parte inferior derecha, bajo la ventana de traza existen 4 botones: Breakpoints Permite ver, a nadir y quitar puntos de ruptura introduciendo una direcci on de memoria. Sin embargo, para a nadir un punto de ruptura basta con pulsar dos veces consecutivas sobre la instrucci on correspondiente, la l nea de c odigo correspondiente cambiar a al color rojo. Del mismo modo, para quitar un punto de ruptura se pulsa dos veces sobre la l nea correspondiente. Este simulador u nicamente acepta puntos de ruptura de tipo fetch. Single Step Permite ejecutar el programa instrucci on a instrucci on. Run/Stop Permite iniciar o detener la ejecuci on del programa. Reset Simula la excepci on de Reset del procesador. Como se describe en la secci on 1.5.4, supone la inicializaci on del computador virtual. El puntero de pila de supervisor (A7) se inicializa con el contenido de la palabra larga de la direcci on 0, el contador de programa (PC) se inicializa con el contenido de la palabra larga de la direcci on 4 y procesador se coloca en modo supervisor con las interrupciones inhibidas (2700 en el registro de estado, SR). Antes de ejecutar el programa se debe pulsar este bot on.

4.5.

Errores conocidos

Problema Cuando se ejecuta instrucci on a instrucci on, si se modica el registro de estado se sigue mostrando el contenido antiguo. (Registers). Posible soluci on Colocar un punto de ruptura en la instrucci on siguiente a la que modica el registro de estado y pulsar Run. Problema Cuando se carga un programa desde la ventana del simulador (gura 4.3) se debe cargar el chero con el c odigo objeto cuya extensi on .h68. Sin embargo, si se carga desde la ventana de listado no se podr a ejecutar correctamente.

Cap tulo 5

Enunciado de la pr actica
La pr actica consistir a en la programaci on, en ensamblador del Motorola 68000, de un conjunto de subrutinas que permitan la realizaci on de operaciones de Entrada/Salida sobre dos l neas serie utilizando el m odulo DUART MC68681. Esta pr actica estar a compuesta por dos ejercicios: Programaci on de operaciones mediante E/S programada Programaci on de operaciones mediante E/S por interrupciones La pr actica se realizar a en los terminales X del Centro de C alculo de las Salas Reguerillo, Aguila y Drach conect andose al computador batman. Los alumnos que dispongan de un computador con sistema operativo Linux disponen de una versi on del emulador para dicho sistema operativo (v ease notas de instalaci on).

Ejercicio 1: E/S programada


El objetivo de esta parte es que el alumno se familiarice con el entorno del simulador, el lenguaje ensamblador y la interfaz de los dispositivos que se desea utilizar. Esta parte de la pr actica, cuya estructura se muestra en la gura 5.1, presentar a una interfaz constituida por las siguientes subrutinas: INIT: Inicializaci on del dispositivo. Preparar a la l nea serie A para recibir y transmitir caracteres. SCAN: Lectura de un dispositivo. Las operaciones sobre la l nea A se realizar an mediante muestreo (polling), es decir, mediante E/S programada. PRINT: Escritura en un dispositivo. Las operaciones sobre la l nea A se realizar an mediante muestreo (polling), es decir, mediante E/S programada. Se aconseja la realizaci on de este ejercicio en tres fases: Inicializaci on de los dispositivos. Lectura y escritura en un dispositivo mediante muestreo (polling), es decir, mediante E/S programada.

56

Pr actica de EntradaSalida (20122013)

Programa Principal

INIT

PRINT

SCAN

SALIDA LNEA A

ENTRADA LNEA A

Figura 5.1: Estructura de la primera parte de la pr actica. Realizaci on de programas principales que comprueben el funcionamiento correcto de las subrutinas. Por ejemplo, un programa que invocando a los m odulos anteriores, realice una lectura de un conjunto de caracteres y posteriormente los escriba.

Descripci on de las Subrutinas


Todas las subrutinas reciben los par ametros en la pila y el valor de retorno, si lo tiene, se devuelve en el registro D0. INIT ( ) Par ametros: No tiene.

Resultado: La l nea A debe quedar preparada para la recepci on y transmisi on de caracteres. Al nalizar la ejecuci on de la instrucci on RTS, el puntero de pila (SP) debe apuntar a la misma direcci on a la que apuntaba antes de ejecutar la instrucci on BSR. Debido a la particular conguraci on del emulador, esta subrutina no puede devolver ning un error y, por tanto, no se devuelve ning un valor de retorno en el registro D0. Descripci on: La rutina INIT realiza la inicializaci on de la l nea A del MC68681. Como resultado, la l nea A debe quedar preparada para la recepci on y transmisi on de caracteres. Los par ametros de inicializaci on de esta subrutina son los siguientes: 8 Bits por car acter. No activar el eco.

5. Enunciado de la pr actica La velocidad de recepci on y transmisi on ser a de 38400 bits/s.

57

Funcionamiento Full Duplex: deben estar habilitadas la recepci on y la transmisi on simult aneamente. Se supondr a que el programa que invoca a esta subrutina no deja ning un valor representativo en los registros del computador salvo el puntero de marco de pila (A6). SCAN (Buffer, Tama~ no) Par ametros: Buer: 4 bytes. Es el buer en el que se van a devolver los caracteres que se han le do del dispositivo. Se pasa por direcci on. Es un par ametro de salida. Tama no: 2 bytes. Es un n umero entero sin signo que indica el n umero de caracteres que se quieren leer del dispositivo. Es un par ametro de entrada. Resultado: D0: 4 bytes. Se devuelve un c odigo que indica el n umero de caracteres que se han le do. Descripci on: La rutina SCAN realiza la lectura, de la l nea A del MC68681, de un bloque de caracteres cuyo tama no viene denido por el par ametro Tama~ no. La lectura se deber a realizar de forma bloqueante, es decir, la subrutina nalizar a cuando se haya completado la lectura del bloque completo. El programa deber a devolver en la direcci on apuntada por Buffer el bloque de caracteres le do. Esta subrutina debe dejar el puntero de pila (SP) apuntando a la misma posici on de memoria a la que apuntaba antes de realizar la llamada a subrutina. Se supondr a que el programa que invoca a esta subrutina habr a reservado espacio suciente en el buer que se pasa como par ametro (Buffer) y no deja ning un valor representativo en los registros del computador salvo el puntero de marco de pila (A6). PRINT (Buffer, Tama~ no) Par ametros: Buer: 4 bytes. Es el buer en el que se pasa el conjunto de caracteres que se desea escribir en el dispositivo. Se pasa por direcci on. Es un par ametro de entrada. Tama no: 2 bytes. Es un n umero entero sin signo que indica el n umero de caracteres que se quiere escribir en el puerto A. Es un par ametro de entrada. Resultado: D0: 4 bytes. Se devuelve un c odigo que indica el n umero de caracteres que se han escrito.

58

Pr actica de EntradaSalida (20122013)

Descripci on: La rutina PRINT realiza la escritura de un bloque de caracteres, cuyo tama no viene denido por el par ametro Tama~ no, por la l nea A del MC68681. La escritura se deber a realizar de forma bloqueante, es decir, la subrutina no nalizar a hasta que haya completado la escritura del bloque completo. Esta subrutina debe dejar el puntero de pila (SP) apuntando a la misma posici on de memoria a la que apuntaba antes de realizar la llamada a subrutina. Se supondr a que el programa que invoca a esta subrutina no deja ning un valor representativo en los registros del computador salvo el puntero de marco de pila (A6). Nota: como complemento a la descripci on de estas subrutinas, en la secci on Ejemplos se proporcionan distintos casos de uso.

Ejercicio 2: E/S mediante interrupciones


El objetivo de esta parte de la pr actica es que el alumno se familiarice con la realizaci on de operaciones de Entrada/Salida en un perif erico mediante interrupciones. El dispositivo elegido es el mismo de la primera parte, la DUART MC68681, sin embargo en este caso se operar a sobre ambas l neas mediante interrupciones. En el computador de la pr actica la DUART est a conectada a la l nea de petici on de interrupci on de nivel 4. La estructura de esta parte de la pr actica se muestra en la gura 5.2. Como puede apreciarse se necesitan unos bueres internos para almacenar los caracteres que se reciben as ncronamente por las l neas. Del mismo modo, se necesitan sendos bueres internos para almacenar los caracteres pendientes de transmitirse por las l neas. Adem as, existe una u nica rutina de tratamiento de las interrupciones de las l neas que ser a la encargada transferir la informaci on a o desde los mencionados bueres internos. Esta parte de la pr actica implica la programaci on de la rutina de tratamiento de las interrupciones (RTI) as como de las siguientes subrutinas que constituyen el interfaz: INIT: Inicializaci on de los dispositivos. Preparar a las dos l neas serie para recibir y transmitir caracteres y noticar los sucesos mediante la solicitud de interrupciones. SCAN: Lectura de un dispositivo. Devolver a un bloque de caracteres que se haya recibido previamente por la l nea correspondiente (A o B). PRINT: Escritura en un dispositivo. Ordenar a la escritura de un bloque de caracteres por la l nea correspondiente (A o B). En esta parte de la pr actica, las subrutinas deber an tener un comportamiento no bloqueante. Es decir, estas subrutinas se limitar an a almacenar o recuperar la informaci on solicitada de los bueres internos y no esperar an en ning un caso a que termine la transmisi on de los caracteres o a que se reciban nuevos caracteres. La forma de acceder a los b ueres internos y variables compartidas entre la RTI y SCAN y PRINT debe asegurar la integridad de los datos manejados por las subrutinas, es decir, que ning un car acter es le do dos veces y que no se pierde ninguno. Esto exige realizar un estudio de concurrencia entre la RTI y el resto de subrutinas que se pueden ejecutar de forma concurrente, teniendo en cuenta qu e informaci on modica cada subrutina y en qu e momento lo hace.

5. Enunciado de la pr actica

59

Las subrutinas anteriores se depurar an y probar an escribiendo una serie de programas principales que llamen a estas subrutinas con un conjunto de par ametros distintos. Este juego de ensayo debe asegurar el funcionamiento correcto de la RTI y las otras cuatro subrutinas.
Programa Principal

INIT

PRINT

SCAN

BUFFER INTERNO DE PRINT (LNEA A)

BUFFER INTERNO DE PRINT (LNEA B)

BUFFER INTERNO DE SCAN (LNEA A)

BUFFER INTERNO DE SCAN (LNEA B)

RTI

ENTRADA SALIDA LNEAS A y B

Figura 5.2: Estructura de la segunda parte de la pr actica.

Descripci on de las Subrutinas


Todas las subrutinas reciben los par ametros en la pila y el valor de retorno, si lo tiene, se devuelve en el registro D0. INIT ( ) Par ametros: No tiene. Resultado: Las l neas A y B deben quedar preparadas para la recepci on y transmisi on de caracteres mediante E/S por interrupciones. Al nalizar la ejecuci on de la instrucci on RTS, el puntero de pila (SP) debe apuntar a la misma direcci on a la que apuntaba antes de ejecutar la instrucci on BSR. Debido a la particular conguraci on del emulador, esta subrutina no puede devolver ning un error y, por tanto, no se devuelve ning un valor de retorno. Se supondr a que el programa que invoca a esta subrutina no deja ning un valor representativo en los registros del computador salvo el puntero de marco de pila (A6).

60

Pr actica de EntradaSalida (20122013)

Descripci on: La rutina INIT realiza la inicializaci on de las dos l neas disponibles en la DUART MC68681. Los par ametros de inicializaci on de esta subrutina son los siguientes: 8 bits por car acter para ambas l neas. No activar el eco en ninguna de las l neas. Se debe solicitar una interrupci on cada vez que llegue un car acter. La velocidad de recepci on y transmisi on ser a de 38400 bits/s en ambas l neas. Funcionamiento Full Duplex: deben estar habilitadas la recepci on y la transmisi on simult aneamente. Establecer el vector de interrupci on 40 (hexadecimal). Habilitar las interrupciones de recepci on de las l neas correspondientes en la m ascara de interrupci on. Las interrupciones de transmisi on s olo se activar an cuando el buer de transmisi on de la l nea correspondiente contenga alg un car acter. Actualizar la direcci on de la rutina de tratamiento de interrupci on en la tabla de vectores de interrupci on. Inicializar los b ueres internos de las subrutinas indicadas anteriormente. Nota: se recuerda que el registro de m ascara de interrupci on (IMR) de la DUART MC68681 no se puede leer. Si la l ogica del programa necesitase conocer su contenido, se podr a mantener una copia en memoria de las escrituras sobre dicho registro. SCAN (Buffer, Descriptor, Tama~ no) Par ametros: Buer: 4 bytes. Es el buer en el que se van a devolver los caracteres que se han le do del dispositivo. Se pasa por direcci on. Es un par ametro de salida. Descriptor: 2 bytes. Es un n umero entero. Es un par ametro de entrada. Indica el dispositivo sobre el que se desea realizar la operaci on de lectura: 0 indica que la lectura se realizar a de la l nea A. 1 indica que la lectura se realizar a de la l nea B. Cualquier otro valor provocar a que la subrutina devuelva un error. Tama no: 2 bytes. Es un n umero entero sin signo. Es un par ametro de entrada. Indica el n umero m aximo de caracteres que se deben leer del buer interno y copiar en el par ametro Buffer. Resultado:

5. Enunciado de la pr actica D0: 4 bytes. Se devuelve un c odigo que indica el resultado de la operaci on: D0 = 0xFFFFFFFF si existe alg un error en los par ametros pasados.

61

D0 es un n umero positivo. Indicar a el n umero de caracteres que se han le do y se han copiado a partir de la posici on de memoria indicada por el par ametro Buffer. Descripci on: La rutina SCAN realiza la lectura de un bloque de caracteres de la l nea correspondiente (A o B). La lectura se deber a realizar de forma no bloqueante, es decir, la subrutina se limitar aa copiar en el par ametro Buffer los Tama~ no primeros caracteres almacenados en el buer interno correspondiente y eliminarlos de dicho buer interno. Si el buer interno contiene menos de Tama~ no caracteres, los copiar a en el par ametro Buffer y el buer interno pasar a a estar vac o. En D0 se almacenar a el n umero de caracteres que se han copiado en Buffer. Adem as se deber a tener en cuenta lo siguiente: El comportamiento no bloqueante es resultado de gestionar las l neas serie mediante E/S por interrupciones. Para ello la subrutina SCAN dispondr a de sendos bueres internos de 2000 bytes (a los que tienen acceso dicha subrutina y la rutina de tratamiento de interrupci on) que contendr an los caracteres le dos de las l neas y no consumidos por ninguna llamada a SCAN. En particular esta subrutina debe asegurar que ning un car acter es le do dos veces y que no se pierde ninguno (v ease la gura 5.2). Los b ueres internos de la subrutina se deber an implementar como b ueres circulares. En ning un caso esta subrutina debe esperar a que lleguen nuevos caracteres del dispositivo. Se copiar an a lo sumo tantos bytes como indique el par ametro Tama~ no. Esta subrutina deber a dejar el dispositivo preparado para realizar lecturas posteriores y, al igual que la subrutina de inicializaci on, debe dejar el puntero de pila (SP) apuntando a la misma posici on de memoria a la que apuntaba antes de realizar la llamada a subrutina. Se supondr a que el programa que invoca a esta subrutina habr a reservado espacio suciente en el buer que se pasa como par ametro (Buffer) y no deja ning un valor representativo en los registros del computador salvo el puntero de marco de pila (A6). PRINT (Buffer, Descriptor, Tama~ no) Par ametros: Buer: 4 bytes. Es el buer en el que se pasa el conjunto de caracteres que se desea escribir en el dispositivo. Se pasa por direcci on. Es un par ametro de entrada. Descriptor: 2 bytes. Es un n umero entero. Es un par ametro de entrada. Indica el dispositivo sobre el que se desea realizar la operaci on de escritura: 0 indica que la escritura se realizar a de la l nea A. 1 indica que la escritura se realizar a de la l nea B.

62

Pr actica de EntradaSalida (20122013) Cualquier otro valor provocar a que la subrutina devuelva un error. Tama no: 2 bytes. Es un n umero entero sin signo. Es un par ametro de entrada. Indica el n umero de caracteres que se deben leer del par ametro Buffer y escribir en el puerto.

Resultado: D0: 4 bytes. Se devuelve un c odigo que indica el resultado de la operaci on: D0 = 0xFFFFFFFF si existe alg un error en los par ametros pasados. D0 es un n umero positivo. Indicar a el n umero de caracteres que se han aceptado para su escritura en el dispositivo. Descripci on: La rutina PRINT realiza la escritura en el correspondiente buer interno de tantos caracteres como indique el par ametro Tama~ no contenidos en el buer que se pasa como par ametro. La escritura se deber a realizar de forma no bloqueante, es decir, la subrutina nalizar a inmediatamente despu es de copiar los caracteres pasados en el par ametro Buffer al buer interno y, si como resultado de dicha copia hay caracteres en el buer interno, activar la transmisi on de caracteres por la l nea. Adem as se deber a tener en cuenta lo siguiente: Al igual que en la subrutina SCAN el comportamiento no bloqueante es resultado de gestionar la l nea serie mediante E/S por interrupciones. Esto indica que el MC68681 generar a una interrupci on cuando alguna de las l neas est e preparada para transmitir y, por tanto, la rutina de tratamiento de interrupci on ser a la encargada de ir transmitiendo los caracteres por la l nea correspondiente (v ease la gura 5.2). Para permitir este comportamiento, la subrutina PRINT dispondr a de sendos bueres internos de 2000 bytes (a los que u nicamente tienen acceso dicha subrutina y la rutina de tratamiento de interrupci on) que contendr a los caracteres pendientes de ser enviados por las l neas. Los b ueres internos de la subrutina se deber an implementar como b ueres circulares. Una llamada a PRINT para una de las l neas se limitar a a copiar del par ametro Buffer los datos que se desean escribir al buer interno correspondiente y encolarlos al conjunto de caracteres que est an pendientes de transmitirse. En el caso de que los caracteres que se desean transmitir no quepan en su totalidad en el buer interno, se encolar an los que quepan y se devolver a el n umero de caracteres copiados en D0. Si se ha copiado alg un car acter en el buer, se activar a la transmisi on de caracteres por la l nea. En ning un caso esta subrutina debe esperar a que nalice la transmisi on de caracteres del dispositivo. La DUART solicitar a interrupciones cada vez que la l nea correspondiente est e lista para transmitir si se han activado en el registro de m ascara de interrupciones (IMR). Esta subrutina deber a dejar el dispositivo preparado para realizar escrituras posteriores y, al igual que las otras subrutinas, debe dejar el puntero de pila (SP) apuntando a la misma posici on de memoria a la que apuntaba antes de realizar la llamada a subrutina. Se supondr a que el programa que invoca a esta subrutina habr a reservado espacio suciente en el buer que se pasa como par ametro (Buffer) y no deja ning un valor representativo en los registros del computador salvo el puntero de marco de pila (A6).

5. Enunciado de la pr actica RTI

63

Descripci on: La invocaci on de la rutina de tratamiento de interrupci on es el resultado de la ejecuci on de la secuencia de reconocimiento de interrupciones expuesta en la p agina 8. Entre otras acciones esta subrutina debe realizar las siguientes acciones: Identicaci on de la fuente de interrupci on. Puesto que el MC68681 activa una misma se nal de interrupci on para las cuatro condiciones posibles, esta subrutina debe identicar cu al de las cuatro posibles condiciones ha generado la solicitud de interrupci on. Tratamiento de la interrupci on. Una vez identicada la fuente, se debe realizar el tratamiento de la interrupci on. Si la interrupci on es de recepci on indica que la cola FIFO de recepci on de la l nea no est a vac a (v ease la p agina 38). En este caso se debe a nadir el car acter que se recibi o por la l nea al buer interno correspondiente. Si la interrupci on es de transmisi on indica que la l nea est a preparada para transmitir un car acter. En este caso si quedan caracteres en el buer interno de transmisi on, se debe transmitir un nuevo car acter por la l nea y eliminarlo del buer interno. Situaciones especiales. Hay situaciones en las que el tratamiento de la interrupci on no se puede asociar al tratamiento general: Si la interrupci on es de recepci on y el buer interno est a lleno, no se puede a nadir el car acter que se recibe por la l nea, pero se debe leer el car acter del buer de recepci on del MC68681 para desactivar la petici on de interrupci on. En este caso el car acter no se a nade al buer interno (se tira). Si la interrupci on es de transmisi on y el buer interno de la l nea est a vac o se deben deshabilitar las interrupciones de transmisi on para la l nea que ha interrumpido en el registro IMR del MC68681. Si no se realizara esta operaci on el dispositivo no desactivar a la se nal de interrupci on puesto que seguir a estando preparado para transmitir. Nota: como complemento a la descripci on de estas subrutinas, en la secci on Ejemplos se proporcionan distintos casos de uso.

Variables locales y paso de par ametros


El procesador MC68000 no dispone de un registro de prop osito espec co que realice las tareas de puntero de marco de pila (FP). No obstante, habitualmente se suele utilizar el registro de direcciones A6 para que realice estas funciones. El procesador MC68000 dispone de dos instrucciones que ayudan a la creaci on y destrucci on del marco de pila de una subrutina: LINK y UNLK. Estas instrucciones permiten gestionar f acilmente la creaci on y destrucci on de las variables locales de una subrutina.

64

Pr actica de EntradaSalida (20122013)

El espacio asignado para variables locales se reserva en el marco de pila de la correspondiente rutina. Para construir dicho marco de pila basta con salvaguardar el valor que tuviera el registro que act ua como puntero al marco de pila (A6), crear el nuevo marco de pila y reservar espacio en la pila para las variables locales. Obs ervese que todas estas funciones son realizadas por la instrucci on LINK. Sup ongase que una rutina SCAN del ejercicio 2 necesita utilizar dos variables locales de 32 bits (i y j). La estructura de la pila se muestra en la gura 5.3. La reserva de este espacio de variables (8 bytes) se realizar a al entrar en la rutina: SCAN: LINK A6, #-8 *Se crea el marco de pila

Si en el c odigo posterior de la rutina SCAN se desea cargar en el registro D2 la variable i y en D3 la variable j se realiza con el siguiente c odigo ensamblador: SCAN: LINK A6, #-8 MOVE.L -8(A6),D2 MOVE.L -4(A6),D3 *Se crea el marco de pila

Para deshacer el marco de pila creado a la entrada de la subrutina se deber an realizar las siguientes acciones: Se copia el valor del puntero de marco al puntero de pila. Se restaura el valor que tuviera el puntero de marco antes de entrar en la subrutina. Se retorna a la subrutina llamante. Las dos primeras acciones son realizadas mediante la instrucci on UNLK. Por tanto, el c odigo de salida de una subrutina que utilice marco de pila se muestra a continuaci on. UNLK A6 RTS *Se destruye el marco de pila

Asignaci on de etiquetas y de memoria


Los puntos de entrada de las subrutinas deber an ir asociados a las etiquetas INIT, SCAN y PRINT. El rango de direcciones 0 a la 0x00003FF se reservar an para ubicar la tabla de vectores de interrupci on. El alumno debe ubicar todo el c odigo (datos y variables globales privadas a las subrutinas) a partir de la direcci on hexadecimal 0x0000400 hasta la 0x00007FFF. La pila se situar a en las posiciones altas de memoria.

5. Enunciado de la pr actica

65

A7 (SP)

I_byte_3 I_byte_2 I_byte_1 I_byte_0 J_byte_3 J_byte_2 J_byte_1 J_byte_0

A6 (FP) Antiguo_FP_byte_3 Antiguo_FP_byte_2 Antiguo_FP_byte_1 Antiguo_FP_byte_0 Dir_Ret_byte_3 Dir_Ret_byte_2 Dir_Ret_byte_1 Dir_Ret_byte_0 Buffer_byte_3 Buffer_byte_2 Buffer_byte_1 Buffer_byte_0 Descriptor_byte_1 Descriptor_byte_0 Tamao_byte_1 Tamao_byte_0
Figura 5.3: Gesti on de variables locales.

Ejemplos
Como aclaraci on a la especicaci on de las subrutinas, a continuaci on se incluye una serie de ejemplos con los argumentos que se pasan a cada una de las subrutinas y direcciones de memoria que se modican. Este conjunto de casos debe ser utilizado como ejemplo de la especicaci on a subrutinas, no como los casos de prueba con los que se evaluar a la pr actica. Puesto que en este procesador el direccionamiento es a nivel de byte, cada una de las direcciones que se muestran en este apartado contendr an un byte.

66

Pr actica de EntradaSalida (20122013) NOTA: Los n umeros que comienzan con 0x est an representados en hexadecimal.

E/S programada: INIT


Caso 1. A7 = 32000 Direcciones de Memoria: 32000: ??, ??, ??, ??,

Resultado: A7 = 32000

Debe dejar la l nea A preparada para la recepci on y transmisi on de caracteres.

E/S programada: SCAN


Caso 2. A7 = 32000 Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x0C, 5000: ??, ??, ??, ??, . . . , ??

Caracteres a la entrada de la l nea A: Representaci on ASCII:

arquitectura de 0x61, 0x72, 0x71, 0x75, 0x69, 0x74, 0x65, 0x63 0x74, 0x75, 0x72, 0x61, 0x20, 0x65, 0x64

Resultado: A7 = 32000 D0 = 12 Direcciones de Memoria: 5000: 0x61, 0x72, 0x71, 0x75, 0x69, 0x74, 0x65, 5007: 0x63, 0x74, 0x75, 0x72, 0x61

Caracteres pendientes de ser le dos: Representaci on ASCII:

<blanco> de 0x20, 0x65, 0x64

5. Enunciado de la pr actica Caso 3. A7 = 32000 Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x01, 5000: ??, ??, ??, ??, . . . , ??

67

Caracteres a la entrada de la l nea A: Representaci on ASCII:

s 0x73

Resultado: A7 = 32000 D0 = 1 Caracteres pendientes de ser le dos: Direcciones de Memoria: 5000: 0x73

<vac o>

E/S programada: PRINT


Caso 4. A7 = 32000 Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x07 5000: 0x70, 0x6C, 0x61, 0x6E, 0x20, 0x39, 0x36

Resultado: A7 = 32000 D0 = 7 Caracteres a la salida de la l nea A: Representaci on ASCII:

0x70, 0x6C, 0x61, 0x6E, 0x20, 0x39, 0x36 plan 96

68

Pr actica de EntradaSalida (20122013)

E/S por interrupciones: INIT


Caso 5. A7 = 32000

Resultado: A7 = 32000

Debe dejar las l neas A y B preparadas para la recepci on y transmisi on de caracteres, se habr a habilitado la recepci on y transmisi on en ambas l neas, se habr a establecido correctamente el vector de interrupci on, se habr a actualizado la entrada de la tabla de vectores de interrupci on y se habr a inicializado como buer vac o dos b ueres de 2000 caracteres para cada una de las l neas.

E/S por interrupciones: SCAN


Caso 6. A7 = 32000 Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x01, 32006: 0x00, 0x0F, 5000: ??, ??, ??, ??, . . . , ??

Caracteres recibidos por la entrada de la l nea B y almacenados en el buer interno Representaci on ASCII:

de computadores y mas

0x64, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x75, 0x74, 0x61, 0x64, 0x6F, 0x72, 0x65, 0x73, 0x20 0x79, 0x20, 0x6D, 0x61, 0x73

Resultado: A7 = 32000 D0 = 15 Direcciones de Memoria: 5000: 0x64, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x75, 5008: 0x74, 0x61, 0x64, 0x6F, 0x72, 0x65, 0x73

Caracteres recibidos por la entrada de la l nea B y almacenados en el buer interno Representaci on ASCII:

<blanco> y mas

0x20, 0x79, 0x20, 0x6D, 0x61, 0x73

5. Enunciado de la pr actica Caso 7. A7 = 32000 Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x01, 32006: 0x00, 0x22, 5000: ??, ??, ??, ??, . . . , ??

69

Caracteres recibidos por la entrada de la l nea B y almacenados en el buer interno Representaci on ASCII:

de

0x64, 0x65

Resultado: A7 = 32000 D0 = 2 Caracteres recibidos por la entrada de la l nea B y almacenados en el buer interno Direcciones de Memoria: 5000: 0x64, 0x65

<vac o>

E/S por interrupciones: PRINT


Caso 8. A7 = 32000 Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x10, 32006: 0x00, 0x11, 5000: ??, ??, ??, ??, . . . , ??

Resultado: A7 = 32000 D0 = 0xFFFFFFFF

70 Caso 9. A7 = 32000

Pr actica de EntradaSalida (20122013)

Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x01, 32006: 0x00, 0x0C, 5000: 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 5007: 0x70, 0x63, 0x69, 0xF3, 0x6E

Caracteres a enviar por la l nea B (buer interno): Resultado: A7 = 32000 D0 = 12 Caracteres a enviar por la l nea B (buer interno): Representaci on ASCII: Caso 10. A7 = 32000

<vac o>

0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x63, 0x69, 0xF3, 0x6E interrupci on

Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x01, 32006: 0x00, 0x01, 5000: 0x69

Caracteres a enviar por la l nea B (buer interno): Representaci on ASCII: Resultado: A7 = 32000 D0 = 1 Caracteres a enviar por la l nea B (buer interno): Representaci on ASCII:

0x70, 0x65 pe

0x70, 0x65, 0x69 pei

5. Enunciado de la pr actica Caso 11. A7 = 32000 Direcciones de Memoria: 32000: 0x00, 0x00, 0x13, 0x88, 32004: 0x00, 0x00, 32006: 0x00, 0x00, 5000: 0xf0, 0x6f, 0x, . . .

71

Resultado: A7 = 32000 D0 = 0 Direcciones de Memoria: 5000: 0xf0, 0x6f, 0x, . . . , ??

72

Pr actica de EntradaSalida (20122013)

Dise no y codicaci on de casos de prueba


Los ejemplos que se han expuesto anteriormente intentan aclarar la especicaci on de la pr actica, pero para asegurar el correcto funcionamiento de las subrutinas de la pr actica es necesario realizar un conjunto de casos de prueba que cubran el mayor n umero posible de situaciones que se puedan presentar. Para mostrar c omo se puede construir un caso de prueba se incluye un ejemplo de programa principal que hace funcionar concurrentemente las rutinas de SCAN, PRINT y la RTI. El programa tiene un bucle principal, en el que cada iteraci on primero se queda en un bucle de llamadas a SCAN hasta que se consigue leer del puerto serie A un bloque de TAMBS caracteres y, a continuaci on, se queda un bucle de llamadas a PRINT hasta que se consigue imprimir en el puerto B todos los caracteres le dos, en bloques de tama no TAMBP. El bucle principal se repite indenidamente. La variable BUFFER se utiliza para almacenar todos los caracteres que se van a leer de la l nea A. En la primera lectura se pasa como par ametro la direcci on de comienzo de esta variable y en las sucesivas lecturas se pasar a la direcci on de comienzo incrementada en el n umero de caracteres que se han le do (valor de D0) Las variables PARDIR y PARTAM son respectivamente la direcci on y el tama no que se pasar an como par ametro a ambas rutinas SCAN y PRINT. La variable CONTC contiene el n umero de caracteres que quedan por imprimir. Las constantes DESA y DESB son los descriptores de lectura y escritura que se pasar an como par ametros a SCAN y PRINT. El programa comienza invocando a la rutina INIT y estableciendo los manejadores de las excepciones que se pueden producir. Estos manejadores se limitan a parar la ejecuci on del programa. A continuaci on se realiza la iteraci on del bucle de SCAN tal como se ha indicado al comienzo de esta secci on. Una vez que se ha conseguido leer el bloque completo de caracteres se ejecuta el bucle de escrituras, que consiste en escribir todos los caracteres le dos en el bucle anterior, en bloques de TAMBP caracteres. En cada iteraci on de este bucle se resta el n umero de caracteres que la subrutina PRINT ha aceptado para la transmisi on. Si no se ha escrito todo el bloque se repite la llamada a PRINT con el conjunto de caracteres que no se ha transmitido. El caso especial se trata al nal del bucle. Esta situaci on consiste en que el n umero de caracteres que quedan por transmitir sea menor que el tama no de bloque de print. En este caso se pasa como par ametro el n umero de caracteres que quedan por transmitir en lugar de pasar el tama no de bloque.
BUFFER: PARDIR: PARTAM: CONTC: DESA: DESB: TAMBS: TAMBP: DS.B DC.L DC.W DC.W EQU EQU EQU EQU 2100 0 0 0 0 1 30 7 * * * * * * * * Buffer para lectura y escritura de caracteres Direcci on que se pasa como par ametro Tama~ no que se pasa como par ametro Contador de caracteres a imprimir Descriptor linea A Descriptor linea B Tama~ no de bloque para SCAN Tama~ no de bloque para PRINT

5. Enunciado de la pr actica
INICIO: * Manejadores de excepciones MOVE.L MOVE.L MOVE.L MOVE.L MOVE.L MOVE.L #BUS_ERROR,8 #ADDRESS_ER,12 #ILLEGAL_IN,16 #PRIV_VIOLT,32 #ILLEGAL_IN,40 #ILLEGAL_IN,44 * * * * * * Bus error handler Address error handler Illegal instruction handler Privilege violation handler Illegal instruction handler Illegal instruction handler

73

BSR MOVE.W BUCPR: OTRAL: MOVE.W MOVE.L MOVE.W MOVE.W MOVE.L BSR ADD.L ADD.L SUB.W BNE

INIT #$2000,SR #TAMBS,PARTAM #BUFFER,PARDIR PARTAM,-(A7) #DESA,-(A7) PARDIR,-(A7) SCAN #8,A7 D0,PARDIR D0,PARTAM OTRAL

* Permite interrupciones * * * * * * * * * * * * * * * * * * * * * * * * * Inicializa par ametro de tama~ no Par ametro BUFFER = comienzo del buffer Tama~ no de bloque Puerto A Direcci on de lectura Restablece la pila Calcula la nueva direcci on de lectura Actualiza el n umero de caracteres le dos Si no se han le do todas los caracteres del bloque se vuelve a leer Inicializa contador de caracteres a imprimir Par ametro BUFFER = comienzo del buffer Tama~ no de escritura = Tama~ no de bloque Tama~ no de escritura Puerto B Direcci on de escritura Restablece la pila Calcula la nueva direcci on del buffer Actualiza el contador de caracteres Si no quedan caracteres se acaba Actualiza el tama~ no de escritura Si no se ha escrito todo el bloque se insiste Si el no de caracteres que quedan es menor que el tama~ no establecido se imprime ese n umero Siguiente bloque

ESPL:

OTRAE: ESPE:

MOVE.W MOVE.L MOVE.W MOVE.W MOVE.W MOVE.L BSR ADD.L ADD.L SUB.W BEQ SUB.W BNE CMP.W BHI MOVE.W BRA

#TAMBS,CONTC #BUFFER,PARDIR #TAMBP,PARTAM PARTAM,-(A7) #DESB,-(A7) PARDIR,-(A7) PRINT #8,A7 D0,PARDIR D0,CONTC SALIR D0,PARTAM ESPE #TAMBP,CONTC OTRAE CONTC,PARTAM ESPE BUCPR BREAK NOP BREAK NOP BREAK NOP

* Siguiente bloque

SALIR:

BRA

BUS_ERROR: ADDRESS_ER: ILLEGAL_IN:

* Bus error handler * Address error handler * Illegal instruction handler

74
PRIV_VIOLT: BREAK NOP

Pr actica de EntradaSalida (20122013)


* Privilege violation handler

5. Enunciado de la pr actica

75

NORMAS DE PRESENTACION
Se recomienda a los alumnos que consulten peri odicamente la p agina Web de la asignatura: http://www.datsi.fi.upm.es/docencia/Arquitectura/E_S En esta p agina se publicar an noticias relacionadas con esta pr actica. CONVOCATORIA DE FEBRERO El plazo de entrega de la pr actica terminar a el d a 29 de Enero de 2014 a las 21:00. En este momento se realizar a una correcci on de la pr actica para todos los grupos que la hayan entregado y no se les haya corregido. A partir del 30 de Enero el sistema de entrega se congurar a de tal forma que permita entregar u nicamente la memoria de la pr actica. La memoria de la pr actica se podr a entregar hasta el 30 de Enero a las 18:00 tanto en papel como en formato electr onico. Desde el 11 hasta el 20 de Diciembre de 2013 y desde el 8 de Enero hasta el 27 de Enero (incluido) de 2014 se realizar an correcciones de pr acticas todos los d as h abiles a las 21:00. De estas correcciones, el alumno podr a disponer de cuatro correcciones de pr acticas (en las fechas que el alumno estime conveniente). Para solicitar una correcci on basta con realizar correctamente la entrega de la pr actica. El examen de la pr actica se realizar a el d a 29 de Enero a las 17:00 en las aulas que se especicar an en su momento. CONVOCATORIA EXTRAORDINARIA DE JUNIO El plazo de entrega de la pr actica terminar a el d a 13 de Junio de 2014 a las 21:00. En este momento se realizar a una correcci on de la pr actica para todos los grupos que la hayan entregado y no se les haya corregido. A partir del 14 de Junio el sistema de entrega se congurar a de tal forma que permita entregar u nicamente la memoria de la pr actica. La memoria de la pr actica se podr a entregar hasta el 16 de Junio a las 12:00 tanto en papel como en formato electr onico. En esta convocatoria extraordinaria s olo se podr an presentar alumnos repetidores y que hayan solicitado convocatoria extraordinaria de la asignatura. Los profesores de la pr actica podr an solicitar fotocopia de dicha solicitud para dar de alta a los alumnos en el sistema de entrega de pr acticas. Desde el 13 de Mayo hasta el 12 de Junio se realizar an correcciones de pr acticas todos los d as h abiles a las 21:00. De estas correcciones, el alumno podr a disponer de cuatro correcciones de pr acticas (en las fechas que el alumno estime conveniente). Para solicitar una correcci on basta con realizar correctamente la entrega de la pr actica. El examen de la pr actica se realizar a el d a 13 de Junio a las 17:00 en las aulas que se especicar an en su momento. CONVOCATORIA DE SEPTIEMBRE El plazo de entrega de la pr actica terminar a el d a 11 de Septiembre de 2014 a las 21:00. En este momento se realizar a una correcci on de la pr actica para todos los grupos que la hayan entregado y no se les haya corregido. El 12 de Septiembre se congurar a el sistema de entrega de tal forma que permita entregar u nicamente la memoria de la pr actica.

76

Pr actica de EntradaSalida (20122013)

La memoria de la pr actica se podr a entregar hasta el 12 de Septiembre a las 12:00 tanto en papel como en formato electr onico. Desde el 8 de Julio hasta el 28 de Julio y desde el 1 de Septiembre hasta el 10 de Septiembre se realizar an correcciones de pr acticas todos los d as h abiles a las 21:00. De estas correcciones, el alumno podr a disponer de cuatro correcciones de pr acticas (en las fechas que el alumno estime conveniente). Para solicitar una correcci on basta con realizar correctamente la entrega de la pr actica.

No se realizar an correcciones de pr acticas durante el mes de Agosto.


El examen de la pr actica se realizar a el d a 11 de Septiembre a las 17:00 en las aulas que se especicar an en su momento.

TUTOR IAS DE LA PRACTICA


Las posibles preguntas relacionadas con la pr actica se atender an personalmente o por correo electr onico. Las consultas por correo electr onico se deber an dirigir a la direcci on on se muestra el horapr ent sal@datsi..upm.es. En la tabla que aparece a continuaci rio de atenci on personal a los alumnos para cuestiones relacionadas con esta pr actica en periodo lectivo. Se recomienda a los alumnos que fuera de dicho periodo (Julio y Septiembre), establezcan una cita con el profesor al que desean consultar mediante correo electr onico. No se atender a ninguna duda fuera de este horario. Dir. Email Santiago Rodr guez D. 4107 Antonio P erez D. 4108 srodri@.upm.es Lunes 1113 Martes 1113 Mi ercoles 1617 Jueves 1617 Viernes

aperez@.upm.es

1517

11:30 13:30

1517

Tabla 5.1: Horario de tutor as.

ENTREGA DE LA PRACTICA
La entrega se compone de: 1. Una memoria, en formato DINA4, en la que deber an gurar claramente el nombre y apellidos de los autores de la pr actica. Dicha memoria deber a contener los siguientes puntos: Diagrama de ujo o pseudoc odigo y comentario de los algoritmos utilizados. Listado comentado de las subrutinas en ensamblador.

5. Enunciado de la pr actica

77

Descripci on del juego de ensayo (conjunto de casos de prueba) que el alumno haya dise nado y utilizado para probar el correcto funcionamiento de la pr actica. Observaciones nales y comentarios personales de esta pr actica, estimando asimismo el tiempo empleado en su realizaci on. Esta memoria se deber a depositar en el buz on del departamento (bloque 4, planta 1). 2. La entrega de los cheros que contienen la pr actica. Ser a obligatorio entregar los siguientes cheros: autores: Es un chero ASCII que deber a contener los apellidos, nombre, n umero de matr cula y DNI de los autores de la pr actica. La pr actica se realizar a individualmente o en grupos de dos personas. Cada l nea de este chero contendr a los datos de uno de los autores de la pr actica, de acuerdo al siguiente formato: No Matr cula; DNI; apellido apellido, nombre; dir. correo electr onico El n umero de matr cula que se debe indicar en el chero es el que asigna la secretar a de la Facultad (por ejemplo 990999) y no el que se utiliza como identicador para abrir cuentas en el Centro de C alculo (por ejemplo a990999). es prog.s: Contendr a las subrutinas que componen la parte primera de la pr actica. Adem as, este chero deber a incluir un programa principal que se haya utilizado para la depuraci on de la pr actica. Este programa principal se utilizar a para indagar sobre posibles errores que se puedan producir. es int.s: Contendr a las subrutinas que componen la parte segunda de la pr actica. Adem as, este chero deber a incluir un programa principal que se haya utilizado para la depuraci on de la pr actica. Este programa principal se utilizar a para indagar sobre posibles errores que se puedan producir. memoria.txt: Es un chero ASCII que deber a contener la memoria de la pr actica. Si realiza la memoria utilizando un procesador de textos (Word, WordPerfect, Corel Ventura, etc.), estos programas suelen tener alguna opci on para exportar cheros a formato ASCII o texto DOS. Basta con que utilice esa opci on para generar este chero. Si ha decidido incluir diagramas de ujo u otro elemento gr aco, no es necesario que est e presente en el chero memoria.txt.

IMPORTANTE: Se recomienda al alumno que antes de realizar una entrega de


la pr actica ensamble los cheros es prog.s y es int.s, se asegure de que no generan ning un error y ejecute la pr actica con sus propios casos de prueba.

FORMA DE ENTREGA DE LOS FICHEROS


Sistema de entrega en batman.
Se utilizar a un programa de entrega denominado ent68000 96. Para ejecutar este programa se deber a teclear, desde el int erprete de comandos de batman, la palabra

78

Pr actica de EntradaSalida (20122013)

ent68000 96. Dicho programa, permite entregar los cheros indicados anteriormente, as como consultar los resultados de la ejecuci on de un conjunto de tests de pruebas utilizados por el corrector. Al entrar en el programa, este pide la identicaci on del usuario. Tomaremos como identicaci on de usuario el n umero de matr cula de uno de los integrantes del grupo. El programa mostrar a el mensaje: Introduzca su identicador (Num. matricula): 990999 El usuario deber a introducir el n umero de matr cula de uno de los integrantes del grupo (p.e. 990999). Si es la primera vez que el usuario entra en el sistema de entrega, el programa le invitar aa que introduzca una palabra clave (password) mostrando el siguiente mensaje: Se va a establecer password. Password: El usuario deber a introducir una palabra clave (no se mostrar a en pantalla). Para conrmar que no se ha producido ning un error al introducir el passwordse vuelve a pedir: Repita el password tecleado anteriormente: Si se ha producido alg un error se reintentar a establecer el password de nuevo. Despu es de mostrar este mensaje el programa termina. Si el comando se ha ejecutado con exito se mostrar an los datos que ha registrado el sistema de cada uno de los integrantes del grupo de pr acticas. Seguidamente aparecer a el siguiente mensaje: SE HAN DADO DE ALTA LOS SIGUIENTES ALUMNOS: 990999 123433342 PEREZ PEREZ JESUS Se ha asignado password al usuario A990999. - NO LO OLVIDE - NO LO APUNTE - NO LO DIVULGUE suponiendo que el grupo de pr acticas est e compuesto por un u nico alumno (Jes us P erez P erez con DNI n.o 123433342 y n umero de matr cula 990999) y la informaci on que aparece en el chero autores es: 990999 ; 123433342; PEREZ PEREZ JESUS Si dicho alumno no aparece en las listas en poder del departamento o no ha introducido correctamente alguno de los datos, se mostrar a un mensaje de error. A continuaci on se mostrar a el siguiente men u: OPCIONES: 1. Mandar Ficheros. 2. Consultar Resultados.

5. Enunciado de la pr actica 3. Cancelar Entregas. 4. Bloquear la Entrega. 5. Ayuda !!!! 6. Noticias. q Abandonar. >>>> A continuaci on se explica cada una de las opciones del men u.

79

MANDAR FICHEROS
Esta opci on permite mandar los cheros de una pr actica, que deber an estar en el directorio de trabajo del usuario. Si el comando se ejecuta correctamente se mostrar an los siguientes mensajes: MANDANDO EL FICHERO es prog.s ...OK. Si alguno de los cheros no se encuentra, el programa lo comunicar a al usuario. Por ejemplo: MANDANDO EL FICHERO es prog.s ... No se puede abrir el chero es prog.s Entrega abortada. El servidor de entregas intenta asegurar que cada uno de los cheros tiene el formato correcto. En nuestro caso esto se traduce en que el chero se va a poder ensamblar cuando se realice la correcci on. Si el comando de ensamblado no ha nalizado con exito se mostrar a un mensaje: EL FICHERO es prog.s NO TIENE EL FORMATO CORRECTO ENTREGA NO REALIZADA En este caso el alumno deber a comprobar que se puede ensamblar correctamente el chero y comprobar que contiene todas y cada una de las etiquetas que es obligatorio que aparezcan en dicho chero. En el caso de que se genere un error en la entrega de los cheros, el programa de entrega termina la ejecuci on del programa y se muestra el promptdel sistema operativo. Si se desea realizar una nueva entrega se volver a a teclear el comando. La realizaci on de una entrega anula todas las entregas anteriores pendientes de correcci on. Si dicha entrega es err onea, tambi en se anula esta entrega.

CANCELAR ENTREGAS
Esta opci on permite cancelar todas las entregas realizadas desde la u ltima correcci on. El grupo de pr acticas ser a eliminado de la lista de pr acticas pendientes de corregir. Si se han realizado varias entregas se cancelar an todas las entregas.

80

Pr actica de EntradaSalida (20122013)

CONSULTAR RESULTADOS
Esta opci on permite consultar los resultados de la correcci on de la entrega de una pr actica. El programa pide el nombre de chero en el que se copiar an los resultados de la ejecuci on del conjunto de tests de pruebas que componen el corrector. El programa pedir a un nombre de chero donde escribir los datos generados. Se mostrar a el siguiente mensaje: La salida ser a redirigida a un chero. Nombre del chero (ENTER para salida por pantalla) ?? result.txt En este caso se grabar an los resultados de las pruebas en el chero result.txt. Si como respuesta al mensaje se teclea ENTER, los resultados ser an mostrados por pantalla. El nombre del chero que se proporciona al programa (result.txt) no debe existir en el disco. Esta opci on se incluye para permitir la correcci on autom atica de las pr acticas. El alumno no debe utilizar este programa para depurar su pr actica. Debe ser el propio alumno el que construya su conjunto de pruebas que le permita comprobar que la pr actica funciona correctamente. Esta es la raz on por la que los casos de prueba utilizados para la correcci on de la pr actica no se ponen a disposici on del alumnado.

BLOQUEO DE LA ENTREGA
Si el usuario se compromete a no entregar m as veces la pr actica, puede bloquear la entrega para mayor seguridad. Si se ejecuta esta opci on no se podr a volver a realizar una nueva entrega de los cheros asociados a la pr actica. Si el comando se ejecuta satisfactoriamente se mostrar a el mensaje: ENTREGA BLOQUEADA.

AYUDA
Esta opci on mostrar a en pantalla una breve descripci on de cada una de las opciones del programa de entrega. No signica que se vaya a proporcionar ayuda para la realizaci on de la pr actica.

NOTICIAS
Esta opci on es puramente informativa. Permite noticar al alumno modicaciones en la especicaci on de la pr actica o, en general, noticias de inter es de la asignatura asociada a la pr actica. El programa pide el nombre de chero en el que se copiar an las noticias. La salida ser a redirigida a un chero. Nombre del chero (ENTER para salida por pantalla) ?? noticias.txt En este caso se grabar a la informaci on relativa a la asignatura en el chero noticias.txt. Si como respuesta al mensaje se teclea ENTER, la informaci on ser a mostrada por pantalla.

5. Enunciado de la pr actica

81

ABANDONAR
Termina la ejecuci on del programa de entrega. Si se realiza con exito se mostrar a el mensaje: Cerrando la conexion y a continuaci on aparecer a el promptdel sistema operativo. NINGUNA PRACTICA NOTA: NO SE CORREGIRA QUE NO SE ATEN GA A ESTAS NORMAS Y SE CONSIDERARA POR LO TANTO COMO NO PRESENTADA.

PROCEDIMIENTO DE ENTREGA V IA WEB


Se ha desarrollado una aplicaci on Web que permite realizar las mismas operaciones que la aplicaci on descrita en el apartado anterior. La URL en la que se encuentra es http://www.datsi.fi.upm.es/Practicas En esta aplicaci on se ha incluido la opci on que permite recuperar un Fichero Adicional, que es un chero comprimido (en formato Zip) que contiene los logs de las escrituras en memoria de las pruebas que han fallado. Estos logs permiten conocer qu e dato se escribe en una posici on de memoria y desde qu e instrucci on.

82

Pr actica de EntradaSalida (20122013)

Ap endice A

Instalaci on del entorno de la pr actica en un computador con sistema operativo Linux


El entorno de la pr actica compuesto por el ensamblador 68kasm y el emulador bsvc, se puede instalar en un computador personal con un sistema operativo Linux. Adem as del sistema operativo Linux se debe tener instalado el sistema de ventanas X y el entorno Tcl/Tk.

A.1.

Instalaci on en Linux

La versi on que se proporciona se ha probado en algunas distribuciones de Linux, por lo que se recomienda intentar esta instalaci on antes de compilar los fuentes de la distribuci on. El entorno se ha compilado para ser instalado en el directorio /usr/local.

A.1.1.

Obtenci on del entorno

La distribuci on de versiones compiladas para plataformas Linux se realiza conect andose al URL http://www.datsi.fi.upm.es/docencia/Arquitectura/E_S/

A.1.2.

Instalaci on del paquete

Se puede instalar siguiendo los pasos siguientes: Entre en el computador Linux como administrador (root). Obtenga el chero con la distribuci on de bsvc para Linux ya compilada: (bsvc-2.1+_Estatica.tar.gz) y c opielo en un directorio temporal (/tmp). Inst alelo utilizando la utilidad tar, para ello sit uese en la ra z del sistema de cheros: cd / umask 22 tar zxvf /tmp/bsvc-2.1+_Estatica.tar.gz

84

Pr actica de EntradaSalida (20122013) Aseg urese de que el directorio /usr/local/bsvc/bin est a en la variable PATH. Si no es as , no podr a ejecutar el simulador. Si utiliza en int erprete de comandos bash, se debe incorporar este directorio a dicha variable a nadiendo la siguiente l nea al nal del chero .profile o .bashrc de la ra z de la cuenta desde la que se desee ejecutar bsvc: export PATH=$PATH:/usr/local/bsvc/bin

Si no se notica ning un error, el entorno de pr acticas queda instalado. Los programas ejecutables, la documentaci on y los ejemplos se encuentran en /usr/local/bsvc. Si se produce alg un error en la instalaci on o no puede ejecutar el programa siga las indicaciones de la secci on A.2.

A.2.

Compilaci on de bsvc en Linux

En esta secci on se describe el procedimiento para instalar el entorno a partir de los cheros fuente. Para compilar los fuentes se necesita el compilador de C++ gcc 2.7.2 o superior y para ejecutarlo tcl 7.5 y tk 4.1. El procedimiento que se describe se ha vericado con la versi on de gcc 2.7.2.1 y se ejecuta correctamente con tcl 7.6 y tk 4.2.

A.2.1.

Obtenci on del entorno

Siga lo indicado en la secci on A.1.1 pero, en este caso, el chero se llama bsvc-2.1-src.tar.gz.

A.2.2.

Instalaci on del paquete

Se puede instalar siguiendo los pasos siguientes: Entre en el computador Linux como administrador (root). Si tiene el chero bsvc-2.1-src.tar.gz en un disquete con formato MS-DOS ins ertelo y c opielo en un directorio de trabajo (por ejemplo /tmp). Para ello, ya que el sistema de cheros MS-DOS habr a acortado el nombre, teclee: mcopy a:/bsvc-2~1.gz /tmp/bsvc-2.1-src.tar.gz Sit uese en el directorio de trabajo y descomprima el chero: cd /tmp tar zxvf bsvc-2.1-src.tar.gz Sit uese en el directorio que se acaba de crear (bsvc-2.1): cd bsvc-2.1 En este directorio existe un chero llamado Unix.doc, donde se describe el procedimiento de compilaci on, instalaci on y comprobaci on del entorno. El procedimiento de instalaci on es sencillo y lo u nico a tener en cuenta es que, si bien el directorio de instalaci on (INSTALL_DIR) puede ser cualquiera, debe estar en el path para que bsvc se ejecute correctamente.

A. Instalaci on en Linux

85

A.3.

Conexi on remota a batman

Si no ha conseguido instalar el simulador en su computador personal, puede conectarse al computador batman del centro de c alculo de la Facultad y ejecutar el simulador de forma remota. Para poder ejecutarlo debe instalarse un servidor X y un cliente ssh en su computador que ejecuta Windows 7 o Windows XP: Se puede obtener el servidor X de libre distribuci on Xming desde http://sourceforge.net/projects/xming/ Inst alelo siguiendo las instrucciones del proceso de instalaci on. Se puede obtener el cliente ssh putty desde http://www.chiark.greenend.org.uk/~sgtatham/putty/ Esta aplicaci on no necesita instalaci on, pero debe asegurarse de que en la pesta na de conguraci on de la conexi on SSH/X11 debe estar marcada la opci on Enable X11 forwarding. Para conectarse a batman arranque el servidor Xming y a continuaci on con ectese a batman utilizando putty.

86

Pr actica de EntradaSalida (20122013)

Ap endice B

Depuraci on de fallos que se maniesten como excepciones en el procesador MC68000


Una de las funciones del sistema operativo es capturar las excepciones que se producen debido al mal funcionamiento de los programas. Cuando se desarrolla c odigo para un computador sin sistema operativo (computador desnudo) estas excepciones no se manejan a menos que lo haga el propio programa. Las excepciones m as frecuentes se pueden producir con un procesador de la familia M68000 cuando se desarrolla c odigo para un computador desnudo son: Bus error: se produce cuando se direcciona fuera del rango de la memoria f sica disponible. Address error: se produce cuando se utiliza una direcci on impar para acceder a una palabra o doble palabra (error de alineamiento). Illegal instruction: se produce cuando se intenta ejecutar un c odigo de instrucci on inexistente. Si el programa se ha ensamblado correctamente se suele producir cuando se pretende ejecutar datos. Privilege violation: se produce cuando se intenta ejecutar en modo usuario una instrucci on privilegiada. Una buena pr actica consiste en instalar manejadores para estas excepciones. El programa de la gura B.1 instala estos manejadores y genera una excepci on de error de direcci on. El manejador de instrucci on ilegal se ha instalado tambi en en las entradas de la tabla de vectores (v ease la gura 1.5) correspondientes a las instrucciones para los coprocesadores, ya que el computador simulado carece de ellos. Los manejadores se limitan a una instrucci on BREAK que detiene el procesador simulado y una instrucci on NOP cuyo prop osito es servir de separador. De esta forma si se produce cualquiera de las excepciones manejadas se detiene el simulador y el PC se nalar a a la instrucci on siguiente a BREAK del manejador correspondiente.

88 ORG DC.L DC.L $0 $8000 START

Pr actica de EntradaSalida (20122013)

Stack pointer value after a reset Program counter value after a reset

ORG START MOVE.L MOVE.L MOVE.L MOVE.L MOVE.L MOVE.L LEA ADDQ.L CLR.W ORG DS.W

$2000 #BUS_ERROR,8 #ADDRESS_ER,12 #ILLEGAL_IN,16 #PRIV_VIOLT,32 #ILLEGAL_IN,40 #ILLEGAL_IN,44 EVEN,A0 #1,A0 (A0) $3000 1

Start at location 2000 Hex Install Install Install Install Install Install bus error handler address error handler illegal instructuion handler privilege violation handler illegal instruction handler illegal instruction handler

Generate an address error exception

EVEN

Reserve one word for even Bus error handler Address error handler Illegal instruction handler Privilege violation handler

BUS_ERROR:

BREAK NOP ADDRESS_ER: BREAK NOP ILLEGAL_IN: BREAK NOP PRIV_VIOLT: BREAK NOP

Figura B.1: Programa con c odigo para el manejo de excepciones

B.1.

Identicaci on la instrucci on que provoc o la excepci on

En el programa anterior resulta muy f acil identicar la instrucci on que provoc o la excepci on. Sin embargo en un programa m as complejo esto no resulta tan obvio. La soluci on es bastante f acil: basta con indagar en el marco de pila que cre o la secuencia de procesamiento de la excepci on. El formato del marco de pila para todas las excepciones excepto los errores de bus y direcci on se muestra en la gura B.2. En este marco de pila se almacena el PC que apuntar a a la instrucci on que provoc o la excepci on. Si se tratase de una interrupci on el PC apuntar a a la siguiente instrucci on. El porqu e de esta diferencia es clara, el procesador espera a que se complete la instrucci on para reconocer una interrupci on, sin embargo si se trata de una excepci on no se puede proceder a la ejecuci on de la instrucci on. El caso m as claro es quiz as el de una instrucci on ilegal, es obvio que el procesador no puede ejecutarla.

B. Depuraci on de fallos que se maniesten como excepciones en el procesador MC68000 89


Status register Program counter +2 +4 SSP

Figura B.2: Marco de pila de procesamiento de excepci on

El formato del marco de pila para las excepciones de errores de bus y direcci on se muestra en la gura B.3.
Additional word Access address Instruction register Status register Program counter +2 +4 +6 +8 +10 +12 SSP

Figura B.3: Marco de pila de procesamiento de las excepciones de bus y address error En este marco de pila se almacena mucha m as informaci on para identicar claramente cuando se produjo la excepci on. T engase en cuenta que la ejecuci on de una instrucci on puede suponer varios accesos a memoria. As se salva el PC y el SR como en el caso anterior pero adem as el contenido del registro de instrucci on, la direcci on que provoc o la excepci on y una palabra adicional donde se indica, entre otras cosas, si el ciclo de bus era de lectura o escritura. Desafortunadamente, el simulador falla y el campo correspondiente a la direcci on que provoc o la excepci on siempre est a a cero. En cualquier caso, la informaci on restante es suciente para identicar el problema.

B.2.

Ejemplo

Para ilustrar el procedimiento utilizaremos el programa de la gura B.1. Si ejecutamos dicho programa obtendremos los datos en la ventana de manejo del simulador que se muestran en la gura B.4. La zona de traza nos muestra un mensaje diciendo que la ejecuci on del programa se ha detenido al alcanzar una instrucci on BREAK. Si se echa un vistazo a la ventana de listado de programa (gura B.5), se observa que el PC apunta a la instrucci on siguiente de la instrucci on BREAK del manejador de la excepci on de error de direcci on (ADDRESS_ER). Lo que ha ocurrido es que se ha producido una excepci on de error de direcci on, se ha ejecutado el manejador correspondiente y se ha alcanzado la instrucci on BREAK que contiene dicho manejador. Para obtener informaci on de d onde se ha producido dicha excepci on, se puede indagar en el

90

Pr actica de EntradaSalida (20122013)

Figura B.4: Ventana del simulador

correspondiente marco de pila. En la ventana de manejo del simulador se muestra el contenido del puntero de pila de supervisor A7. Por lo tanto, se puede mostrar el correspondiente marco de pila mediante la ventana de listado de posiciones de memoria. El resultado se reeja en la gura B.6. El contenido de la posici on apuntada por A7= 007ff2 y las 14 siguientes posiciones de memoria se corresponden con el marco de pila de procesamiento de la excepci on de error de direcci on que se muestra en la gura B.3. Additional word (00 09): El bit 5 a 1 indica que se abort o un ciclo de lectura, si estuviese a 0 se tratar a de un ciclo de escritura. Access address (00 00 00 00): Un fallo en el simulador provoca que sea siempre cero. Instruction register (42 50): Contiene el c odigo de operaci on de la instrucci on que provoc o la excepci on (CLR.W (A0)) Status register (27 04): Indica que se encontraba en modo supervisor, con las interrupciones inhibidas y el ag Z a 1. Program counter (00 00 20 3a): Apunta a la instrucci on que provoc o la excepci on m as dos, ya que el contador de programa se incrementa durante la ejecuci on de instrucciones. Estos datos son m as que sucientes para identicar la instrucci on que provoc o la excepci on y a partir de aqu identicar el fallo del programa. Por u ltimo, n otese que el hecho de que la direcci on accedida est e siempre a cero no impide determinarla, puesto que se conoce el contenido de los registros. En este caso es obvio

B. Depuraci on de fallos que se maniesten como excepciones en el procesador MC68000 91

Figura B.5: Ventana de listado del programa

Figura B.6: Contenido del marco de pila para la excepci on Address Error

determinar que esa direcci on es 3001 pero en otros casos con un modo de direccionamiento m as complejo se necesitar a trabajo extra.