Modos de Direccionamiento

55
Modos de Direccionamiento Universidad Nacional de La Matanza Dpto. Ingeniería e Investigaciones Tecnológicas Arquitectura de Computadoras Lectura recomendada: STA05 Págs 407-415 FLO06 790-792 Autor: Ing. Jaír E. Hnatiuk Revisión: Ing. Ezequiel Calaz, Ing. Edgardo Gho Ver. 1.2.5 (2021)

Transcript of Modos de Direccionamiento

Page 1: Modos de Direccionamiento

Modos de Direccionamiento

Universidad Nacional de La Matanza

Dpto. Ingeniería e Investigaciones Tecnológicas

Arquitectura de Computadoras

Lectura recomendada: STA05 Págs 407-415FLO06 790-792

Autor: Ing. Jaír E. Hnatiuk

Revisión: Ing. Ezequiel Calaz, Ing. Edgardo Gho

Ver. 1.2.5 (2021)

Page 2: Modos de Direccionamiento

Código de operación Operando 1 Operando 2

Formatos de instrucción

Código de operación Operando 1

Código de operación

Fetch

Decode

FetchOperands

Execute

Store results

Ciclo de instrucción

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

2

Código de operación Operando 1 Operando 2 Resultado

¿Necesito operandos?¿Dónde están el/los operando(s)?

¿Cómo los obtengo?

Page 3: Modos de Direccionamiento

Modos de direccionamiento

¿Cómo obtenemos y damos indicaciones en la vida cotidiana?

• Mi domicilio es “Florencio Varela 1903”• Estoy a dos cuadras al norte del Hospital Italiano• Pasá por la casa de Carlitos y preguntale cómo llegar• Frente al bar metalero• 34° 40’ 11,588’’ S; 58° 33’ 45,379’’ O

Modo de direccionamiento: manera por la que una instrucción de un programa accede a sus operandos (en memoria principal o registros internos de CPU).Puede tratarse de operandos para operaciones aritméticas, lógicas o de control de flujo del programa.

“Out of bounds”: definición gráfica

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

3

Page 4: Modos de Direccionamiento

• El código de operación se almacena en memoria principal (ROM/RWM)

• Los operandos pueden hallarse en memoria principal (ROM/RWM) o en registros

La memoria principal puede verse como un vector unidimensional

donde cada dirección corresponde a un elemento del mismo.

Modos de direccionamiento

La CPU no puede obtener operandos o códigos de operación

de la memoria secundaria

Los registros accesibles disponibles dependerán de la

estructura de la CPU

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

4

Velocidad, costo, tamaño

Page 5: Modos de Direccionamiento

Modos de direccionamiento

Arquitectura de programación

Registros accesibles

Set de instrucciones

Modos de direccionamiento

Memoria principal

Componentes visibles al programador de base

¿Qué instrucciones entiende la CPU?

¿Con qué memoria cuento?

¿Qué registros tiene la CPU?

¿Cómo accedo a los operandos?

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

6

Page 6: Modos de Direccionamiento

El diseñador de hardware puede incorporar más de un registro con un

propósito similar (por ejemplo N registros índice o M registros de segmento)

Bus de direcciones

Memory Address Register

ProgramCounter

Index RegisterSegmentRegister

Base Register/PointerStack Pointer

Page Register/Pointer

Temporal AddressRegister

Modos de direccionamiento

Algunos de los registros accesibles de CPU cumplen una función específica en ciertos

modos de direccionamiento.

Generalmente (no siempre) estos registros tienen el mismo tamaño que el bus de direcciones.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

7

Page 7: Modos de Direccionamiento

Modos de direccionamiento

Datos…¿Dónde están?

¿Cómo se indica dónde está?

¿Cómo se da la dirección del dato?

Dirección efectiva Modo Absoluto

Dirección del dato Dirección de referencia + desplazamiento

Modo Relativo Inmediato, indexado, relativo, paginado, segmentado, base y despl.

En memoria Dirección de la dirección del dato

En la instrucción Modo indirecto Absoluto indirecto

Con datos

En un registro Modo registro indirecto

Instrucción En registro Modo registro

Sin datos

Modo implícito

Modos teóricosEl concepto de cada uno puede

implementarse individualmente o combinado con otro según el fabricante

Modos de direccionamiento - Arquitectura de Computadoras - Unlam (2020) 9

Page 8: Modos de Direccionamiento

Sin datos

La CPU no requiere operandos para ejecutar la instrucción.

Código de operación Arquitectura

No operation

NOP 12 (00010010) MC6809

NOP 00 (00000000) Intel 8085

NOP 00 (00000000) Zilog Z80

NOP66 90 (01100110 10010000)

IA-64

NOP 90 (10010000) IA-32

NOP 01 (00000001) MC6800

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

10

Mnemonico CodOp Arquitectura

Set interrupt mask

SIM 30 (00110000) Intel 8085

STI FB (11111011) IA-32

SEI 0F (00001111) MC68HC11

Formato de instrucción

Código de Operación

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 9: Modos de Direccionamiento

Modo registro directo

Los operandos requeridos están en registros internos. Si el/los registro(s) implicados se indican en el mismo código de operación se los conoce como datos implícitos o inherente.Instrucciones rápidas: acceden a memoria sólo para leer el código de operación.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

11

