Idioma

Técnicas de Direccionamiento

INTRODUCCIÓN A LAS TÉCNICAS DE DIRECCIONAMIENTO


Para comenzar nuestra discusión sobre las técnicas de direccionamiento, primero definamos el término. Tal como se utiliza a lo largo de este libro, el término Direccionamiento se refiere a la forma en que le decimos al microprocesador 6502 en qué ubicación de memoria deseamos operar. Por ejemplo, BASIC tiene dos modos de direccionamiento: El primero es el modo Directo, en el que la ubicación de memoria (dirección) en cuestión se especifica directamente, por ejemplo:


20 POKE 752,1
25 V=PEEK(764)	

La línea 20 le dice a la computadora que coloque el valor 1 en la ubicación de memoria 752. La línea 25 le dice a la computadora que busque directamente en la ubicación de memoria 764, obtenga el valor almacenado allí y luego deje este valor en una variable llamada V. Este acceso directo a una determinada ubicación de memoria se llama direccionamiento Directo.


El segundo sistema utilizado en BASIC es más sutil y también está implícito en la línea 25 anterior. Cuando le decimos a la computadora que tome el valor de la ubicación de memoria 764 y lo almacene en un lugar llamado V, a nosotros, como programadores, no nos importa dónde está realmente V. Es suficiente que la computadora sepa dónde está almacenado V y que sepa cómo recuperar el valor correcto cuando nos referimos a V a partir de este momento. Llamaremos a esta forma direccionamiento Indirecto.


Ambos modos BASIC tienen contrapartes en lenguaje Ensamblador y los discutiremos más adelante en este Capítulo. Muchos otros modos de direccionamiento también están disponibles en lenguaje Ensamblador: primero usemos un ejemplo sin programación para ver por qué es ventajoso poder tener más de uno o dos modos de direccionamiento.


Imagine un edificio de departamentos muy grande con miles de departamentos, tan grande que eclipsa cualquier otra cosa en el mundo. Tiene 256 pisos, lo que lo convierte con diferencia en el edificio más alto del mundo, y cada piso tiene 256 departamentos. De hecho, este edificio es tan grande que tiene su propio sistema postal. Ahora pensemos por un momento en cómo le decimos al pobre cartero cómo y dónde entregar el correo interno a los residentes de este enorme edificio. Por cierto, este edificio se llama Edificio 6502, ya que recordaba a los arquitectos una computadora basada en el chip 6502, con 256 páginas, cada una con 256 ubicaciones de memoria.


Por supuesto, podemos darle al cartero una carta específica con instrucciones para entregarla en el departamento 5-004. Luego, el mensajero tomará el ascensor hasta el quinto piso y deslizará la carta en la ranura de la puerta marcada 004. Como dimos una dirección absoluta, que no variaba ni dependía de ninguna otra información, podemos referirnos a esto como direccionamiento Absoluto.


La planta baja de nuestro edificio está ocupada por muchas de las oficinas necesarias para mantener en funcionamiento un edificio de este tamaño y, por supuesto, también necesitarán recibir correo. Si la dirección que especificamos en la carta es 0-032, tenemos un caso especial de dirección absoluta. El cartero no necesita utilizar el ascensor para llegar a la dirección de la planta baja, por lo que esta carta se puede entregar mucho más rápido. De hecho, incluso se ha convertido en norma que los vecinos omitan el primer cero si el correo tiene como destino la planta baja, planta 0, y simplemente pongan 032 en el sobre. Nuestro cartero sabe que se trata de una entrega rápida y la entrega de inmediato. Las cartas a estas oficinas son muy importantes y deben entregarse de inmediato. Dado que este es un caso especial de dirección absoluta, en el que ni siquiera especificamos el piso, lo llamaremos direccionamiento del Piso Cero.


Estos dos sistemas de direccionamiento especifican la dirección absoluta exacta en el sobre. Ahora supongamos que queremos enviar un correo masivo a todos los que se encuentran en el piso 123. Por supuesto, podríamos enviar cada una de las 256 cartas individualmente, pero esto llevaría mucho tiempo. En su lugar, podríamos simplemente entregarle al cartero 256 cartas y una nota con instrucciones para entregar una de las cartas adjuntas a cada departamento en el piso 123. Luego, el cartero tomaría el ascensor hasta el piso 123 y luego caminaría por los pasillos, despachando cartas en las ranuras de las puertas y contando 1, 2, 3... Con un poco de suerte, el mensajero llegaría al departamento 123-256 con solo una carta restante por entregar. Este tipo de direccionamiento requiere un conteo compensado de la dirección del piso para obtener el número de departamento. Por ejemplo, la letra 12 debe ir al departamento 123 más 12, o al número 123012. Nuestro conteo es un índice que nos dice a qué departamento de este piso hemos llegado: Nos referiremos a este tipo de direccionamiento como Direccionamiento Indexado. Veremos que en el edificio 6502 se utilizan varios modos diferentes de direccionamiento indexado.


