Está en la página 1de 8

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE CÓMPUTO

INTRODUCCIÓN A LOS MICROPROCESADORES Y


MICROCONTROLADORES

PRÁCTICA No. 4
“DIRECCIONAMIENTO INDEXADO”

GRUPO: ______________

EQUIPO: ______________

INTEGRANTES: _______________________________________________________ ______


_______________________________________________________ ______
_______________________________________________________ ______
_______________________________________________________ ______
_______________________________________________________ ______

PROFESOR: JULIO CESAR SOSA SAVEDRA

FECHA DE REALIZACIÓN: ______________________

FECHA DE ENTREGA: ______________________

COMENTARIOS: ____________________________________________________________

____________________________________________________________

____________________________________________________________
1 OBJETIVO GENERAL:

El alumno conocerá el modo de direccionamiento indexado y algunas instrucciones que lo


utilizan

2 OBJETIVOS ESPECÍFICOS:

El alumno realizara un programa que maneje el modo de direccionamiento indexado.

3 MATERIAL Y EQUIPO EMPLEADO

− Unidad base DIGIAC 3000


− Tarjeta Madre D3000 8.0 (con la unidad keypad/display)
− Tarjeta MAC III 6502
− Conjunto de instrucciones del 6502

4 INTRODUCCIÓN TEÓRICA:

El 6502 tiene 3 registros de propósito general:

- Acumulador
- Registro X
- Registro Y

Los registros X y Y se les conoce como registros de índice.

Los registros indexados pueden ser usados por aplicaciones de propósito general, (es
decir, como un contador o para almacenar temporalmente un dato) pero su uso principal
es en el direccionamiento indexado.

A continuación se examina como se pueden manipular los registros de índice.

Registros de índice

Hay un numero de instrucciones las cuales pueden ser usadas para manejar datos dentro
de los registros de índice:

Cargar registros de índice.

Los registros de índice pueden ser cargados con un valor desde la memoria usando
direccionamiento inmediato, absoluto o de pagina cero.

Por ejemplo:

0412 A2 LDX #$45 ;carga el registro X con el valor 45H


0413 45

046D AC LDY $05E0 ;carga el registro Y con el valor de la


046E E0 ;localidad 05E0H
046F 05
0487 A6 LDX $40 ;Carga el registro X con el valor de la
0488 40 ;localidad 0040H

Almacenar registros de índice.

El contenido de los registros de índice puede almacenarse en una localidad de memoria,


usando el direccionamiento absoluto o de pagina cero. Por ejemplo:

0431 8E STX $0502 ;almacena el registro X en la localidad 0502H


0432 02
0433 05

04A3 84 STY $90 ;almacena el registro Y en la localidad 0090H


04A4 90

Comparar registros de índice

El contenido de los registros de índice puede compararse con valores en la memoria,


usando direccionamiento inmediato, absoluto o de pagina cero. Por ejemplo:

040A E0 CPX #$52 ;compara el valor 52H con el contenido del


040B 52 ;registro X

0429 EC CPX $05B0 ;compara el contenido de la localidad 05B0


042A B0 ;con el registro X
042B 05
0492 C4 CPY $38 ;compara el contenido de la localidad 0038H
0493 38 ; con el registro Y

Incrementar / disminuir los registros de índice

El contenido de los registros de índice puede incrementarse o disminuirse, usando el


direccionamiento implícito. Por ejemplo:

0420 E8 INX ;incrementa el contenido del registro X por 01H

043C C8 INY ;incrementa el contenido del registro Y por 01H


0482 CA DEX ;disminuye el contenido del registro X por 01H

04A2 88 DEY ;disminuye el contenido del registro Y por 01H

Transferir registros de índice

Los datos pueden duplicarse entre registros de índice y el acumulador usando


instrucciones de transferencia. Estas instrucciones usan el direccionamiento implícito.

Por ejemplo:
0436 AA TAX ;duplica el contenido del acumulador en el registro X

0452 8A TXA ;duplica el contenido del registro X en el acumulador

0478 A8 TAY ;duplica el contenido del acumulador en el registro Y

04A1 98 TYA ;duplica el contenido del registro Y en el acumulador


En el 6502 estándar no es posible transferir directamente de un registro de índice a otro,
estas transferencias deben hacerse a través del acumulador

Por ejemplo: para copiar el contenido del registro X en el registro Y:

04C2 8A TXA ;duplica el contenido del registro X en el acumulador

04C3 A8 TAY ;suplica el contenido del acumulador en el registro Y

Direccionamiento indexado

En el modo de direccionamiento indexado, el contenido de un registro de índice es


sumado al operando para formar la dirección de los datos:

