7. Modos de direccionamiento

7. Modos de direccionamiento El MC68000 permite 12 modos de direccionamiento para localizar a los operandos. Podemos dividir los modos de direccionami

3 downloads 306 Views 993KB Size

Story Transcript

7. Modos de direccionamiento El MC68000 permite 12 modos de direccionamiento para localizar a los operandos. Podemos dividir los modos de direccionamiento en 5 grupos:  Directo de registro : el operando es el dato contenido en un registro de datos o de 



direcciones. Incluye: directo de registro de datos y directo de registro de  direcciones. Indirecto de registro: El operando se encuentra en memoria y es necesario obtener su 



dirección a partir de un registro de direcciones. Incluye: Indirecto de registro, indirecto  de registro con postincremento, indirecto de registro con predecremento,  indirecto de registro con desplazamiento e indirecto de registro indexado con  desplazamiento. Absoluto: el operando está en memoria y se da su dirección explicitamente. Incluye: 



absoluto largo y absoluto corto. Relativo al contador del programa: La dirección del operando es relativa al contenido 



del PC. Incluye: relativo al PC con desplazamiento y relativo al PC indexado con  desplazamiento.  Inmediato: El operando se expresa de forma explícita.  



1

7. Modos de direccionamiento Directo de Registro Datos: El operando está en el registro de datos especificado por la dirección efectiva. • Sintáxis: MNEMÓNICO.N

Dn,OPERANDO_DESTINO

Ejemplo:

 

2

7. Modos de direccionamiento Directo de Registro Direcciones: El operando está en el registro de direcciones especificado por la instrucción. • Sintáxis: MNEMÓNICO.N

An,OPERANDO_DESTINO

Ejemplo:

 

3

7. Modos de direccionamiento * Programa 4.1: las horas antigúas están en D1 y las que hay que  *añadir en D2 MOVE.L D1,D3   Las horas antigúas están en D3 ADD.L D2,D3    las horas totales en D3 BVS ERROR   salta a etiqueta ERROR si hay desbordamiento BEQ CERO    Salta a CERO si el total es cero .........

 

4

7. Modos de direccionamiento Indirecto de Registro Direcciones: El operando está en la posición de memoria indicada por el registro de direcciones especificado en la instrucción. Sintáxis: MNEMÓNICO.N

(An),OPERANDO_DESTINO

Ejemplos:

 

5

7. Modos de direccionamiento * Programa 4.2: las horas antigúas están en una doble palabra en la dirección * $6000 y las que hay que  añadir en $6004 * Poner las direcciones en registros de dirección MOVEA.L #$6000, A1  A1 contiene $6000 MOVEA.L #$6004,A2  A2 contiene $6004 MOVEA.L #$6008,A3  A3 contiene $6008 MOVE.L (A1),D3   Las horas antigúas están en D3 ADD.L (A2),D3    las horas totales en D3 MOVE.L D3,(A3) Las horas totales están en la dirección $6008 de la memoria BVS ERROR   salta a etiqueta ERROR si hay desbordamiento BEQ CERO    Salta a CERO si el total es cero   6 .........

7. Modos de direccionamiento Indirecto de Registro Direcciones con Postincremento: El operando está en la posición de memoria indicada por el registro de direcciones especificado en la instrucción. Después de acceder, el registro de direcciones se incrementa en 1, 2 o 4 unidades dependiendo si el tamaño del operando es byte, palabra o palabra larga respectivamente. •Sintáxis: MNEMÓNICO.N

(An)+,OPERANDO_DESTINO

Ejemplos:

 

7

7. Modos de direccionamiento Se usa para el recorrido de arrays monodimensionales desde las direcciones más bajas a las más altas. También para la recuperación de datos de la pila

* Programa 4.3: Modificación del programa 4.2 para utilizar este modo * Poner las direcciones en registros de dirección MOVEA.L #$6000, A1  A1 contiene $6000 MOVE.L (A1)+,D3   Las horas antigúas están en D3, se suma 4 al puntero A1 ADD.L (A1)+,D3    las horas totales en D3, A1 se incrementa en 4 MOVE.L D3,(A1) Las horas totales están en la dirección $6008 de la memoria BVS ERROR   salta a etiqueta ERROR si hay desbordamiento BEQ CERO    Salta a CERO si el total es cero .........  

8

7. Modos de direccionamiento * Programa 4.4: Copia una cadena de caracteres ASCII de una posición a otra  *de la memoria. A1 apunta al primer caracter ASCII del bloque de  texto almacenado * en la memoria. Se supone que el último caracter es el ASCII nulo.  