Mnemonico CodOp Arquitectura

Rotate accumulator A

RORA 46 (01000110) MC6800/6809/68HC11

RAR 1F (00011111) Intel 8085

Sumar r1 y r2 y guardar el resultado en r0

ADD r0, r1, r2 ARM

Add $1, $2, $0 MIPS

Sumar EAX y EBX y guardar el resultado en EBX

ADD EBX, EAX Intel IA-32

Código de operación Registro

Formato de instrucción

Cuando se habla de datos implícitos/inherente las referencias a los registros están embebidas

en el código de operación.

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 10: Modos de Direccionamiento

Modo registro directo

¿Dónde aparece la referencia al operando?

Mnemónico Descripción Código de operación (Hexa) Código de operación (binario)

ASLA Arithmetic Shift Left A 48 0100 1000

ASLB Arithmetic Shift Left B 58 0101 1000

ASRA Arithmetic Shift Right A 47 0100 0111

ASRB Arithmetic Shift Right B 57 0101 0111

CLRA Clear Accumulator A 4F 0100 1111

CLRB Clear Accumulator B 5F 0101 1111

Analice los códigos de operación de estas instrucciones del procesador Motorola 68HC11

La identificación del registro involucrado está incluida en el código de operación

Motorola denomina INHERENTE a los modos de direccionamiento que analizamos como “sin operandos” y

“registro directo” (y alguno más)

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

12

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 11: Modos de Direccionamiento

Modo absoluto directo

La dirección real del operando acompaña al código de operación. En el campo de datos de la instrucción hallaremos la dirección del operando. El tamaño de la misma será el mismo que el del bus de direcciones.

Dirección de memoria Contenido

….

C002 04

C001 00

C000 7C

Ejemplo Motorola 68HC11:

INC $0004

Supongamos que durante la ejecución de un programa el PC adquiere el valor C000. El código de operación almacenado en C000 es 7C (01111100), cuya acción es incrementar en uno el contenido de la dirección indicada en campo de operandos (0004).

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

14

Código de operación Dirección del operando

Formato de instrucción

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 12: Modos de Direccionamiento

Modo absoluto directo

Ejemplo: INC $0004

Dirección de memoria Contenido

….

C002 04

C001 00

C000 7C

0004 0F

0003 20

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

15

PC

C000

Dirección de memoria Contenido

….

C002 04

C001 00

C000 7C

0004 0F

0003 20

Antes de ejecutar la instrucción Después de ejecutar la instrucción

¿Qué pasa si el ancho del bus de direcciones es mayor al ancho del bus de datos?

10

PC

C003

Page 13: Modos de Direccionamiento

Modo absoluto directo (extendido en 68HC11)Dirección de memoria Contenido

….

C002 04

C001 00

C000 7C

¿Cómo obtiene la CPU la DRO del operando?

Supongamos un bus de datos de 8 bits y un bus de direcciones de 16 bits:1. La CPU lee el código de operación (7C) apuntado por el Program

Counter y lo almacena en el Instruction Register. Se incrementa el PC.2. El PC apuntará entonces a la dirección C001 donde se halla la parte

alta de la dirección del operando (00), se copia al TAR (H). El PC se incrementa.

3. Ahora el PC apuntará a C002, que es la dirección donde se encuentra la parte baja de la dirección del operando (04), se copia al TAR (L). El PC se vuelve a incrementar.

4. El Registro Temporal de Direcciones (TAR) contiene la DRO.5. Se copia el TAR al MAR y se procede a leer/escribir en memoria

¿Cuáles son las limitaciones que impone el modo absoluto?

Dirección de memoria Contenido

…. ..

0004 01

0003 20

0002 07

… ..

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

16

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 14: Modos de Direccionamiento

Acc

….

Modo absoluto indirecto Dirección de memoria Contenido

….

04 01

05 FA

06 03

F9 00

FA 07

FB 01

..

Se provee la dirección de la dirección del operando.El código de operación se acompaña de la dirección donde se encuentra la dirección del operando.La siguiente sintaxis:

DEC PDP-8 (1965) soporta el modo absoluto indirecto.En este procesador las direcciones de memoria 0010-0017 al utilizarse con modo indirecto además se autoincrementaban. El Zilog Z80 (1976) -evolución del PDP-8 en un solo chip- también lo soporta. El Motorola 68HC11 no posee este modo, tampoco Intel (32/64 bits)

Load Acc, [5]

Haría que se cargue en el registro Acc el contenido de la dirección almacenada en la dirección 5.Si en la dirección 05 está almacenado el valor FA, entonces el contenido de FA –que es 07- se cargará en el registro Acc.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

17

Código de operación Dirección de la dirección del operando

Formato de instrucción

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

07

Page 15: Modos de Direccionamiento

Modo absoluto indirectoDirección de memoria Contenido

….

A1 7C

A2 07

A3 04

Considere la ejecución del siguiente ejemplo

Supongamos un bus de datos de 8 bits y de direcciones de 8. Existe un acumulador llamado A y la instrucción LD carga el operando del segundo argumento en el primero. En este caso cargará en el acumulador A el operando cuya dirección está contenida en 05.

LD A, [05]

1. La CPU lee el código de operación apuntado por el Program Counter y lo almacena en el Instruction Register. El PC se incrementa.

