Sei sulla pagina 1di 31

Direccionamiento Indexado

Direccionamiento Indexado

En este modo de direccionamiento se emplean los registros (X, Y, SP, PC) para calcular la direccin efectiva. En algunos casos tambin se emplean los acumuladores A, B y D respectivamente. El cdigo mquina que genera cada uno de los direccionamiento indexados se representa con xb.

Los diferentes tipos de direccionamientos indexado son:


DIR IDX IDX IDX IDX1 IDX2 [IDX2] [D, IDX] NOMBRE Indexado Indexado de Acumulador Indexado pre/post incremento / decremento Indexado Indexado Indexado indirecto Indexado de acumulador indirecto BITS CODE (xb) 5 bits rr0nnnnn 111rr1aa rr1pnnnn 9 bits 111rr00s

16 bits 111rr01s 16 bits 111rr011 111rr111

Partes que forman el xb.

rr
x y sp pc 00 01 10 11 A B D

aa
00 01 10

s
Positivo 0 Negativo 1

p
Pre 0 Post 1

z
Operando de 9 bits 0 Operando de 16 bits 1

Indexado de 5 bits IDX

opr5, xysp. rr0nnnnn Utiliza una constante con signo de 5 bits. Que en conjunto con alguno de los registros (x, y, sp, pc) crea la direccin efectiva (xb). El rango del operando sera: n = -16 a 15 Sintaxis: , r n, r -n, r Nota: Si el operando es negativo hacer
COMPLEMENTO A 2.

EJEMPLO
1000 1000 1002 1004 1006 1008 A6 40 A6 08 A6 18 A6 80 ORG LDAA LDAA $1000 ,Y 8, X

rr 0 nnnnn
xb = 01 0 00000 = 40 xb = 00 0 01000 = 08 xb = 00 0 11000 = 18 xb = 10 0 00000 = 80

LDAA -8, X LDAA END , SP

Nota: Complemento a 2 del 8: 01000

11000

TAREA
ORG STD
SIIA

$AB9F ,Y 8, X -8, X , SP -16, Y 15, PC -7, X

ASL JMP TST SBCB

PDF

CLR ORAA END

Indexado de 9 bits IDX1


opr9, xysp. 111rr0zs

111rr00s

Utiliza una constante con signo (s) de 9 bits. Que en conjunto con alguno de los registros (x, y, sp, pc) crea la direccin efectiva (xb). El rango del operando sera: n = -256 a 255 Sintaxis: n, r -n, r Nota: Si el operando es negativo hacer
COMPLEMENTO A 2.

EJEMPLO
0000 0000 0003 0006 0009 ORG $0

111 rr 00 s
xb = 111 10 00 1 = F1 xb = 111 11 00 0 = F8 xb = 111 00 00 1 = E1 xb = 111 01 00 0 = E8

E6 F1 EE LDAB -18, SP E6 F8 FF LDAB 255, PC E6 E1 E0 LDAB -32, X E6 E8 18 LDAB $18, Y END

Nota: El tercer byte se obtiene del operando, para los valores positivos convertirlos a hexadecimal y los negativos hacer complemento a 2. 0001 0010 -> 1110 1110 = EE 0010 0000 -> 1110 0000 = E0

TAREA
ORG
NOO

$EEE9 255 , Y -154, SP 196, X 111, PC -256, Y 185, SP -171, PC

LEAX EMAXD NEG

DCC

ANDB SBCA MINA CMPB END

Indexado de 16 bits IDX2


opr16, xysp. 111rr0zs

111rr01s

Utiliza una constante de 16 bits. Que en conjunto con alguno de los registros (x, y, sp, pc) crea la direccin efectiva (xb). El rango del operando sera: n = 0 a 65,535 Sintaxis: n, r
Nota: No hay operandos negativos.

EJEMPLO
0000 044C 0450 0455 0459 045D 0461 64 F2 012C ORG LSR 1100 300, SP @1000, X 752, Y 65535, X 1020, PC