dirección base + contenido del registro de índice = dirección destino

La dirección base puede expresarse en términos de direccionamiento absoluto o pagina


cero. Desde el registro de índice puede manipularse (es decir, incrementarse, disminuirse,
etc), un rango de direcciones. El direccionamiento indexado es usado frecuentemente en
programas con estructuras cíclicas. Los datos fuente o destino pueden ser cambiados en
cada pasada a través del ciclo incrementando o disminuyendo el contenido del registro de
índice.

Direccionamiento absoluto indexado

Considerando la siguiente instrucción en lenguaje ensamblador:

0423 BD LDA $0520,X ;carga el acumulador desde la localidad


0424 20 ;de memoria 0520H + X
0425 05

Suponiendo que el registro X contiene el valor 15H, entonces la dirección destino se


forma de la siguiente manera:

dirección base + contenido del registro de índice = dirección destino


0520H + 15H = 0535H

De esta forma la instrucción carga al acumulador desde la localidad 0535H.

El direccionamiento absoluto indexado Y funciona de la misma manera.

Considerando la siguiente sección de un programa:

045A A0 LDY #$62 ;carga el registro Y con el valor 62H


045B 62

045C 99 STA $0534,Y ;almacena el acumulador en la localidad


045D 34 ;de memoria 0534H + Y
045E 05

dirección base + contenido del registro de índice = dirección destino


0534H + 62H = 0596H

De esta manera la instrucción almacena el acumulador en la localidad 0596H

Direccionamiento de pagina cero indexado

Estos modos de direccionamiento son muy similares al direccionamiento absoluto


indexado, excepto que la dirección base puede únicamente estar dentro del rango 0000H
a 00FFH (pagina cero).

Considerando la instrucción en lenguaje ensamblador:

04C7 B5 LDA $50,X ;carga el acumulador desde la localidad


04C8 50 ;de memoria 0050H + X

Suponiendo que el registro X contiene el valor 20H, entonces la dirección destino se


forma de la siguiente manera:

dirección base + contenido del registro de índice = dirección destino


0050H + 20H = 0070H

De esta manera la instrucción carga al acumulador desde la localidad 0070H.

5 DESARROLLO

5.1 Realizar un programa (lenguaje ensamblador y código maquina), el cual llene la


pagina 05H de la memoria con el valor 88H, es decir:

dirección valor
0500H 88H
0501H 88H
0502H 88H
.
.
.
05FDH 88H
05FEH 88H
05FFH 88H

La figura 1 muestra el diagrama de flujo del programa.


INICIO

Cargar el registro
X con el valor 00H

Cargar el
acumulador con el
valor 88H

Reducir el registro
X por 01H

Almacenar el
acumulador en la
‘X-esima’
localidad

Esta establecida No
la bandera
cero?

Si

FIN

Figura 1. Diagrama de flujo del programa

Notar que el contador se inicia al valor 0 y se disminuye antes de la instrucción de


almacenar. En la primera pasada el registro X esta en 00H, cuando se disminuye pasa a
FFH. En la pasada final el registro X llega a 0 otra vez pero la ultima localidad es llenada
antes de que el registro X sea examinado por la instrucción BNE.

5.2 Introducir el código maquina al MAC III (iniciando en la localidad 0400H) y ejecutar el
programa.

5.3 Verificar la pagina 05 de la memoria, para ver si tiene los valores correctos.

Cuestionario

1. ¿Cómo se le conoce a los registros X y Y?

2. ¿Cuál es la característica principal del modo de direccionamiento indexado?


3. Indique los pasos que se deben hacer para transferir el contenido del registro X al
registro Y

4. Escriba 3 instrucciones que manipulen los registros de índice


STX,LDX,STY,LDY,CPX,CPY,INX,INY,DEX,DEY,TAX,TXA,TAY,TYA

5. Escriba 2 usos que se les puede dar a los registros de índice

6 OBSERVACIONES Y CONCLUSIONES

(Son individuales)

7 BIBLIOGRAFÍA

- Manual DT102
Introducción a las aplicaciones del microprocesador 6502
LJ Technical Systems
Dirección Código
Instrucciones Comentarios
maquina
0400 A2 LDX #$00 ;establecer el contador a 0
0401 00
0402 A9 LDA #$88 ;carga el acumulador con el valor de llenado
0403 88
0404 CA LOOP: DEX :decrementa el registro X
0405 9D STA $0500,X ;almacena el acumulador en la x-esima localidad
0406 00
0407 05

0408 D0 BNE LOOP ;si el registro X no es 0, brincar para atrás a la localidad


0409 FA 0404H
040A 60 RTS ;regresar al sistema MAC III

También podría gustarte