2. El PC apuntará entonces a la dirección donde se halla la dirección del operando. Se copia al RTD. El PC se vuelve a incrementar.

3. El RTD se copia al MAR y se lee la memoria. En el bus de datos la memoria colocará el valor A2 (MBR).

4. El MBR se copia al RTD nuevamente. Se repite el paso anterior: el RTD se copia al MAR y se lee la memoria. En el bus de datos la memoria colocará el valor 07 (MBR).

5. Se copia el MBR al acumulador A.Podría obviarse el uso del RTD dado que los buses son del mismo tamaño.

Dirección de memoria Contenido

…. ..

04 01

05 A2

06 03

… ..

No se detalla el área de memoria donde está almacenado el programa

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

18

Page 16: Modos de Direccionamiento

Modo absoluto indirecto

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

19

Opcode X I Modo/desplazamiento

15 12 11 10 9 0

Ejemplo: Hewlett-Packard 3000

Manejaba instrucciones de 16 bitsFormato típico de instrucción de carga/almacenamiento:

El bit I (Indirect mode) en 1 indicaba que la referencia a memoria debía interpretarse en modo indirecto.

DB

DB+4 7

DB+7

LOAD DB+4,I

Celda indirecta

El desplazamiento (+4) apunta a la celda indirecta en P+4. La celda indirecta contiene una dirección relativa +3, esto apunta a una ubicación tres direcciones adelante, o P+7. El contenido de P+7 es el que se carga en el registro.

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 17: Modos de Direccionamiento

Modo Registro Indirecto

Dirección de memoria Contenido

E0112230 00

E0112231 00

E0112232 00

E0112233 07

La dirección del operando se halla en un registro de CPU. La instrucción especifica cuál es el registro.

Registro Contenido

r0 ..

r1 E0112230

En el Motorola 68HC11 este método se implementa a través de la pila

LDR r0, [r1]

r0 y r1 son registros de uso general en ARM de 32 bitsLDR es una instrucción de carga (LoaD into Register)

• r0 se cargará con el valor contenido en la dirección de memoria indicada en r1

• En esta instrucción r0 es el registro de destino y r1 es el registro base

Ejemplo con procesador ARM

Registro Contenido

0 ?

1 E0112230

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

20

Código de operación Registro donde se encuentra la dirección del operando

Formato de instrucción

0 00000007

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 18: Modos de Direccionamiento

Modo registro indirecto a través de registro de pila

Cuando la dirección del operando no se conoce sino hasta en la ejecución, podemos también emplear este modo.Utilizando un registro de pila (Stack Pointer, Stack Segment, etc) los operandos se pueden colocar en la pila (push) oquitar de ella (pull, pop). Estas operaciones además incrementan o decrementan el registro de pila.Este método puede emplearse para pasar parámetros a una subrutina con las precauciones del caso.Es requisito inicializar el puntero de pila antes de emplearla.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

22

Stack Pointer

…..

ORG $C000

..

PSHA

PSHB

Dirección Contenido

…. ..

00FB ..

00FC ..

00FD ..

00FE ..

00FF ..

Program Counter

C000

A B

F1 99

Considere el siguiente ejemplo del HC11:Los puntos … indican contenido desconocido o no inicializado

Registros de CPU Memoria principal

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

p/e: LDS #$00FF

Page 19: Modos de Direccionamiento

Modo indirecto a través de registro de pila

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

26

Stack Pointer

00FF

ORG $C000

LDS #$00FF

PSHA

PSHB

Dirección Contenido

…. ..

00FB ..

00FC ..

00FD ..

00FE ..

00FF ..

Program Counter

C008

A B

F1 99

El Stack Pointer siempre apunta a la siguiente dirección disponible de la pila

Memoria principal

PSHA: Almacena el contenido del acumulador A en el área de pila (dirección contenida en el SP) y decrementa el SP

00FE

La operación no modifica el registro acumulador A

Dirección Contenido

…. ..

00FB ..

00FC ..

00FD ..

00FE ..

00FF F1

Page 20: Modos de Direccionamiento

Modo indirecto a través de registro de pila

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

27

Stack Pointer

00FE

ORG $C000

LDS #$00FF

PSHA

PSHB

Dirección Contenido

…. ..

00FB ..

00FC ..

00FD ..

00FE ..

00FF F1

Program Counter

C009

A B

F1 99

El Stack Pointer siempre apunta a la siguiente dirección disponible de la pila

Memoria principal

PSHB: Almacena el contenido del acumulador B en el área de pila (dirección contenida en el SP) y decrementa el SP

00FD

La operación no modifica el registro acumulador B

Dirección Contenido

…. ..

00FB ..

00FC ..

00FD ..

00FE 99

00FF F1

Page 21: Modos de Direccionamiento

Modo base + desplazamiento

El offset puede admitir un formato signado o no signado dependiendo del procesador

No signado (positivo): solo permite avanzar hacia direcciones de memoria posteriores a la base.Signado: permite obtener direcciones hacia adelante o hacia atrás desde la posición de la base.

Base

Memoria

Base

Memoria

Offset no signado Offset signado

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

28

¿Qué relación hay entre el tamaño del offset admitido y la cantidad de direcciones hacia las que se puede

saltar (hacia adelante o hacia atrás)?

Page 22: Modos de Direccionamiento

Modo base + desplazamiento