Si viviéramos en el departamento 230-042, podríamos detener al cartero que entregaba nuestro correo y solicitarle que entregue una carta en un departamento cinco puertas más abajo de nosotros. En este caso no hace falta que mencionemos el número del departamento; el cartero puede entenderlo. El departamento al que se debe entregar esta carta depende del departamento desde donde se envió. En nuestro ejemplo, la carta termina en el departamento 230-047, pero si el propietario del departamento 024-128 le dio el mismo mensaje al cartero, entonces la carta se entregaría en el departamento 024-133. Por tanto, este sistema de direccionamiento es relativo a la dirección del departamento de origen; Llamaremos a este modo direccionamiento Relativo.


Además de los modos de direccionamiento que ya hemos comentado, nuestro cartero debe comprender todo un conjunto de instrucciones. Por ejemplo, el mensajero debe verificar si se ha colocado el franqueo en cada sobre. No tenemos que especificar que el cartero haga esto: esta función está implícita en la instrucción. Como veremos, hay varios modos de direccionamiento implícitos en el edificio 6502.


Este ejemplo ha mostrado qué son los modos de direccionamiento y por qué hay varios modos disponibles para facilitar la tarea de direccionamiento. Salgamos ahora de nuestro edificio, volvamos a nuestros ATARI y analicemos los diversos modos de direccionamiento disponibles en el microprocesador 6502.


MODOS DE DIRECCIONAMIENTO DE LA MEMORIA EN EL 6502


El microprocesador 6502 puede direccionar la memoria de 13 formas diferentes, y A continuación, examinaremos cada una de ellas. Para los primeros ocho de estos modos de direccionamiento, usaremos la instrucción LDA analizada en el Capítulo 4, aunque muchas de las otras instrucciones también pueden utilizar estos modos de direccionamiento. Consulte el Apéndice 1 para obtener más detalles.


MODO INMEDIATO


El primer modo de direccionamiento se llama modo Inmediato y especifica que queremos cargar el Acumulador con el número que viene a continuación. Por ejemplo,


LDA #$4F	

le dice a la computadora que cargue el Acumulador con el número $4F, o decimal 79. La misma instrucción podría escribirse así:


LDA#79	

Tener varios sistemas de numeración disponibles no hace las cosas más difíciles, sólo más versátiles.


Tenga en cuenta que cualquier instrucción escrita en el modo de direccionamiento Inmediato dará como resultado 2 bytes de código en Lenguaje de Máquina: 1 para la instrucción y 1 para el número propiamente tal. Además, no podemos especificar un número mayor que 255, ya que este es el número más grande que se puede codificar en 1 byte. El 6502 es un microprocesador de 8 bits, y ahora ya sabe lo que eso significa: sólo se puede operar con 1 byte (8 bits) a la vez. Una microcomputadora de 16 bits puede cargar y operar con números hasta el 65.536, ya que este es el número más grande que se puede codificar en 2 bytes (16 bits).


Otro concepto que se puede cubrir aquí es el tiempo que le toma a la computadora completar cada instrucción. Nos referimos a esto en términos del número de ciclos que tarda en ejecutarse la instrucción. Un ciclo es el período de tiempo más corto con el que trabaja la computadora, y el 6502A de su ATARI tiene un ciclo de 560 nanosegundos. ¡Eso es 0,00000056 segundos! La instrucción LDA en modo Inmediato que acabamos de comentar requiere 2 ciclos para ejecutarse, es decir 0,00000112 segundos. ¡Eso es aproximadamente un microsegundo! Ahora puede empezar a ver qué tan rápido puede ser realmente su ATARI.


MODO ABSOLUTO


El segundo modo de direccionamiento que discutiremos es el modo Absoluto, usado cuando desea cargar el Acumulador a partir de una dirección de memoria específica y conocida. La forma del comando es:


