Universidad Rey Juan Carlos ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES Repertorio de instrucciones y modos de direccionamiento en el MC68000 Luis Rincón Córcoles Licesio J. Rodríguez-Aragón Repertorio de instrucciones y modos de direccionamiento en el MC68000 Programa 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Introducción. Modos de direccionamiento en el MC68000. Direccionamiento directo a registro de datos. Direccionamiento directo a registro de direcciones. Direccionamiento indirecto a registro de direcciones. Direccionamiento indirecto a registro de direcciones con posincremento. Direccionamiento indirecto a registro de direcciones con predecremento. Direccionamiento indirecto a registro de direcciones con desplazamiento. Direccionamiento indirecto a registro de direcciones con desplazamiento e índice. Direccionamiento absoluto corto. Direccionamiento absoluto largo. Direccionamiento relativo a PC con desplazamiento. Direccionamiento relativo a PC con desplazamiento e índice. Direccionamiento inmediato. Direccionamiento implícito. Clasificación de los modos de direccionamiento. 2 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Programa 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Tipos de instrucciones en el MC68000 Instrucciones de transferencia de datos. Instrucciones aritméticas para enteros. Instrucciones lógicas. Instrucciones de rotación y desplazamiento. Instrucciones de manipulación de bits. Instrucciones para datos en BCD. Instrucciones de control de programa. Instrucciones de control de sistema. Las instrucciones y el CCR. Formatos de instrucción. Tiempos de ejecución de las instrucciones. 3 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Bibliografía  M68000 8/16/32 Bit Microprocessors User’s Manual. 9th edition. Motorola, 1993.  Motorola M68000 Family Programmer’s Reference Manual. Motorola, 1992.  A. CLEMENTS. Microprocessor Systems Design. 3rd edition, ITP - PWS Publishing Company, 1997.  J. SEPTIÉN, H. MECHA, R. MORENO, K. OLCOZ. La familia del MC68000. Síntesis, 1995.  C. CERRADA, V. FELIU. Estructura y Tecnología de Computadores I. UNED, 1993 4 Repertorio de instrucciones y modos de direccionamiento en el MC68000 1. Introducción  El MC68000 es un microprocesador CISC.  El repertorio de instrucciones del MC68000 se diseñó para ser implementado mediante una unidad de control microprogramada.  El MC68000 presenta una amplia variedad de modos de direccionamiento y de códigos de operación.  Cuando se diseñó el MC68000, la mayoría de los programadores trabajaban con lenguajes de alto nivel, pero se programaban manualmente en ensamblador muchas tareas de bajo nivel.  Las instrucciones de máquina del MC68000 tienen longitudes variadas, que van desde los 2 hasta los 10 octetos, dependiendo del código de operación y de los modos de direccionamiento de los operandos utilizados.  En este tema vamos a revisar: • • • • El repertorio de instrucciones del MC68000. Los modos de direccionamiento del MC68000. Los formatos de instrucción del MC68000. Las duraciones de las instrucciones del MC68000. 5 Repertorio de instrucciones y modos de direccionamiento en el MC68000 2. Modos de direccionamiento en el MC68000  Direccionamiento directo a registro • A registro de datos. • A registro de direcciones.  Direccionamiento indirecto • A registro de direcciones. • A registro de direcciones con predecremento. • A registro de direcciones con posincremento. • A registro de direcciones con desplazamiento. • A registro de direcciones con desplazamiento e índice. Direccionamiento directo absoluto: • Absoluto corto. • Absoluto largo.  Direccionamiento relativo a PC. • Con desplazamiento. • Con desplazamiento e índice.  Direccionamiento inmediato. 6 Repertorio de instrucciones y modos de direccionamiento en el MC68000 3. Direccionamiento directo a registro de datos  Subcampos: • Modo: 000 • Registro: número del registro de datos (3 bits)  Tamaños: .B, .W, .L  Permitido para operando fuente o destino. OW Modo Reg 000 n Dn  Notación: Dn Ejemplo: NEG.W D4 7 Repertorio de instrucciones y modos de direccionamiento en el MC68000 4. Direccionamiento directo a registro de direcciones  Subcampos: • Modo: 001 • Registro: número del registro de direcciones (3 bits)  Tamaños: .W, .L  Permitido para operando fuente o destino. OW Modo Reg 001 n An  Restricción: si se usa como operando destino en modo .W, se hace extensión de signo a 32 bits.  Notación: An Ejemplo: MOVEA.W D4,A5 8 Repertorio de instrucciones y modos de direccionamiento en el MC68000 5. Direccionamiento indirecto a registro de direcciones  Subcampos: • Modo: 010 • Registro: número del registro de direcciones (3 bits)  Tamaños: .B, .W, .L  Permitido para operando fuente o destino. OW Modo Reg 010 n Memoria An  Notación: (An) Ejemplo: MOVE.W D4,(A5) 9 Repertorio de instrucciones y modos de direccionamiento en el MC68000 6. Direccionamiento indirecto a registro de direcciones con posincremento  Subcampos: • Modo: 011 • Registro: número del registro de direcciones (3 bits)  Tamaños: .B, .W, .L  Permitido para operando fuente o destino. OW Modo Reg 011 n Memoria An  Notación: (An)+ Ejemplo: MOVE.W D4,(A5)+ +1 si .B +2 si .W +4 si .L El contenido del registro de direcciones se incrementa en 1, 2 ó 4 según el tamaño del dato accedido después del acceso. 10 Repertorio de instrucciones y modos de direccionamiento en el MC68000 7. Direccionamiento indirecto a registro de direcciones con predecremento  Subcampos: • Modo: 100 • Registro: número del registro de direcciones (3 bits)  Tamaños: .B, .W, .L  Permitido para operando fuente o destino. OW Modo Reg 100 n Memoria An -1 si .B -2 si .W -4 si .L  Notación: -(An) Ejemplo: MOVE.W D4,-(A5) El contenido del registro de direcciones se decrementa en 1, 2 ó 4 según el tamaño del dato accedido antes del acceso. 11 Repertorio de instrucciones y modos de direccionamiento en el MC68000 8. Direccionamiento indirecto a registro de direcciones con desplazamiento  Subcampos: • Modo: 101 • Registro: número del registro de direcciones (3 bits) • CD: desplazamiento de 16 bits (que se extiende en signo a 32 bits)  Tamaños: .B, .W, .L  Permitido para operando fuente o destino. OW EW Modo Reg 101 n Memoria CD (desplazamiento 16 bits) An Extensión de signo (de 16 a 32 bits) +  Notación: desp(An) Ejemplo: MOVE.W D4,8(A5) 12 Repertorio de instrucciones y modos de direccionamiento en el MC68000 9. Direccionamiento indirecto a registro de direcciones con desplazamiento e índice  Subcampos: • Modo: 110 • Registro: número del registro de direcciones (3 bits) • T=D/A ⇒ si T=D(0), Xm=Dm; si T=A(1), Xm=Am • Registro2 (m): número del registro índice Xm (3 bits) • S=W/L ⇒ si S=W(0), Xm.W; si S=L(1), Xm.L • CD: desplazamiento de 8 bits (que se extiende en signo a 32 bits)  Tamaños: .B, .W, .L  Permitido para operando fuente o destino. OW EW T m S 000 Modo Reg 110 n Memoria CD (8 bits) An Extensión de signo (de 8 a 32 bits) + Xm Si S=W, extensión de signo de 16 a 32 bits  Notación: desp(An,Xm.S) Ejemplo: MOVE.W D4,8(A5,D3.L) 13 Repertorio de instrucciones y modos de direccionamiento en el MC68000 10. Direccionamiento absoluto corto  Subcampos: • Modo: 111 • Registro: 000 • CD: 16 bits (que se extienden en signo para formar una dirección de 32 bits)  Tamaños: .B, .W, .L  Permitido para operando fuente o destino. OW EW Modo Reg 111 000 Memoria CD (desplazamiento 16 bits) Extensión de signo (de 16 a 32 bits)  Notación: direccion Ejemplo: MOVE.W D4,$1234 14 Repertorio de instrucciones y modos de direccionamiento en el MC68000 11. Direccionamiento absoluto largo  Subcampos: • Modo: 111 • Registro: 001 • CD: 32 bits  Tamaños: .B, .W, .L  Permitido para operando fuente o destino. Modo Reg 111 001 OW EW1 EW2 00000000 Memoria b23 ... b16 b15 ... b0 Concatenación de las dos palabras de extensión  Notación: direccion Ejemplo: MOVE.W D4,500000 15 Repertorio de instrucciones y modos de direccionamiento en el MC68000 12. Direccionamiento relativo a PC con desplazamiento  Subcampos: • Modo: 111 • Registro: 010 • CD: desplazamiento de 16 bits (que se extiende en signo a 32 bits)  Tamaños: .B, .W, .L  Permitido únicamente para operando fuente. OW EW Modo Reg 111 010 PC Memoria CD (desplazamiento 16 bits) Extensión de signo (de 16 a 32 bits) +  Notación: desp(PC) Ejemplo: MOVE.W 8(PC),D4 16 Repertorio de instrucciones y modos de direccionamiento en el MC68000 13. Direccionamiento relativo a PC con desplazamiento e índice  Subcampos: • Modo: 111 • Registro: 011 • T=D/A ⇒ si T=D(0), Xm=Dm; si T=A(1), Xm=Am • Registro2 (m): número del registro índice Xm (3 bits) • S=W/L ⇒ si S=W(0), Xm.W; si S=L(1), Xm.L • CD: desplazamiento de 8 bits (que se extiende en signo a 32 bits)  Tamaños: .B, .W, .L  Permitido únicamente para operando fuente. Modo Reg 111 011 OW EW T m S 000 PC Memoria CD (8 bits) Extensión de signo (de 8 a 32 bits) + Xm Si S=W, extensión de signo de 16 a 32 bits  Notación: desp(PC,Xm.S) Ejemplo: MOVE.W 8(PC,D3.L),D4 17 Repertorio de instrucciones y modos de direccionamiento en el MC68000 14. Direccionamiento inmediato  Subcampos: • Modo: 111 • Registro: 100 • CD: 16 ó 32 bits en palabras de extensión.  Tamaños: .B, .W, .L  Permitido únicamente para operando fuente.  Inmediato de 16 bits  Inmediato de 8 bits OW EW Modo Reg 111 100 00000000 b7 ... b0  Inmediato de 32 bits OW Modo Reg 111 100 EW1 b31 ... b16 EW2 b15 ... b0 OW EW Modo Reg 111 100 b15 ... b0  Notación: #dato Ejemplo: MOVE.B #8,D4 18 Repertorio de instrucciones y modos de direccionamiento en el MC68000 15. Direccionamiento implícito  Un operando tiene direccionamiento implícito cuando está determinado por el código de operación.  Los operandos con direccionamiento implícito no llevan campo de Modo, y a veces ni tan siquiera llevan campo de Registro.  Algunos ejemplos: • Las instrucciones ADD, SUB, AND, OR y otras llevan al menos un operando en un registro de datos (no llevan campo Modo en el mismo). • Las instrucciones ADDQ y SUBQ llevan un operando inmediato que ocupa 3 bits y que puede valer entre 1 y 8 (sin campo Modo). • La instrucción MOVEQ lleva un operando inmediato de 8 bits que puede valer entre –128 y +127 (sin campo Modo). • Las instrucciones BSR y JSR tienen como operandos implícitos –(SP) y PC (sin campos Modo ni Registro). • La instrucción RTS tiene como operandos implícitos (SP)+ y PC (sin campos Modo ni Registro). 19 Repertorio de instrucciones y modos de direccionamiento en el MC68000 16. Clasificación de los direccionamientos Inmediato d(PC,Xm) d(PC) Abs.L Abs.W d(An,Xm) d(An) -(An) (An)+ (An) An Dn ea = Cualquier dirección efectiva ea * * * * * * * * * * * * rea = Dirección efectiva de un REGISTRO rea * * dea = Dirección efectiva de DATOS dea * * * * * * * * * * * mea * * * * * * * * * * cea * * * * * * * * mea = Dirección efectiva de MEMORIA cea = Dirección efectiva de CONTROL aea = Dirección efectiva ALTERABLE adea = Dirección efectiva ALTERABLE de DATOS aea * * * * * * * * * amea = Dirección efectiva ALTERABLE de MEMORIA adea * acea = Dirección efectiva ALTERABLE de CONTROL * * * * * * * amea * * * * * * * acea * * * * * 20 Repertorio de instrucciones y modos de direccionamiento en el MC68000 17. Tipos de instrucciones en el MC68000  Instrucciones de transferencia de datos.  Instrucciones aritméticas para enteros.  Instrucciones lógicas.  Instrucciones de rotación y desplazamiento.  Instrucciones de manipulación de bits.  Instrucciones para datos en BCD.  Instrucciones de control de programa.  Instrucciones de control de sistema. 21 Repertorio de instrucciones y modos de direccionamiento en el MC68000 18. Instrucciones de transferencia de datos Nemónico ---------EXG LEA LINK MOVE MOVEA MOVEM MOVEP MOVEQ Direccionamiento -----------------Rm,Rn <cea>,An An,#<d16> <ea>,<adea> <ea>,An <lista-reg>,<acea>+ <lista-reg>,-(An) <lista-reg>,(An)+ <cea>+,<lista-reg> (An)+,<lista-reg> Dn,d(An) o d(An),Dn #<d8>,Dn PEA SWAP UNLK <cea> Dn An Long. operando ---------------L L Sin longitud L,W,{B} L,W L,W Descripción ------------------------Rm <--> Rn An=<ea> -(SP)=An;An=SP;SP=SP+d16 Dest=Fnte Dest=Fnte Dest=lista-reg X N Z V C --------- - - - - - - - - - - - - * * 0 0 - - - - - - - - - L,W lista-reg=Fnte L,W L(extensión de signo a 32 bits) L W Sin longitud Dest=Fnte Dest=d8 - - - - - * * 0 0 -(SP)=<ea> Dn[31:16] <--> Dn[15:0] SP=An;An=(SP)+ - - - - - * * 0 0 - - - - - 22 Repertorio de instrucciones y modos de direccionamiento en el MC68000 19. Instrucciones aritméticas para enteros Nemónico ---------ADD ADDA ADDI ADDQ ADDX CLR CMP CMPA CMPI CMPM DIVS/DIVU Direccionamiento -----------------<ea>,Dn o Dn,<amea> <ea>,An #<datos>,<adea> #<d3>,<aea> Dm,Dn o -(Am),-(An) <adea> <ea>,Dn <ea>,An #<dato>,<adea> (Am)+,(An)+ <dea>,Dn Long. operando ---------------L,W,B L,W L,W,B L,W,{B} L,W,B L,W,B L,W,{B} L,W L,W,B L,W,B W EXT MULS/MULU NEG NEGX SUB SUBA SUBI SUBQ SUBX TAS TST Dn <dea>,Dn <adea> <adea> <ea>,Dn o Dn,<amea> <ea>,An #<datos>,<adea> #<d3>,<aea> Dm,Dn o -(Am),-(An) <adea> <adea> L,W W L,W,B L,W,B L,W,B L,W L,W,B L,W,{B} L,W,B B L,W,B Descripción ------------------------Dest=Fnte+Dest Dest=Fnte+Dest Dest=dato+Dest Dest=d3+Dest Dest=Fnte+Dest+X Dest=0 Dest-Fnte;activa CCR Dest-Fnte;activa CCR Dest-dato;activa CCR Dest-Fnte;activa CCR Dest=Dest/Fnte; (inferior=cociente; palabra superior=Rem) Dn=Dn/signo-extendido Dest=Fnte*Dest Dest=0-Dest Dest=0-Dest-X Dest=Dest-Fnte Dest=Dest-Fnte Dest=Dest-dato Dest=Dest-d3 Dest=Dest-Fnte-X CCR=Test Dest;Dest[bit7]=1 CCR=Test Dest X N Z V C --------* * * * * - - - - * * * * * * * * * * * * * * * - 0 1 0 0 - * * * * - * * * * - * * * * - * * * * - * * * 0 * * * * * * - * * * * * * * * * * * * * * * * * * * * 0 0 * * * * * * 0 0 0 0 * * * * * * 0 0 23 Repertorio de instrucciones y modos de direccionamiento en el MC68000 20. Instrucciones lógicas Nemónico ---------AND ANDI EOR EORI NOT OR ORI Direccionamiento -----------------<dea>,Dn o Dn,<amea> #<datos>,<adea> Dn,<adea> #<datos>,<adea> <adea> <dea>,Dn o Dn,<amea> #<datos>,<adea> Long. operando ---------------L,W,B L,W,B L,W,B L,W,B L,W,B L,W,B L,W,B Descripción ------------------------Dest=Fnte AND Dest Dest=datos AND Dest Dest=Fnte OR-EX Dest Dest=dato OR-EX Dest Dest=INV(Dest) Dest=Fnte OR Dest Dest=datos OR Dest X N Z V C --------- * * 0 0 - * * 0 0 - * * 0 0 - * * 0 0 - * * 0 0 - * * 0 0 - * * 0 0 24 Repertorio de instrucciones y modos de direccionamiento en el MC68000 21. Instrucciones de rotación y desplazamiento Nemónico ---------ASL/ASR ASL/ASR LSL/LSR LSL/LSR ROL/ROR ROL/ROR ROXL/ROXR ROXL/ROXR Direccionamiento -----------------Dm,Dn o #<d3>,Dn <amea> Dm,Dn o #<d3>,Dn <amea> Dm,Dn o #<d3>,Dn <amea> Dm,Dn o #<d3>,Dn <amea> Long. operando ---------------L,W,B (Dm mod 64) W L,W,B (Dm mod 64) W L,W,B (Dm mod 64) W L,W,B (Dm mod 64) W Descripción ------------------------Desplaza (arit.) n veces Desplaza (arit.) 1 bit Desplaza (log.) n veces Desplaza (log.) 1 bit Rota n veces Rota 1 bit Rota con extensión n veces Rota con extensión 1 bit X N Z V C --------* * * * * * * * * * * * * 0 * * * * 0 * - * * 0 * - * * 0 * * * * 0 * * * * 0 * 25 Repertorio de instrucciones y modos de direccionamiento en el MC68000 22. Instrucciones de manipulación de bits Nemónico ---------BCHG BCLR BSET BTST BTST Direccionamiento -----------------Dm,Dn o #<d3>,<amea> o Dm,<amea> o #<d5>,Dn Dm,Dn o #<d3>,<amea> o Dm,<amea> o #<d5>,Dn Dm,Dn o #<d3>,<amea> o Dm,<amea> o #<d5>,Dn Dm,Dn o #<d5>,Dn Dm,<mea> o Long. operando ---------------L (Dm mod 32) L (Dm mod 32) L (Dm mod 32) L (Dm mod 32) B (Dm mod 8) Descripción ------------------------Z=INV(Dest[bit]); Dest[bit]=INV(Dest[bit]) Z=INV(Dest[bit]); Dest[bit]=0 Z=INV(Dest[bit]); Dest[bit]=1 Z=INV(Dest[bit]) Z=INV(Dest[bit]) X N Z V C --------- - * - - - * - - - * - - - * - - - * - - 26 Repertorio de instrucciones y modos de direccionamiento en el MC68000 23. Instrucciones para datos en BCD Nemónico ---------ABCD NBCD SBCD Direccionamiento -----------------Dm,Dn o -(Am),-(An) <adea> Dm,Dn o -(Am),-(An) Long. operando ---------------B B B Descripción ------------------------Dest=Fnte+Dest+X Dest=0-Dest-X Dest=Fnte-Dest-X X N Z V C --------* ? * ? * * ? * ? * * ? * ? * 27 Repertorio de instrucciones y modos de direccionamiento en el MC68000 24. Instrucciones de control de programa Nemónico ---------Bcc Bcc.S DBcc Direccionamiento -----------------<etiqueta> <etiqueta> Dm,<etiqueta> Scc <adea> BRA BSR JMP JSR RTR RTS NOP Long. operando ---------------Desp. de 16 bits Desp. de 8 bits Desp. de 16 bits <etiqueta> <etiqueta> <cea> <cea> Sin operando Sin operando Descripción ------------------------IF cc THEN PC=PC+Desp IF cc THEN PC=PC+Desp IF NOT cc THEN Dm=Dm-1 IF Dm<>-1 THEN PC=PC+Desp ELSE PC=PC+2 B IF cc THEN Dest=$FF ELSE Dest=$00 Desp. de 8/16 bits PC=PC+Desp Desp. de 8/16 bits -(SP)=PC;PC=PC+Desp Sin longitud PC=Dest Sin longitud -(SP)=PC;PC=Dest Sin longitud CCR=(SP)+;PC=(SP)+ Sin longitud PC=(SP)+ * - Sin operandos Sin longitud - - - - - PC=PC+2 X N Z V C --------- - - - - - - - - - - - - - - - - * - * - * - * - 28 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Condiciones en el MC68000 Nemotécnico Codificación Expresión booleana Cierto Condición T (true) 0000 1 ST , BRA, DBT Falso F (false) 0001 0 SF, DBF, DBRA HI (higher) 0010 ¬C·¬Z SHI, BHI, DBHI SLS, BLS, DBLS Mayor que sin signo LS (lower or same) 0011 C+Z CC ó HS (carry clear, higher or same) 0100 ¬C SCC, SHS, BCC, BHS, DBCC, DBHS CS ó LO (carry set, lower) 0101 C SCS, SLO, BCS, BLO, DBCS, DBLO NE (not equal) 0110 ¬Z SNE, BNE, DBNE EQ (equal) 0111 Z SEQ, BEQ, DBEQ VC (overflow clear) 1000 ¬V SVC, BVC, DBVC VS (overflow set) 1001 V SVS, BVS, DBVS Menor o igual que sin signo Mayor o igual (no desbordamiento) sin signo Menor (desbordamiento) sin signo Instrucciones Distinto de Igual a No desbordamiento con signo Desbordamiento con signo PL (plus) 1010 ¬N SPL, BPL, DBPL MI (minus) 1011 N SMI, BMI, DBMI GE (greater or equal than) 1100 N·V + ¬N·¬V SGE, BGE, DBGE Menor que con signo LT (less than) 1101 N·¬V + ¬N·V SLT, BLT, DBLT Mayor que con signo GT (greater than) 1110 N·V·¬Z + ¬N·¬V·¬Z SGT, BGT, DBGT LE (less or equal than) 1111 Z + N·¬V + ¬N·V SLE, BLE, DBLE Positivo ó 0 con signo Negativo con signo Mayor o igual que con signo Menor o igual que con signo 29 Repertorio de instrucciones y modos de direccionamiento en el MC68000 25. Instrucciones de control de sistema  Instrucciones no privilegiadas Nemónico ---------ANDI EORI MOVE MOVE MOVE ORI CHK Direccionamiento -----------------#<d8>,CCR #<d8>,CCR <dea>,CCR CCR,<adea> SR,<adea> #<d8>,CCR <dea>,Dn ILLEGAL Sin operando TRAPV TRAP Sin operando #<d4> Long. operando ---------------B B W (pal. mas baja) W (pal. más baja) W B W Sin longitud Sin longitud Descripción ------------------------CCR=d8 AND CCR CCR=d8 OR-EX CCR CCR=Fnte Dest=CCR Dest=SR CCR=d8 OR CCR IF Dn<0 OR Dn>Dest THEN TRAP -(SSP)=PC;-(SSP)=SR; PC=Vector #4 IF V=1 THEN TRAP -(SSP)=PC;-(SSP)=SR; PC=Vector #d4 X N Z V C --------* * * * * * * * * * * * * * * - - - - - - - - * * * * * - * ? ? ? - - - - - - - - - - - - - La instrucción TRAP admite 16 vectores distintos, TRAP #0 hasta TRAP #15 30 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Instrucciones de control de sistema  Instrucciones privilegiadas Nemónico ---------ANDI Direccionamiento -----------------#<d16>,SR Long. operando ---------------W EORI #<d16>,SR W MOVE <dea>,SR W MOVE USP,An o An,USP L ORI #<d16>,SR W RESET Sin operandos Sin longitud RTE Sin operandos Sin longitud STOP #<d16> Sin longitud Descripción X N Z V C --------------------------------IF S=0 THEN TRAP * * * * * ELSE SR=Fnte AND SR IF S=0 THEN TRAP * * * * * ELSE SR=Fnte OR-EX SR IF S=0 THEN TRAP * * * * * ELSE SR=Fnte IF S=0 THEN TRAP - - - - ELSE DEST=Fnte IF S=0 THEN TRAP * * * * * ELSE SR=Fnte OR SR IF S=0 THEN TRAP - - - - ELSE reinicia dispositivo IF S=0 THEN TRAP * * * * * ELSE SR=(SP)+;PC=(SP)+ IF S=0 THEN TRAP * * * * * ELSE SR=d16;PC=PC+4; pausa hasta excepción 31 Repertorio de instrucciones y modos de direccionamiento en el MC68000 26. Las instrucciones y el CCR 32 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Las instrucciones y el CCR 33 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Resumen: las instrucciones y el CCR 34 Repertorio de instrucciones y modos de direccionamiento en el MC68000 27. Formatos de instrucción  Instrucciones sin operandos OW  Instrucciones con 1 operando (el primer formato puede requerir palabras de extensión) OW Tam Modo Reg XX XXX XXX Cod_op 00: .B Tam 01: .W 10: .L Reg OW Cod_op XXX  Instrucciones de bifurcación condicional OW CO Cond Desplazamiento XXXX XXXXXXXX 35 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Formatos de instrucción  Instrucciones con dos operandos con formato corto (tienen un operando fuente con direccionamiento inmediato implícito, sin campo Modo; el segundo formato puede requerir palabra de extensión para el operando destino) OW CO Reg Dato XXX 0 XXX EA destino Dato OW CO XXX CO Modo Reg XXX XXX  Instrucciones con 2 operandos (los dos primeros formatos pueden requerir palabras de extensión) EA destino Tam OW EA fuente Reg Modo Modo Reg CO XX XXX XXX XXX XXX EA f/d OW OW CO CO Reg Modo_op Modo Reg XXX XXX XXX XXX Reg Modo_op Reg XXX XXXXXX XXX 01: .B Tam 10: .W 11: .L Byte Modo_op 000 100 Palabra 001 101 Larga 010 110 Operación registro OP EA → registro EA OP registro → EA 36 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Codificación de los modos de direccionamiento Modo de direccionamiento Notación Modo Registro Directo a registro de datos Dn 000 Número de registro (Dn) Directo a registro de direcciones An 001 Número de registro (An) Indirecto a registro (An) 010 Número de registro (An) Indirecto a registro con posincremento (An)+ 011 Número de registro (An) Indirecto a registro con predecremento -(An) 100 Número de registro (An) Indirecto a registro con desplazamiento d(An) 101 Número de registro (An) d(An,Xm) 110 Número de registro (An) Absoluto corto XXX16 111 000 Absoluto largo XXX32 111 001 Relativo a PC con desplazamiento d(PC) 111 010 d(PC,Xm) 111 011 XXXt 111 100 Indirecto a registro con desplazamiento e índice Relativo a PC con desplazamiento e índice Inmediato 37 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Palabras de extensión  Será preciso añadir palabras de extensión cuando en la palabra de operación no quepa la información necesaria para identificar completamente a los operandos de la instrucción. Instrucción en la que el primer operando requiere palabras de extensión Instrucción en la que el segundo operando requiere palabras de extensión Palabra de operación Palabra de operación Palabra(s) de extensión del primer operando Palabra(s) de extensión del segundo operando Instrucción en la que ambos operandos requieren palabras de extensión Palabra de operación Palabra(s) de extensión del primer operando Palabra(s) de extensión del segundo operando  Máximo tamaño de una instrucción: 10 octetos. 38 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Palabras de extensión  Será preciso añadir palabras de extensión “normales” en los siguientes casos: • Desplazamiento de 16 bits cuando el operando está referenciado mediante: Direccionamiento indirecto a registro de direcciones con desplazamiento. Direccionamiento relativo a PC con desplazamiento. • Dirección absoluta de 16 bits cuando el operando está referenciado mediante: Direccionamiento absoluto corto. • Dirección absoluta de 32 bits cuando el operando está referenciado mediante: Direccionamiento absoluto largo. • Dato inmediato de 16 bits cuando el operando fuente está referenciado mediante: Direccionamiento inmediato tamaño byte o palabra. • Dato inmediato de 32 bits cuando el operando fuente está referenciado mediante: Direccionamiento inmediato tamaño palabra larga. 39 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Palabras de extensión  Será preciso añadir palabras de extensión con índice cuando alguno de los operandos esté referenciado mediante uno de los siguientes direccionamientos: • Indirecto a registro de direcciones con desplazamiento e índice. • Relativo a PC con desplazamiento e índice. EW T m S 000 CD (8 bits)  T=D/A indica si el índice es un registro de datos o direcciones. • Si T=0, es un registro de datos • Si T=1 es un registro de direcciones.  Registro2 (m): número del registro índice Xm (3 bits)  S=W/L indica si el índice se usa en modo palabra o palabra larga. • Si S=0, el índice es un registro en modo palabra. • Si S=1, el índice es un registro en modo palabra larga.  CD: desplazamiento de 8 bits 40 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Palabras de extensión  La lista de registros en la instrucción MOVEM requiere la siguiente palabra de extensión: A7 A6 A5 A4 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0 Si el registro An o Dn se encuentra en la lista, el correspondiente bit está a 1.  Cuando estamos en el caso de MOVEM.t <lista-reg>,-(An) la palabra de extensión es: D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7  En ambos casos, en primer lugar va el bit correspondiente al registro que se transfiere en primer lugar.  En memoria los registros quedan almacenados en el siguiente orden: • Los registros de datos de menor a mayor quedan en posiciones más bajas. • Los registros de direcciones de menor a mayor quedan en posiciones más altas. 41 Repertorio de instrucciones y modos de direccionamiento en el MC68000 28. Tiempos de ejecución de las instrucciones  Como el MC68000 es un procesador CISC, tiene instrucciones muy diversas con diferentes duraciones.  En las transparencias siguientes se presentan las duraciones de las instrucciones del MC68000, incluyendo los ciclos de bus.  Los datos se expresan con la notación n(r/w) donde: • n: número total de ciclos de reloj. • r: número de operaciones de lectura. • w: número de operaciones de escritura. donde n incluye los tiempos de lectura de la instrucción y las lecturas y escrituras de los operandos.  Se asume que cada operación de lectura o escritura en memoria consume cuatro ciclos de reloj. 42 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Tiempo de cálculo de la dirección efectiva  En ocasiones hay que sumar este tiempo al indicado en las tablas. 43 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Tiempo de instrucciones de transferencia de byte o palabra 44 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Tiempo de instrucciones de transferencia de palabra larga 45 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Tiempo de instrucciones con operando único 46 Repertorio de instrucciones y modos de direccionamiento en el MC68000 Ejemplos:  Tiempo de instrucción de transferencia de palabra: MOVE.W D1,A3 → 4 Ciclos de reloj (1 lectura / 0 escritura) MOVE.W D1,$1000 → 12 Ciclos de reloj (2 lectura / 1 escritura) ÂTiempo de instrucción de operando único: NEG.L D3 → 6 Ciclos de reloj (1 lectura / 0 escritura) NEG.L 500000 → 12 Ciclos (1 / 2) + 16 Ciclos (4 / 0) de cálculo de dirección efectiva Las tablas completas de Tiempo de Instrucciones se pueden consultar en el Manual del Microprocesador. 47