La dirección del operando se obtiene sumando el contenido de un registro y un offset que se indica en el campo de operandos de la instrucción. Distintos modelos de procesador implementan variantes de este modo.

En la arquitectura x86 se puede emplear –por ejemplo- el registro BP (Base Pointer) de 16 bits o EBP de 32 bitsEl Base Pointer se suele emplear como “frame pointer” o puntero al comienzo del área de datos de una subrutina.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

29

Por ejemplo:MOV BP, BP+4

Carga en el registro BP el contenido de BP+4.

RBP (64 bits)EBP (32 bits)

BP (16 bits)

Operación Registro Desplazamiento

Registros

BP

Memoria

+

MOV BP BP +4

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 23: Modos de Direccionamiento

Modo base + desplazamiento

r1

C0 00 00 05Dirección Contenido

C0 00 00 09 15 06 20 13

El procesador PowerPC solo admite este modo para transferencias registro <-> memoria.El desplazamiento se indica en uno de los campos de la instrucción.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

30

Por ejemplo:lwz r12,4(r1)

Carga en el registro r12 el contenido de r1+4

Opcode Registro destino Registro origen Desplazamiento

0 5 6 10 11 15 16 31

100000 01100 00001 00000000 00000100

r12 +0004

+ C0000005

C000000915 06 20 13

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 24: Modos de Direccionamiento

Modo Inmediato o literal (relativo al PC, offset cero)

Dirección de memoria Contenido

C000 4F

C001 C6

C002 0F

El dato acompaña al código de operación. La dirección se obtiene sumando un offset cero al Program Counter. En otras palabras, la DRO será la contenida en el PC.

¿Cuáles son las limitaciones que impone el modo inmediato?

Para que el ensamblador de HC11 emplee modo inmediato debe utilizarse el prefijo # (numeral) delante del operandoORG $C000

Inicio CLRA

LDAB #$0F

Acumulador B

0F

¿Cómo obtiene CPU la DRO del operando?

Supongamos un bus de datos de 8 bits y de direcciones de 161. La CPU lee el código de operación (C6) apuntado por el Program

Counter (PC=C001) y lo almacena en el Instruction Register. El PC se incrementa.

2. La instrucción se decodifica.3. El PC está apuntando a la dirección C002. Allí es donde se halla

el operando 0F. Se copia del PC->MAR, se envía la señal READ por el Bus de Control. Luego del tiempo de acceso de la memoria el dato estará disponible en el MBR.

4. Se copia el MBR al acumulador B.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

31Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 25: Modos de Direccionamiento

Modo Inmediato o literal (relativo al PC, offset cero)

Memoria Contenido

0205 ..

0204 ..

0203 6A

0202 74

0201 ..

Ejemplo con microcontrolador Intel 8051

El ensamblador de Intel 8051 requiere que se utilice el prefijo # (numeral) delante del operando

para indicar modo inmediato

MOV A, #6AH

El microcontrolador Intel 8051 posee un registro acumulador de 8 bits llamado “A”

Instrucción Código de operación Bytes Ciclos

MOV A, #6AH 74H 2 1

Acumulador A

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

32

El assembler de Intel dicta que los valores hexadecimales se indican con el sufijo “H”. Si el valor comienza con una letra debe anteponerse un cero. Por ejemplo, ABH no es válido, mientras

que 0ABH sí lo es.

6APC

PC

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 26: Modos de Direccionamiento

Modo relativo al contador de programa (offset distinto de cero)

Instrucción Dirección de memoria

Ensamblado

….

CLRA C000 4F

LDAB $2002 C001 F6 20 02

INCB C004 5C

BCC sinCarry C005 24 01

INCA C007 4C

INX C008 08

La dirección se obtiene sumando un offset al Program Counter. Se utiliza en instrucciones de salto (Branch).Dado que el offset se expresa en complemento a la base, podemos restar del PC sumándole un número negativo.Este es el modo que se utiliza para alterar el flujo de ejecución, sea bajo cierta condición o de modo incondicional,permitiendo implementar estructuras de alto nivel como if, for, while, etc. El offset se indica en el campo de operandos.

¿Qué modo de direccionamiento se utiliza en cada instrucción?

ORG $C000

Inicio CLRA

LDAB $2002

aumento INCB

BCC sinCarry

INCA

sinCarry INX

Observe el uso del modo relativo en la siguiente porción de código del Motorola HC11.

¿Qué offset correspondería para que salte a “aumento” en lugar de a “sinCarry”?

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

33Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 27: Modos de Direccionamiento

Modo relativo al contador de programaDirección de

memoriaContenido Instrucción

….

C000 4F CLRA

C001 F6 LDAB

C002 20 20

C003 02 02

C004 5C INCB

C005 24 BCC

C006 01

C007 4C INCA

C008 08 INX

C009

Analicemos la ejecución desde que PC=C005

Observe que aquí cada byte está en un renglón

1. La CPU lee el código de operación (24) apuntado por el ProgramCounter (PC=C005) y lo almacena en el Instruction Register. El PC se incrementa.

2. La instrucción se decodifica.3. El PC apuntará a la dirección C006. Allí es donde se halla el

operando 01. Se lee el contenido de C006 y se incrementa el PC. (Ahora PC=C007).