LDA 315	

que le dice a la computadora que cargue el Acumulador con el valor almacenado en la ubicación de memoria decimal 315. En cuanto al modo Inmediato discutido anteriormente, la misma instrucción podría haberse escrito así:


LDA $13B	

Si, por ejemplo, la ubicación de memoria 315 contiene el valor 243, el Acumulador también contendrá el valor 243 tras la ejecución de esta sentencia. Obsérvese que LDA no cambia el valor almacenado en la ubicación de memoria 315; simplemente copia en el Acumulador lo que había allí. Es como esta sentencia BASIC:


10 A=PEEK(315)	

Aquí copiamos el contenido de la ubicación de memoria 315 en la variable llamada A. La ubicación 315 no cambia después de la instrucción en lenguaje Ensamblador o BASIC.


El modo de direccionamiento Absoluto produce 3 bytes de código en Lenguaje de Máquina, ya que esta instrucción debe poder cargar el Acumulador desde cualquier lugar de la memoria. Es decir, codificar cualquier dirección superior a 255 requiere 2 bytes y también necesitamos 1 byte para la instrucción. Por cierto, la familia de microprocesadores a la que pertenece el 6502 aborda la memoria en orden de bytes bajos (de orden inferior o menos significativos) a bytes altos (de orden superior o más significativos), contrario a lo que hacen otros microprocesadores populares. Por ejemplo, tome las siguientes instrucciones:


LDA $2F3C	

Cuando se ensambla esta instrucción en lenguaje Ensamblador (un ensamblador traduce la instrucción al Lenguaje de Máquina), primero viene el código para LDA en el modo de direccionamiento Absoluto, $AD, y luego viene la dirección, en orden bajo-alto:


LDA $2F3C se convierte entonces en AD3C2F	

Leer impresiones de la salida del Ensamblador a veces puede resultar confuso, pero después de un poco de práctica, le parecerá natural.


MODO DE PÁGINA CERO


El siguiente modo de direccionamiento que analizaremos se llama modo de Página Cero. Este modo se utiliza para cargar el Acumulador a partir de una dirección dentro de los primeros 256 bytes de memoria, es decir, la Página Cero. Dado que ninguna dirección en esta página puede tener más de 1 byte de longitud, el sistema de direccionamiento Absoluto de Página Cero requiere sólo 2 bytes: 1 para la instrucción y 1 para la dirección. Por ejemplo:


LDA $2D	

que podría escribirse


LDA 45	

le dice a la computadora que el programador quiere cargar el Acumulador desde una dirección que está en la Página Cero. Esta instrucción será codificada adecuadamente por cualquier ensamblador. Es interesante saber que el modo de direccionamiento de Página Cero requiere sólo 3 ciclos para poder ejecutarse, en contraste con los 4 del modo de direccionamiento Absoluto. Por lo tanto, en un programa que requiere máxima velocidad, los programadores en lenguaje Ensamblador utilizan la Página Cero siempre que sea posible. Pero recuerde que muy pocas ubicaciones de este tipo están disponibles en la mayoría de las condiciones en su ATARI. Si los cartuchos BASIC o Assembler/Editor están instalados en su ATARI, sólo seis ubicaciones de Página Cero están disponibles para su uso por un programa en lenguaje Ensamblador. Tener sólo seis ubicaciones de Página Cero suena muy difícil de manejar, pero algunas otras microcomputadoras populares dejan solo dos disponibles, ¡Así que tenemos una virtual riqueza en el ATARI!


MODO DE PÁGINA CERO INDEXADO


El siguiente modo de direccionamiento que analizaremos se llama de Página Cero Indexado, o modo "Página Cero, X". Es el primer modo de direccionamiento que utiliza el registro X como registro de desplazamiento para el direccionamiento. En este modo de direccionamiento, el valor que tiene el registro X en el momento en que se encuentra la instrucción se suma al valor de la dirección especificada para llegar a la dirección final que se utilizará. Como ejemplo, supongamos que el registro X tiene almacenado el valor 5 y nos encontramos con esta instrucción:


LDA $43,X	

Ya sabemos que la primera parte de esta instrucción, vista por sí sola, significa cargar el Acumulador a partir de la dirección hexadecimal $43, en la Página Cero. Para llegar a la dirección de carga correcta en este caso, simplemente sumamos 5, el valor contenido en el registro X, a la dirección base $43 especificada en la instrucción, y llegamos a la dirección hexadecimal $48. Por lo tanto, esta instrucción realmente significa cargar el Acumulador desde la dirección hexadecimal $43 + 5, o $48.