LAZO TST.B (A1)  ¿hemos alcanzado un nulo?            BEQ FIN            MOVE.B (A1)+, (A2)+  copia un byte de una dirección a otra de la memoria            BRA LAZO

 

9

7. Modos de direccionamiento Indirecto de Registro Direcciones con Predecremento: Antes de acceder, el registro de direcciones se decrementa en 1, 2 o 4 unidades dependiendo del tamaño del operando. Después, se accede al dato en la dirección resultante. Sintáxis: MNEMÓNICO.N

-(An),OPERANDO_DESTINO

­ Ejemplos:

 

10

7. Modos de direccionamiento

Se usa para el recorrido de arrays monodimensionales desde las direcciones más altas a las más bajas. También para el almacenamiento de datos en la pila

 

11

7. Modos de direccionamiento

Indirecto de Registro con desplazamiento: Este modo requiere de una palabra de extensión detrás del código de ope La dirección del dato es la suma de la dirección contenida en el registro An y la constante de 16 bits, extendida en signo, contenida en la palabra de exten Sintáxis: MNEMÓNICO.N d16(An),OPERANDO_DESTINO Ejemplo:

 

12

7. Modos de direccionamiento En este modo de direccionamiento el valor de An no cambia como ocurría en el anterior. Se puede utilizar para acceder a una tabla cuya dirección base es la de An

* Programa 4.5 : Cambiar el orden de dos elementos de una tabla cuya dirección  *base es la de A2 MOVE.L 4(A2),D0 Guardamos la 2ª entrada MOVE.L 8(A2),4(A2) Movemos la 3ª entrada al lugar de la 2ª MOVE.L D0,8(A2)  Ponemos la 2ª entrada en 3er lugar

Para operandos de tipo L o W la soma d16 +An debe ser par. Hay casos en los que se necesita que el desplazamiento sea variable, de ahí el motivo del siguiente modo.  

13

7. Modos de direccionamiento Indirecto de Registro indexado con desplazamiento: Este modo requiere de una palabra de extensión con el siguiente formato:

La dirección del operando se obtiene tras sumar el contenido del registro de direcciones con la constante de 8 bits dada en la palabra de extensión y el contenido del registro índice: Sintáxis: MNEMÓNICO.N   d8(An,X.t),OPERANDO_DESTINO 14

7. Modos de direccionamiento Ejemplo:

 

15

7. Modos de direccionamiento

* Programa 4.6 : Cambiar el orden de dos elementos de una tabla cuya dirección  *base es la de A2 MOVEQ.L #4,D1 Se pone D1 a 4 MOVE.L 0(A2,D1.W),D0 Guardamos la 2ª entrada MOVEA.W #8,A0 MOVE.L 0(A2,A0.W),0(A2,D1.W) Movemos la 3ª entrada al lugar de la 2ª MOVE.L D0,0(A2,A0.W)  Ponemos la 2ª entrada en 3er lugar

 

16

7. Modos de direccionamiento Absoluto: En este modo las palabras de extensión contienen la dirección de memoria donde están los operandos. Existen dos tipos: Absoluto largo: Dispone de dos EW que contienen los 24 bits de la dirección de memoria del operando. Absoluto corto: Dispone de una palabra de extensión, EW, que se extiende en signo para construir los 24 bits de la dirección de memoria del operando. En este modo sólo se pueden acceder a las 32K direcciones más bajas[$000000,$007FFF] y a las 32k más altas [$FF8000,$FFFFFF]. Sintáxis Absoluto Largo:   MNEMÓNICO.N   xxxxxx,OPERANDO_DESTINO   Sintáxis Absoluto Corto:   MNEMÓNICO.N   xxxx,OPERANDO_DESTINO

17

7. Modos de direccionamiento Ejemplo:

 

18

7. Modos de direccionamiento

*Programa 4.7: las horas antigúas están en una doble palabra en la  *dirección $6000 y las que hay que  añadir en $6004 MOVE.L $6000,D3 Horas antigüas en D3 ADD.L $6004,D3    Horas totales en D3 MOVE.L D3,$6008 Se salva D3 en la memoria

 

19

7. Modos de direccionamiento Relativo: Dos modalidades: relativo con desplazamiento y relativo indexado con desplazamiento. Similar a los modos indirectos con desplazamiento e indexado con la salvedad que el registro usado es el PC. Relativo con Desplazamiento: Al contenido del PC, se suma el desplazamiento de 16 bits extendido en signo. Sintáxis : MNEMÓNICO.N d16(PC),OPERANDO_DESTINO

 