111 rr 01 s
xb = 111 10 01 0 = F2 xb = 111 00 01 0 = E2 xb = 111 01 01 0 = EA xb = 111 00 01 0 = E2 xb = 111 11 01 0 = FA

1818E2 0200 MAXA A2 EA 02F0 E8 E2 FFFF A8 FA 03FC SBCA EORB EORA END

Nota: Los ltimos 2 bytes se obtienen del operando en base hexadecimal.

TAREA
ORG
TREE

$99CE 1255 , Y MAC, SP 7766, X 11001, PC 2256, Y 61515, SP 9871, PC

SUBD ADCA ROR INC

MAC

LSR EMAXD ROL END

Indexado Indirecto de 16 bits [ IDX2 ]


[ opr16, xysp ]. 111rr0zs 111rr011 s = 1 INDIRECTO Utiliza una constante de 16 bits. Que en conjunto con alguno de los registros (x, y, sp, pc) crea la direccin efectiva (xb). El rango del operando sera: n = 0 a 65,535 Sintaxis: [ n, r ]
Nota: No hay operandos negativos.

EJEMPLO
0000 044C 64 EB 0014 0450 1818FB 007D 0455 A2 F3 02F0 0459 E8 E3 FFFF 045D A8 EB 03FC 0461 ORG LSR MAXA SBCA EORB EORA END 1100 [20, Y] [@175, PC] [752, SP] [65535, X] [1020, Y]

111 rr 011
xb = 111 01 011 = EB xb = 111 11 011 = FB xb = 111 10 011 = F3 xb = 111 00 011 = E3 xb = 111 01 011 = EB

Nota: Los ltimos 2 bytes se obtienen del operando en base hexadecimal.

TAREA
ORG DEC
AMD

$C99F [DELL , Y] [954, SP] [6444, X] [11011, PC] [3356, Y] [5562, SP] [8881, PC ]

BITB MINM JSR STAA

DELL

CALL ADDA END

Indexado de Acumulador IDX


abd, xysp. 111rr1aa

Utiliza un acumulador de 8 bits (A o B). O utiliza tambin el acumulador de 16 bits (D). Que en conjunto con alguno de los registros (x, y, sp, pc) crea la direccin efectiva (xb).

aa
A B D 00 01 10

EJEMPLO
0000 00C8 A9 FE ORG 200

111 rr 1 aa
xb = 111 11 1 10 = FE xb = 111 00 1 01 = E5 xb = 111 01 1 00 = EC xb = 111 10 1 10 = F6

ADCA D, PC ADCA B, X ADCA A, Y LDAB D, SP END

00CA A9 E5 00CC A9 EC 00CE E6 F6

TAREA
ORG ASR EMAXM CMPA LDD CLR INC STY END $F09B B, PC D, X A, X B, Y D, X A, PC B, Y xb = xb = xb = xb = xb = xb = xb =

111 rr 1 aa

Indexado de Acumulador Indirecto [D, IDX]


[D, xysp]. 111rr111

Un apuntador al operando encontrado en el valor en D, que en conjunto con alguno de los registros (x, y, sp, pc) crea la direccin efectiva (xb). Sintaxis: [D, r]

EJEMPLO
0000 00C8 A9 FF ORG 200

111 rr 111
xb = 111 11 111 = FF xb = 111 10 111 = F7 xb = 111 00 111 = E7 xb = 111 01 111 = EF

ADCA [D, PC] ADCA [D, SP] ADCA [D, X] LDAB [D, Y] END

00CA A9 F7 00CC A9 E7 00CE E6 EF

TAREA
ORG TST LSL ADCA TST MINA CMPA STAB END $1002 [D, PC] [D, X] [D, Y] [D, SP] [D, Y] [D, PC] [D, X] xb = xb = xb = xb = xb = xb = xb =

111 rr 111

Indexado con PRE / POST / INC / DEC IDX