Tenga en cuenta el uso de la palabra "realmente". Este modo de direccionamiento es el primero que encontramos en el que una instrucción no siempre significa lo mismo cada vez que la vemos. Por ejemplo, el registro X puede contener el valor 2 cuando encontramos la misma instrucción:


LDA$ 43,X	

Ahora no cargaremos desde la dirección hexadecimal $48, sino desde $45 ($43 + 2 = $45).


Debe ser evidente que, si primero recuperamos un valor desde una dirección de Página Cero y luego queremos recuperar el valor almacenado en la siguiente dirección, al usar este modo de direccionamiento de "Página Cero, X" podemos incrementar ya sea la dirección base o el registro X. Incluso, podemos mantener el valor almacenado en el registro X en 2 si escribimos esto:


LDA $44,X	

O podemos aumentar el valor almacenado en el registro X a 3:


LDA $43,X	

Estos dos ejemplos parecen triviales, y cabe preguntarse qué diferencia puede suponer preferir un modo a otro; pero veremos más adelante que el segundo método, aumentar el registro X y mantener la instrucción constante, es mucho más preferible por varias razones. Por ahora, basta con darse cuenta de que hay varias maneras de lograr el mismo fin, y que una puede ser la mejor, incluso si todavía no estamos seguros de por qué.


El modo de direccionamiento "Página Cero, X" requiere solo 2 bytes cuando se convierte a Lenguaje de Máquina y requiere 4 ciclos de máquina para ejecutarse. Por lo tanto, es ligeramente más lento que el modo de direccionamiento Directo de Página Cero, que requiere sólo 3 ciclos de máquina. Este sacrificio de velocidad es el precio que se paga por la versatilidad y potencia obtenidas. Por supuesto, en aplicaciones que requieren pura velocidad, puede ser necesario tener en cuenta este tiempo de ejecución ligeramente más lento, o sacrificar la potencia de esta instrucción y utilizar sólo direccionamiento de Página Cero.


LOS MODOS INDEXADOS ABSOLUTOS


Los siguientes dos modos de direccionamiento son tan similares que se analizarán juntos. Son parientes del modo que acabamos de comentar, pero son aplicables a cualquier dirección en la computadora, no sólo a direcciones de la Página Cero. Estos son los modos de direccionamiento "Absoluto, X" y "Absoluto, Y", a menudo denominados modos de direccionamiento Indexado Absoluto. Funcionan sumando el contenido del registro X o Y, respectivamente, a la dirección base a la que se hace referencia en la instrucción. Por ejemplo, si el registro X contiene el valor 3, entonces la instrucción:


LDA $0342,X	

carga el Acumulador con el valor contenido en la ubicación de memoria $0345, ya que $0342 + 3 = $0345. De manera análoga, si el registro Y contiene el valor 4, entonces la instrucción:


LDA $0347,Y	

carga el Acumulador con el valor contenido en la ubicación de memoria $034B, ya que $0347 + 4 = $034B.


Dado que necesitamos abordar todo el espacio de memoria de la computadora con estas dos instrucciones, ambas son instrucciones de 3 bytes. Cada uno de ellas requiere 4 ciclos de máquina para ejecutarse, lo cual es muy interesante para nosotros, ya que una instrucción LDA absoluta también requiere 4 ciclos de máquina. Este es un caso en el que obtenemos algo a cambio de nada: ¡Mayor potencia y versatilidad sin aumentar la velocidad de ejecución! Bueno, casi ningún aumento. Sabía que tenía que haber una trampa en alguna parte. Aquí está el problema. En el caso de que la dirección base más el desplazamiento se sumen para producir una dirección en una página superior a la referida por la dirección base, el 6502 requiere 1 ciclo de máquina extra para corregir esto. Por ejemplo, supongamos que el valor en el registro X es 4 y nos encontramos con esta instrucción:


LDA $05FF,X