4. Se evalúa si el flag Carry en la ALU es cero (carry clear).a) Si C=0 se sumará el offset 01 al PC (PC+01=C008)b) Si C=1 no se altera el PC (PC=C007)

El ensamblador calcula el offset comparando la dirección de la etiqueta que hayamos puesto con la dirección de la

instrucción que siga a la de salto. El offset siempre se aplicará cuando CPU ya haya leído la dirección de memoria donde está almacenado el mismo.

sinCarry ->

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

34

Page 28: Modos de Direccionamiento

Modo relativo al contador de programa Dirección de memoria

Contenido Instrucción

….

C000 4F CLRA

C001 F6 LDAB

C002 20 20

C003 02 02

C004 5C INCB

C005 24 BCC

C006 FD aumento

C007 4C INCA

C008 08 INX

C009

Analicemos la ejecución desde que PC=C005 si el salto lo efectuara a la etiqueta aumento en lugar de sinCarry

FD= 1111 1101= -3(los offset se expresan con números signados)

1. La CPU lee el código de operación (24) apuntado por el ProgramCounter (PC=C005) y lo almacena en el Instruction Register. El PC se incrementa.

2. La instrucción se decodifica.3. El PC apuntará a la dirección C006. Allí es donde se halla el

operando FD. Se lee el contenido de C006 y se incrementa el PC. (Ahora PC=C007).

4. Se evalúa si el flag Carry en la ALU es cero (carry clear).a) Si C=0 se sumará el offset FD al PC (PC+FD=C004)b) Si C=1 no se altera el PC (PC=C007)

¿Cómo calculó el offset el ensamblador?La etiqueta corresponde a la dirección C004.

Luego de leer la instrucción de salto y el offset el PC tendrá el valor C007. Se resta entonces C004-C007 = -3

y se expresa el resultado negativo en complemento a la base

aumento ->

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

35

Page 29: Modos de Direccionamiento

Modo Indexado o de registro base

El modo indexado pertenece a la categoría de modos relativos. La dirección del operando se obtiene sumando un índice y un offset. Uno de estos valores o ambos están en registros.

El registro base tendrá el mismo tamaño que el bus de direcciones. Algunos procesadores admiten offset positivo y negativo, otros solo positivo.

Offset

07

+

DRO

3107

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

36

Este modo de direccionamiento es muy bueno para recorrer vectores, o varias posiciones de memoria consecutivas

Registro índice

3100

El IA-32 admite el formatoBase + (Índice * escala) + desplazamientoUtilizando uno entre varios registros como base y como índice. La escala es un literal (inmediato) y el desplazamiento es de valor de 0, 8 o 32 bits.• Desplazamiento apunta al comienzo del vector.• Índice es el número del elemento• Escala indica el tamaño del elemento.

El Motorola MC6805 cuenta con registro índice y permite almacenar el offset en otro registro.

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 30: Modos de Direccionamiento

Modo Indexado o de registro base

Registro índice IX

ORG $C000

LDX #$2000

LDAA 1,x

INX

Ejemplo con Motorola 68HC11: Dirección de memoria

Contenido

2000 07

2001 08

2002 09

LDX # C000 CE

20 C001 20

00 C002 00

LDAA C003 A6

1,x C004 01

INX C005 08

+

El microcontrolador Motorola 68HC11 posee dos registros índice:

IX, IY, ambos de 16 bits.El offset es fijo, sólo se puede leer

desde memoria y debe ser positivo.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

37

Acc A

08

01

2001PC

C000

2000

¿Qué hace el programa?

Si se tratara de recorrer un vector, ¿qué tendría que hacer para apuntar

al siguiente elemento?Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 31: Modos de Direccionamiento

Modo Indexado o de registro base

La dirección real del operando (DRO) se obtiene sumando el registro índice (base) + offset

Registro índice IX

4000

Memoria Contenido

4000 17

4001 28

4002 39

4003 4A

4004 5B

4005 6C

4007 7D

Offset = 01H

Registro índice IX

4001

Memoria Contenido

4000 17

4001 28

4002 39

4003 4A

4004 5B

4005 6C

4007 7D

Registro índice IX

4002

Memoria Contenido

4000 17

4001 28

4002 39

4003 4A

4004 5B

4005 6C

4007 7D

Registro índice IX

4003

Memoria Contenido

4000 17

4001 28

4002 39

4003 4A

4004 5B

4005 6C

4007 7D

4000H + 01H = 4001H 4001H + 01H = 4002H 4002H + 01H = 4003H 4003H + 01H = 4004HModos de direccionamiento - Arquitectura de Computadoras -

Jaír Hnatiuk - Unlam (2020)38

Page 32: Modos de Direccionamiento

Modo Indexado o de registro base

La dirección real del operando (DRO) se obtiene sumando el registro índice (base) + offset

Registro índice IX

4000

Memoria Contenido

4000 17

4001 28

4002 39

4003 4A

4004 5B

4005 6C

4007 7D

Offset = 02H

Registro índice IX

4001

Memoria Contenido

4000 17

4001 28

4002 39

4003 4A

4004 5B

4005 6C

4007 7D

Registro índice IX

4002

Memoria Contenido

4000 17

4001 28

4002 39

4003 4A

4004 5B

4005 6C

4007 7D

Registro índice IX

4003

Memoria Contenido

4000 17

4001 28

4002 39

4003 4A