opr, - , x xys. rr1pnnnn opr, xys - , + rr1pnnnn

Indexado con pre o post incremento o decremento, que en conjunto con alguno de los registros (x, y, sp) crea la direccin efectiva (xb). Sintaxis: pre dec: n, -r p post dec: n, r0 pre pre incr: n, +r post incr: n, r+ 1 post El rango de n = -8 a -1 y 1 a 8 Notas: No utiliza el registro PC y n0.

Tablas de Incrementos y Decrementos IDX


Incremento
+1 +2 +3 +4 +5 +6 +7 +8 0000 0001 0010 0011 0100 0101 0110 0111
Es el nmero en binario menos uno.

Decremento
-1 -2 -3 -4 -5 -6 -7 -8 1111 1110 1101 1100 1011 1010 1001 1000
Es el complemento a uno (cambiar todos los 1s por 0s y los 0s por 1s) de la tabla de incremento.

EJEMPLO
0000 0064 0066 0068 006A 6A AF 6E AE EE B1 A6 B0 ORG STAA STX LDX 100 1, -SP 2, -SP 2, SP+

rr 1 p nnnn
xb = 10 1 0 1111 = AF xb = 10 1 0 1110 = AE xb = 10 1 1 0001 = B1 xb = 10 1 1 0000 = B0

LDAA 1, SP+ END

Nota: Los ltimos cuatro bits se obtienen de las tablas de incremento y decremento segn el operando y de acuerdo con el signo ( -, + ) que tenga.

RESUMEN direccionamientos indexados:


DIR IDX IDX IDX IDX1 IDX2 [IDX2] [D, IDX] NOMBRE Indexado Indexado de Acumulador Indexado pre/post incremento / decremento Indexado Indexado Indexado indirecto Indexado de acumulador indirecto BITS CODE (xb) 5 bits rr0nnnnn 111rr1aa rr1pnnnn 9 bits 111rr00s

16 bits 111rr01s 16 bits 111rr011 111rr111

TAREA
ORG ORAA $5FFC
8, -Y

xb = xb = xb = xb = xb = xb = xb = xb =

EMINM 5, X+ CMPB SUBD LDAB LDS CLR ROL END 3, -SP


6, SP7, Y-

2, X5, SP1, +Y

TAREA
ORG ORAB $5FFC
[ 105, PC ]

xb = xb = xb = xb = xb = xb = xb = xb =

EMIND 1277, X COM TST LEAS LDD LEAX ROL END 7, -Y


D, SP 4, PC

[D, Y] 3, SP+ -45, PC

TAREA
5FFC 5FFC 6000 6005 6007 6009 600B 600D 600F 6012 EA FB 00 69 18 1B E2 04 FD 61 69 E7 F6 1B C4 EC EF 1A B2 65 F9 D3 ORG ORAB EMIND COM TST LEAS LDD LEAX ROL END $5FFC
[ 105, PC ] 1277, X

xb = xb = xb = xb = xb = xb = xb = xb =

7, -Y
D, SP 4, PC

[D, Y] 3, SP+ -45, PC

TAREA
ORG ORAB $AFFD
[ 110, SP ]

xb = xb = xb = xb = xb = xb = xb = xb =

EMIND 1727, Y LEAX TST LDD LDY COM ROL END 8, -X


D, PC 4, SP

[D, PC] 6, -SP -54, PC

TAREA
AFFD AFFD B001 B006 B008 B00A B00C B00E B010 B013 EA F3 00 6E 18 1B EA 06 BF 1A 28 E7 FE EC 84 ED FF 61 AA 65 F9 CA ORG ORAB EMIND LEAX TST LDD LDY COM ROL END $AFFD
[ 110, SP ] 1727, Y

xb = xb = xb = xb = xb = xb = xb = xb =

8, -X
D, PC 4, SP

[D, PC] 6, -SP -54, PC

Potrebbero piacerti anche