La dirección base en este ejemplo se encuentra en la Página 5; de hecho, es la última dirección en la Página 5. Si a esta dirección se le suma el desplazamiento, 4, da como resultado el valor $0603, por lo que esta instrucción significa cargar el Acumulador desde la ubicación de memoria $0603. Sin embargo, podemos ver que esta ubicación está en la Página 6 y la dirección base está en la Página 5. Aunque el 6502 puede manejar este problema, lleva algo más de tiempo (de hecho, 1 ciclo más) corregir este cruce de una página. Cualquier modo de direccionamiento en el 6502 que implique cruzar dicho límite de página requiere 1 ciclo adicional para ejecutarse. En general, esto no debería ser un problema y la computadora se encargará de ello por nosotros; pero en los casos en los que la sincronización precisa es crítica, el programador debe estar consciente de tales situaciones y prever el tiempo adicional que requerirán estas instrucciones.


DOS MODOS INDIRECTOS


Los dos últimos modos de direccionamiento que se ilustrarán utilizando la instrucción LDA son ambos sistemas de direccionamiento Indirecto. Estos dos sistemas se confunden frecuentemente porque sus nombres son muy similares, pero sus usos son bastante distintos. Nos encontraremos usando uno con bastante frecuencia y el otro casi nunca. El primero se llama direccionamiento Indexado Indirecto, y esta es la forma en que opera:


LDA ($43),Y	

Los paréntesis en esta instrucción indican que se trata de un modo de direccionamiento Indirecto. La instrucción se puede interpretar de la siguiente manera:


1. Busque un valor de 2 bytes almacenado en la Página Cero, en las ubicaciones $43 y $44.
2. Interprete este valor de 2 bytes como una dirección en la Memoria.
3. A esta dirección, súmele el valor de desplazamiento contenido en el registro Y. Esta suma es la dirección a la que se debe acceder.
4. Cargue el Acumulador con el valor almacenado en esta dirección calculada.

¡Uf! Parece bastante complicado, ¿no? Tomemos un ejemplo simple y analicémoslo lentamente.


Primero, supongamos que hemos almacenado el valor #$53 (Este es el número hexadecimal 53, ¿recuerda?) en la ubicación de memoria $43 y el valor #$E4 en la ubicación de memoria $44. Además, supongamos que el registro Y contiene el valor 6. Gráficamente, esta es la situación:


UbicaciónContenido
$43#$53
$44#$E4
Registro Y#6

Ahora nos encontramos con la instrucción


LDA ($43),Y	

El microprocesador 6502 primero toma los valores almacenados en las ubicaciones de memoria $43 y $44 y los interpreta como una dirección. En este ejemplo, encuentra los valores #$53 y #$E4 y, como sabe que el primer byte es el valor bajo de la dirección y el segundo es el valor alto, se da cuenta de que la dirección a la que se hace referencia es $E453. Luego, el 6502 suma el valor de desplazamiento, 6, obtenido del registro Y, a esta dirección, y calcula que la dirección a la que se accederá será $E453 + 6 = $E459. Finalmente, ejecuta la instrucción LDA y carga el Acumulador con el valor almacenado en la ubicación de memoria $E459.


Aunque esto parece una forma extremadamente engorrosa y complicada de calcular una dirección, veremos cuán importante y versátil es realmente esta instrucción. De hecho, muchas aplicaciones que usaremos no serían fáciles sin este modo de direccionamiento.


Dado que el modo de direccionamiento Indexado Indirecto requiere la Página Cero, utiliza sólo 2 bytes para la instrucción. Sin embargo, los cálculos involucrados son bastante complicados, como hemos visto, por lo que este modo de direccionamiento requiere 5 ciclos de máquina para ejecutarse.


El último modo de direccionamiento que se analizará aquí se denomina modo Indirecto Indexado y podemos ver de inmediato por qué a menudo se confunde con el modo que acabamos de analizar, el modo Indexado Indirecto. Sin embargo, su uso es completamente diferente. A continuación, se muestra una instrucción típica escrita en este modo:


LDA ($43,X)	

Podemos ver que este modo usa el registro X, en lugar del Y, y que todo el operando está entre paréntesis. Esta instrucción sería interpretada por el 6502 de la siguiente manera:


1. Sume el valor almacenado en el registro X a la dirección base, $43 (Por ejemplo, si X = 4, entonces esta suma es igual a $47).
2. Esta suma luego se interpreta como otra dirección de Página Cero (en este ejemplo, la segunda dirección de Página Cero es $47).
3. Encuentre el valor de 2 bytes almacenado en esta dirección calculada ($47,$48) e interprételo como una nueva dirección (Consulte A continuación, una explicación de un ejemplo).
4. Cargue el Acumulador con el valor almacenado en esta nueva dirección.