4004 5B

4005 6C

4007 7D

4000H + 02H = 4002H 4001H + 02H = 4003H 4002H + 02H = 4004H 4003H + 02H = 4005HModos de direccionamiento - Arquitectura de Computadoras -

Jaír Hnatiuk - Unlam (2020)39

Page 33: Modos de Direccionamiento

Modo autoincrementado/autodecrementado

• Autoincrementado: El hardware incrementa automáticamente el registro base.• Post incrementado: Usa el registro base y lo incrementa después.• Pre incrementado: Incrementa el registro y lo usa después.

• Autodecrementado: El hardware decrementa automáticamente el registro base.• Post decrementado: Usa el registro base y lo decrementa después.• Pre decrementado: Decrementa el registro y lo usa después.

En ARM el preincremento se indica con un signo de admiración luego del campo de datos.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

40

Algunos procesadores permiten autoincrementar/decrementar un registro antes o después de usarloResulta particularmente útil para recorrer vectores. Es una variante de base más desplazamiento.

STD 0,Y++

El Motorola 6809 admite autoincremento y autodecremento. Luego de usarse el registro base se incrementa en uno o dos, facilitando el recorrido de vectores de elementos de 8 y 16 bits. El predecremento lo efectúa antes.

Por ejemplo:

Guarda el contenido del registro D (16 bits) en la dirección apuntada por Y. Luego efectúa Y = Y+2 (porque D es de 2 bytes) Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 34: Modos de Direccionamiento

Modo paginado

La dirección del operando se obtiene sumando el contenido de un registro base (de página) y un offset.

El registro de página tendrá el mismo tamaño que el bus de direcciones, pero se subdivide en dos campos: nro de página y renglón. La parte del “renglón” en el registro de página se compone de ceros.

Registro de página

Nro de página Renglon

Si se aplica un offset cero, se obtiene la dirección de inicio de la página

Instrucción Offset

+ Dirección real del operando

El tamaño del offset es el mismo que el de la sección “renglón” del registro de

página

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

41

Page 35: Modos de Direccionamiento

Modo paginado

El Motorola 68HC11 posee un modo paginado muy particular llamado “Directo”

El HC11 no posee registro de página. En modo Directo actúa como si tuviera un registro de página con el valor 0000. Por lo tanto podemos decir que el modo directo del HC11 es un “paginado en página cero”.

Registro de página (inexistente)

00 00

Se provee el offset en el campo de operandos de la instrucción

Instrucción Offset

+ Dirección real del operando

Ejemplo:

LDAA $05

Cargar el acumulador A con el contenido de la dirección formada por (página)+05H.

La DRO es 0005HEl campo de operandos solo contiene la parte baja de la dirección.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

42

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 36: Modos de Direccionamiento

Modo segmentado

La dirección se obtiene sumando el contenido de un registro de segmento base y un offset. (Modo real)

Los procesadores 8086/8088 tienen cuatro registros de segmentos (CS,DS,SS,ES) todos de 16 bits, pero el bus dedirecciones es de 20 bits.

Registro CS

Dirección base del segmento de 16 bits 0000

+

Dirección de desplazamiento de 16 bits

=

Dirección física de 20 bits

Un segmento es un bloque de 64kB de memoria que puede comenzar en cualquier punto del 1MB de espaciodireccionable por CPU, siempre y cuando comience en una frontera de 16 bytes (o sea los 4 bits menos significativosson cero).

Para localizar una posición de memoria concreta, la dirección de segmento se combina con otra dirección querepresenta el desplazamiento. La dirección del segmento representa los dieciséis bits más significativos (cuatro dígitoshexadecimales) de la dirección física correspondiente al inicio del segmento. La dirección de desplazamiento sondieciséis bits adicionales que representan la distancia desde el principio del segmento hasta la dirección física deseadadentro del segmento (en el ejemplo el offset está en el registro IP).

IP (Puntero de instrucción)

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

43Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 37: Modos de Direccionamiento

Modo segmentado

A000 0

+

A0B0

=

AA0B0

El puntero de instrucción IP (Instruction Pointer) de 16 bits apunta al desplazamiento, dentro de la memoria, de lasiguiente instrucción que hay que ejecutar. El IP siempre hace referencia al registro CS (segmento de código); portanto, la dirección física de la siguiente instrucción se forma combinando el segmento de código y el puntero deinstrucción.El IP siempre contiene la dirección de desplazamiento de la siguiente instrucción mientras que el registro CS siemprecontiene la dirección del segmento. Esta dirección se muestra en lenguaje ensamblador con el formato CS:IP.

IP

El segmento de 64 kB estará entre las direcciones A0000 y AFFFF

El programador de assembler no está obligado a expresar las direcciones

físicas, pudiendo emplear la notaciónA000:A0B0 (CS:IP)

Ejemplo:

Para formar la dirección física de 20 bits correspondiente a la siguiente instrucción, la dirección de desplazamientode 16 bits almacenada en el IP (A0B0) se suma a la dirección de segmento contenida en el registro CS (A000)después de desplazar ésta cuatro bits a la izquierda (A0000), como se muestra en la figura. Los cuatro bits menossignificativos de la dirección de segmento se consideran siempre 0000.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

44

Registro CS

Page 38: Modos de Direccionamiento

Ejemplo de modos de direccionamiento en IA-32