20

7. Modos de direccionamiento Ejemplo:

 

21

7. Modos de direccionamiento Relativo con Índice y Desplazamiento: Al contenido del PC, se suma el desplazamiento de 8 bits extendido en signo y el contenido de un registro índice que se extiende en signo si el tamaño es W. Sintáxis : MNEMÓNICO.N d8(PC,X.t),OPERANDO_DESTINO

 

22

7. Modos de direccionamiento Ejemplo:

 

23

7. Modos de direccionamiento Los modos de direccionamientos relativos son utilizados para generar código que funcione con independencia de la posición de memoria donde se cargue el programa (código reubicable). Las referencias a memoria se hacen con relación al valor del PC que no se conoce por anticipado. ●

Sólo pueden ser utilizados para operandos fuente. No se puede alterar la memoria utilizando este modo.



 

24

7. Modos de direccionamiento Inmediato: El dato se encuentra en una o varias de las palabras de extensión que siguen a la OW de la propia instrucción o incluso en el OW (modos rápidos).Sintáxis:

MNEMÓNICO.N

#DATO,OPERANDO_DESTINO

Ejemplos:

 

25

7. Modos de direccionamiento ●



Se utiliza para inicializar los contenidos de los registros (datos o direcciones) a un valor determinado o para incrementar su valor. Las instrucciones de formato rápido utilizan este modo, pero no requieren palabras de extensión ya que el dato esta en la OW.

 

26

7. Modos de direccionamiento Instrucciones y modos de direccionamiento La instrucción MOVE que hemos utilizado en los ejemplos admite todos los modos de direccionamiento. No es un caso habitual, lo normal es que cada instrucción admita un grupo limitado de modos de direccionamiento. Los distintos modos de direccionamiento se pueden clasificar en cuatro categorías: DATOS: Incluye los modos que pueden usarse para referirse a operandos de datos. (Incluye todos los modos de direccionamiento excepto el modo directo a registro dedirecciones) MEMORIA: Incluye todos los modos que pueden usarse para referirse a operandos dememoria. (Inlcuye todos los modos salvo el directo de registro)  

27

7. Modos de direccionamiento CONTROL: Incluye todos los modos que pueden usarse para referirse a operandos de memoria sin un tamaño asociado, y son usados por instrucciones de control como saltos, llamadas a subrutinas,... (Los modos indirectos con predecremento y postincremento y el inmediato no están incluidos). ALTERABLE: Incluye todos los modos que pueden usarse para referirse a operandos modificables. Un operando destino sólo puede usar los modos de direccionamiento incluidos en esta categoría.(Los direccionamientos relativos al contador de programa y el direccionamiento inmediato no pertenecen a este grupo.)

 

28

7. Modos de direccionamiento Estas cuatro categorías primitivas pueden combinarse para obtener las categorías que se resumen en la siguiente tabla:

Los operandos de las instrucciones vienen especificados por alguna de estas categorías, y por tanto, sólo los modos de direccionamiento incluidos en cada una de   ellas, son los válidos para dicho operando.

29

8. Conjunto de instrucciones El 68000 tiene 56 instrucciones que, combinadas con los 14 modos de direccionamiento y los cinco formatos de datos, ofrece al programador una herramienta potente para el desarrollo de programas. Se clasifican en 8 grupos según el tipo de operación que realizan:: Instrucciones de movimiento de datos: MOVE, MOVEA, MOVEM, MOVEQ, EXG, LEA, PEA, SWAP, LINK y UNLNK Instrucciones de aritmética entera: ADD, ADDA, ADDI, ADDQ, ADDX, CLR, CMP, CMPA, CMPI, CMPM, DIVU, DIVS, EXT, MULU, MULS, NEG, NEGX, SUB, SUBA, SUBI, SUBW , SUBX y CMP Instrucciones lógicas: AND, ANDI, EOR, EORI, OR, ORI, NOT y TST Instrucciones en BCD: ABCD, NBCD y SBCD

 

30

8. Conjunto de instrucciones

Instrucciones de desplazamiento y rotación: ASL, ASR, LSL, LSR, ROL, ROR, ROXL, ROXR y SWAP Instrucciones de manipulación de bits: BTST, BSET, BCLR, BCHG Instrucciones de control del programa: BRA, BSR, JMP, JSR, RTR, RTS, y NOP. Instrucciones de control del sistema: RESET, RTE, STOP, TRAP, TRAPV, CHK, ..

(VER TABLA RESUMEN)

 

31

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.