Nuevamente, tomemos un ejemplo. Supondremos que previamente hemos almacenado el valor #$E4 en la ubicación de memoria $48, el valor #$53 en la ubicación de memoria $47 y el valor 4 en el registro X. Gráficamente tenemos esto:


UbicaciónContenido
$47#$53
$48#$E4
Registro X#4

Entonces nos encontramos con esta instrucción:


LDA ($43,X)	

Sumamos el contenido del registro X a la dirección base especificada y obtenemos $43 + 4 = $47. Luego buscamos en las ubicaciones de memoria $47 y $48 e interpretamos los 2 bytes almacenados allí como una nueva dirección: $E453 (Recuerde, primero el byte bajo y luego el byte alto). Finalmente ejecutamos la instrucción, cargando el Acumulador con el valor almacenado en la ubicación de memoria $E453. Esta operación requiere 6 ciclos de máquina y, por lo tanto, es la instrucción más lenta que hemos encontrado hasta ahora. Dado que requiere direccionamiento de Página Cero, solo necesita 2 bytes por instrucción. Como se mencionó anteriormente, esta instrucción rara vez se utiliza. Su uso principal es establecer una tabla en la Página Cero y luego acceder a esta tabla para proporcionar direcciones en otras partes de la memoria. Sin embargo, su ATARI tiene un espacio limitado disponible para su uso en la Página Cero, especialmente cuando el cartucho de BASIC o del Assembler/Editor está en su lugar; generalmente no tenemos espacio para construir una tabla de este tipo en la Página Cero y utilizamos otros modos de direccionamiento para construir dichas tablas en otros lugares. Sin embargo, este modo se puede utilizar en aplicaciones que no están diseñadas para usarse con un cartucho. Los juegos tipo arcade son un ejemplo: el juego es independiente y uno es relativamente libre de usar más ubicaciones de Página Cero.


OTROS MODOS DE DIRECCIONAMIENTO


Hemos analizado 8 de los 13 modos de direccionamiento disponibles del microprocesador 6502. Los cinco modos restantes no se pueden demostrar utilizando el comando LDA, ya que utiliza sólo estos ocho modos. Ahora discutiremos los demás, usando otros comandos en el conjunto de instrucciones.


MODO ACUMULADOR


Las instrucciones ROTATE y SHIFT, es decir, ROR, ROL, ASL y LSR, pueden usar un modo de direccionamiento conocido como modo Acumulador:


ROR A	

o


ASL A	

Esto simplemente significa que la rotación o desplazamiento debe realizarse sobre el contenido del Acumulador en lugar del contenido de alguna ubicación de memoria. Tenga en cuenta que estas instrucciones también pueden funcionar en la memoria:


ROL $0523	

MODO IMPLÍCITO


Muchas de las instrucciones pueden utilizar un modo de direccionamiento Implícito, donde el modo de direccionamiento es obvio a partir de la instrucción. Por ejemplo, DEX y CLD son instrucciones de 1 byte cuyo destino de direccionamiento es obvio a partir de la instrucción misma.


MODO RELATIVO


Todas las instrucciones BRANCH utilizan el modo de direccionamiento Relativo. Es decir, se puede leer que la bifurcación significa avanzar 10 bytes o retroceder 4 bytes. La bifurcación es relativa a la posición actual del Contador de Programa.


MODO INDIRECTO


La instrucción JMP puede utilizar la forma de direccionamiento Indirecta. Por ejemplo, si configuramos una dirección almacenando #$53 en la ubicación $CD y #$E4 en la ubicación $CC, podemos saltar indirectamente a $E453:


JMP ($CC)	

MODO PÁGINA CERO, Y


El modo de direccionamiento final se llama "Página Cero, Y". Este segundo modo indexado de Página Cero lo utilizan sólo dos instrucciones, LDX y STX. Es decir, cuando el registro X se utiliza para cargar o almacenar un valor, se puede indexar con el registro Y desde una dirección base de Página Cero. Esto es prácticamente idéntico al modo "Página Cero, X" que ya hemos comentado.


Con esto concluye nuestra revisión de los modos de direccionamiento disponibles en el 6502. En Capítulos posteriores, veremos cómo estos modos se pueden usar para realizar tareas de programación útiles, y los beneficios de tener más de uno o dos modos de direccionamiento serán obvios.



Índice de Contenido | Capítulo anterior | Siguiente capítulo