Ejemplo con un procesador de la familia Intel IA-32

Tabla TIMES 10 DD 0 ; Reserva 10 double words (4 bytes c/u) inicializado en 0

MOV EBX, #Tabla ; Inmediato: La dirección de Tabla se guarda en EBX

MOV [EBX], 110H ; Registro indirecto: Tabla[0] = 0x110

ADD EBX, 4 ; Registro directo: EBX = EBX + 4

MOV [EBX], 123H ; Registro indirecto: Tabla[1] = 0x123

DW es una directiva al ensamblador que declara uno o más Words, en este caso inicializados en cero.EBX es un registro base de un CPU Intel de 32 bitsMOV copia el valor del segundo argumento en el primero. ADD suma los dos argumentos y guarda el resultado en el primero.

El modo registro indirecto se usa generalmente para variables que contienen varios elementos, por ejemplo vectores.

Note el uso de corchetes en ambas arquitecturas para indicar modo indirecto

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

45

Todas las marcas mencionadas pertenecen a sus respectivos dueños.

Page 39: Modos de Direccionamiento

EBX (32 bits)

??

Ejemplo de modos de direccionamiento en IA-32

Supongamos que Tabla se almacena a partir de AA00BB10 (32 bits).

EBX (32 bits)

AA00BB10

MOV EBX, #Tabla

1. Copia la dirección de la reserva de Tabla en EBX

Memoria Contenido

AA00BB10 ??

AA00BB11 ??

AA00BB12 ??

AA00BB13 ??

AA00BB14 00

AA00BB15 00

MOV [EBX], 110H

2. Copia el valor 110H en la dirección contenida en el registro EBX. Notar el almacenamiento Little Endian.Se almacena el byte menos significativo (son cuatro: 00 00 01 10) en la dirección más baja.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

46

10

01

00

00

Page 40: Modos de Direccionamiento

Ejemplo de modos de direccionamiento en IA-32

Supongamos que Tabla se almacena a partir de AA00BB10 (32 bits).

EBX

AA00BB10

ADD EBX, 4

3. Suma 4 al contenido del registro EBX

Memoria Contenido

AA00BB12 00

AA00BB13 00

AA00BB14 ??

AA00BB15 ??

AA00BB16 ??

AA00BB17 ??

MOV [EBX], 123H 4. Copia el valor 123H en la dirección contenida en el registro EBX.

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

47

23

01

00

00

AA00BB14

Page 41: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

48

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

…determine la dirección y el valor del operando para cada modo de direccionamiento.• La primera instrucción carga el acumulador. • El CodOp (8 bits) indica el modo de

direccionamiento• El campo de dirección de la instrucción tiene el

valor 500 (puede que no siempre lo utilice)• El ancho de palabra de memoria es de 16 bits

Dada una computadora ficticia que cuenta con los registros y memoria indicados….

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

1. Inmediato/literal2. Registro3. Registro indirecto4. Absoluto directo5. Indirecto6. Relativo7. Indexado8. Autoincrementado (reg. Indirecto)9. Autodecrementado (reg. Indirecto)

Basado en un ejercicio de Ali Asghar Manjotho. Department of Computer Systems Engineering, MUET-Jamshoro.

Page 42: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

49

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

En modo inmediato se cargará el valor 500 en el registro AC.

1. Inmediato/literal

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

500

Dirección efectiva = 201 (dada por el PC)

Page 43: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

50

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. Instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

En modo registro se cargará en el registro AC el valor del registro R1 (el único mencionado).No se accede a memoria principal.

2. Registro

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

400

Dirección efectiva = ninguna

Page 44: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

51

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

En modo registro indirecto se cargará en el acumulador el valor de la dirección de memoria contenida en R1.

3. Registro indirecto

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

700

Dirección efectiva = 400

Page 45: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

52

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

En modo absoluto directo la dirección real del operando acompaña al código de operación.

4. Absoluto directo

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

800

Dirección efectiva = 500

Page 46: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

53

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

En modo indirecto la dirección de la dirección real del operando acompaña al código de operación.Dirección de la dirección del operando = 500Dirección del operando = 800

5. Indirecto

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

300

Dirección efectiva = 800

Page 47: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

54

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

En modo relativo se requiere un registro base y un offset. El registro base es el PC. El offset es 500.La instrucción tiene 3 bytes de largo (código de operación + longitud del offset)

6. Relativo

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

325

Dirección efectiva = 200 + 500 + 3 = 703

Si considera el valor del PC después de haber leído la instrucción completa no debe

sumar el largo de la misma.

Page 48: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

55

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

El registro índice tiene el valor 100La base/offset es 500.La dirección se obtiene de sumar: base + desplazamiento.

7. Indexado

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

900

Dirección efectiva 100 + 500 = 600

Page 49: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

56

Dirección Contenido

200 Cargar AC Modo

201 500

203 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

Se calcula igual que para registro indirecto, solo que el valor del registro R1 se incrementa luego de la lectura.Dado que son palabras de 2 bytes, incrementa R1 en 2.

8. Autoincrementado (registro indirecto)

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

700

Dirección efectiva = 400

R1

402

Page 50: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

57

Dirección Contenido

200 Cargar AC Modo

201 Dirección = 500

202 Sig. instrucción

… ..

398 450

400 700

500 800

600 900

703 325

800 300

Se calcula igual que para registro indirecto, solo que el valor del registro R1 se decrementa luego de la lectura.Dado que se trata de palabras de 16 bits, se decrementa en 2 el registro R1.

9. Autodecrementado (registro indirecto)

PC = Program CounterR1 = RegisterXR = Index RegisterAC = Accumulator

PC

200

R1

400

XR

100

AC

AC

700

Dirección efectiva = 400

R1

398

Page 51: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

58

Formato de instrucción

Describir el formato requerido para una instrucción genérica de una computadora de cuatro buses, con tamaños de palabra de 32 bits en los buses de datos y de direcciones, si la mencionada instrucción tuviese sus dos operandos en memoria. Asumir que el código de operación de la instrucción tiene siempre 16 bits. Analizar las diferencias de formato que se producen en el caso en que la instrucción tenga: a.- Sus dos operandos expresados mediante direccionamiento absoluto.b.- Sus dos operandos expresados mediante direccionamiento relativo a un registro base dado, con desplazamiento de 16 bits sin signo. c.- Cada uno de los dos operandos en uno de los dos modos antes mencionados.

Código de operación (16)

Dirección primer operando (32) Dirección segundo operando (32)

Código de operación (16)

Arg. primer operando (16)

Arg. segundo operando (16)

Código de operación (16)

Dirección primer operando (32)Arg. segundo operando (16)

a.

b.

c.

¿Qué cambia en la ejecución según el formato de instrucción?

Page 52: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

59

Formato de instrucción

La computadora de la página anterior tiene un formato de instrucción de 32 bits con operandos en registros. La misma cuenta con 256 registros accesibles en la CPU, y cada uno de sus dos operandos reside en alguno de ellos. ¿Cuál sería la forma más provechosa de utilizar el formato de este modelo de instrucción?

Código de operación (16) Registro 1 (8 bits) Registro 2 (8 bits)

Page 53: Modos de Direccionamiento

Ejercicio

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

60

Formato de instrucción

Describir el formato requerido para una instrucción genérica de una computadora de cuatro buses, con tamaños de palabra de 8 bits en el bus de datos y 32 en el de direcciones, si la mencionada instrucción tuviese sus dos operandos en memoria. Considerando operandos y códigos de operación de 16 bits, analizar las diferencias de formato y de ejecución en el caso en que la instrucción tenga:a.- Sus dos operandos expresados mediante direccionamiento absoluto.b.- Sus dos operandos expresados mediante direccionamiento relativo.c.- Cada uno de los dos operandos en uno de los dos modos antes mencionados.d.- Uno de sus operandos en un registro de una interfaz de entrada salida

Las diferencias de formato según la ubicación y direccionamiento son: a.- La instrucción es [CodOp: 16][DIR 1er op 32] [DIR 2do op 32]b.- En el campo de operandos no hay direcciones sino referencias (offsets) que se suman al contenido del registro asignado como base. El tamaño del offset no fue definido en el enunciado. Se puede suponer un tamaño de 8 o 16 bits, por ejemplo. c.- Uno de los elementos del campo de operando es una dirección, el otro es una referencia. d.- Uno de los elementos del campo de operando es una dirección de memoria, el otro es una dirección de entrada salida. En las máquinas de cuatro buses, los registros de E/S tienen espacio de direccionamiento aparte.

Page 54: Modos de Direccionamiento

Conclusiones

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

61

Sin dudas se trata de un tema complicado. Para comprenderlo es importante lograrabstraerse de las implementaciones particulares de cada fabricante y modelo a finde captar los principios comunes a todos.

Se han incluido múltiples ejemplos de los modos admitidos por distintas CPU(algunas más modernas que otras) a fin de ilustrar cada caso y a la vez darperspectiva al asunto, pero no es tan importante centrarse en las particularidadesde cada implementación

Si bien en las prácticas empleamos el Motorola 68HC11, queda claro que es unprocesador pequeño y limitado. Esto es bueno para que la tarea de conocerlo nosea abrumadora, pero en la mente del alumno no debe quedar el concepto de queotros procesadores tienen las mismas limitaciones y simpleza.

Page 55: Modos de Direccionamiento

BibliografíaMUR00 Murdocca-Heuring. Principios de arquitectura de computadoras. Pearson Editores, 2000. ISBN 987-

9460-69-3

STA05 William Stallings, Organización y arquitectura de computadoras, séptima edición. Pearson Educación,

2005, ISBN 978-84-832-2858-6

FLO06 Thomas Floyd. Fundamentos de sistemas digitales. Pearson Educación, 2006 ISBN 978-84-832-2720-6

UMA08 K. Udaya Kumar – B. S. Umashankar. The 8085 Microprocessor Architecture, Programming and

Interface, 2008, Pearson Education, ISBN 978-81-7758-455-4

POW05 PowerPC User Instruction Set Architecture. Version 2.02 (January 28, 2005)

MANJ Addressing Modes by Ali Asghar Manjotho. Department of Computer Systems Engineering, MUET-Jamshoro.

Documentación online de Apple OS X.https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/Assembler/000-Introduction/introduction.html#//apple_ref/doc/uid/TP30000851-CH211-SW1

Modos de direccionamiento - Arquitectura de Computadoras -Jaír Hnatiuk - Unlam (2020)

62