CAPÍTULO 7 LAS INSTRUCCIONES DE LOS REGISTROS ÍNDICE

Los registros índice pueden tratarse como registros auxiliares de propósito general que tiene la capacidad de ser incrementados y decrementados debido a las operaciones normales que están obligados a realizar.


7.0 LDX-CARGAR EL REGISTRO ÍNDICE X CON EL CONTENIDO DE UNA DIRECCIÓN DE MEMORIA


Cargar el registro Índice X desde la memoria.
La notación simbólica es M → X.
LDX no afecta las banderas C o V; establece Z en 1 si el valor cargado es cero, de lo contrario lo borra; establece N en 1 si el valor cargado en el bit 7 es un 1; de lo contrario, N se borra y afecta sólo al registro X. Los modos de direccionamiento disponibles para LDX son: Inmediato; Absoluto; Página Cero; Absoluto indexado por Y; Página Cero indexada por Y.


7.1 LDY-CARGAR EL REGISTRO ÍNDICE Y CON EL CONTENIDO DE UNA DIRECCIÓN DE MEMORIA


Cargar el registro Índice Y desde la Memoria.
La notación simbólica es M → Y.
LDY no afecta las banderas C o V; establece en 1 la bandera N si el valor cargado en el bit 7 es un 1; de lo contrario, borra N; establece en 1 la bandera Z si el valor cargado es cero; de lo contrario, borra Z y sólo afecta al registro Y. Los modos de direccionamiento disponibles para LDY son: Inmediato; Absoluto; Página Cero; Página Cero indexada por X; Absoluto indexado por X.


7.2 STX-ALMACENAR EL REGISTRO ÍNDICE X EN UNA DIRECCIÓN DE MEMORIA


Transferir el valor del registro X a la posición de memoria direccionada.
La notación simbólica es X → M.
Ninguna bandera o registro en el microprocesador se ve afectado por el funcionamiento de esta operación de almacenamiento. Los modos de direccionamiento para STX son: Absoluto; Página Cero; Página Cero indexada por Y.


7.3 STY-ALMACENAR EL REGISTRO ÍNDICE Y EN UNA DIRECCIÓN DE MEMORIA


Transferir el valor del registro Y a la posición de memoria direccionada. La notación simbólica es Y → M. STY no afecta a ninguna bandera o registro del microprocesador. Los modos de direccionamiento para STY son: Absoluto; Página Cero; Página Cero indexada por X.


7.4 INX-INCREMENTAR EN UNO EL REGISTRO ÍNDICE X


Suma 1 al valor actual del registro X. Este es un incremento de 8 bits que no afecta a la operación de acarreo; por lo tanto, si el valor de X antes del incremento era FF, el resultado es el valor 00. La notación simbólica es X + 1 → X. INX no afecta las banderas de acarreo o de desbordamiento; establece en 1 la bandera N si el resultado del incremento tiene un uno en el bit 7, de lo contrario borra N; establece la bandera Z en 1 si el resultado del incremento es 0, de lo contrario borra la bandera Z. INX no afecta a ningún otro registro que no sea el registro X. INX es una instrucción de un sólo byte y su único modo de direccionamiento es Implícito.


7.5 INY-INCREMENTAR EN UNO EL REGISTRO ÍNDICE Y


Suma uno al valor actual del registro Y, almacenando el resultado en el mismo registro. Como en el caso de INX, su aplicación principal es recorrer un conjunto de valores. La notación simbólica es Y + 1 → Y. INY no afecta las banderas de acarreo o de desbordamiento; establece en 1 la bandera N si el resultado del incremento tiene un uno en el bit 7, de lo contrario borra la bandera N; establece en 1 la bandera Z si como resultado del incremento el registro Y es cero; de lo contrario, borra la bandera Z. INY es una instrucción de un sólo byte y su único modo de direccionamiento es Implícito.


7.6 DEX-DECREMENTAR EN UNO EL REGISTRO ÍNDICE X


Esta instrucción resta uno al valor actual del registro Índice X y almacena el resultado en el mismo registro.
La notación simbólica es X – 1 → X.
DEX no afecta ni a la bandera de Acarreo ni a la de desbordamiento; establece en 1 la bandera N si como resultado del decremento se activa el bit 7, en caso contrario borra la bandera N; establece en 1 la bandera Z si X es igual a 0 como resultado del decremento, de lo contrario borra la bandera Z.
DEX es una instrucción de un sólo byte, y su modo de direccionamiento es Implícito.


7.7 DEY-DECREMENTAR EN UNO EL REGISTRO ÍNDICE Y


Esta instrucción resta uno del valor actual del registro Índice Y y almacena el resultado en el mismo registro. El resultado no afecta ni considera el acarreo, por lo que el valor del registro Índice Y se decrementa hasta 0 y luego pasa a FF.
La notación simbólica es Y – 1 → Y.
DEY no afecta a las banderas de acarreo o desbordamiento; Si el registro Y contiene el bit 7 como resultado del decremento, la bandera N se establece en 1, de lo contrario, se borra. Si el registro Y es 0 como resultado del decremento, la bandera Z se establece en 1; de lo contrario, se borra. Esta instrucción sólo afecta al registro Índice Y.
DEY es una instrucción de un sólo byte y su modo de direccionamiento es Implícito.
NOTA: La disminución de los registros índice es el método más conveniente para utilizarlos como un contador, ya que el decremento implica establecer en 1 el valor de la bandera N como resultado de haber pasado por 0, y establece en 1 la bandera Z cuando el resultado del decremento es 0.


7.8 CPX-COMPARAR DEL REGISTRO ÍNDICE X CON EL CONTENIDO DE UNA DIRECCIÓN DE MEMORIA


Esta instrucción resta, usando el sumador, al contenido del registro Índice X el valor de la posición de memoria que ha sido direccionada, pero no almacena el resultado obtenido; por lo tanto, su único uso es establecer las banderas N, Z y C para permitir la comparación entre el registro Índice X y el valor en la memoria.
La notación simbólica es X – M.
La instrucción CPX no afecta a ningún registro de la máquina; tampoco afecta la bandera de Desbordamiento. La instrucción CPX hace que el Acarreo se establezca en 1 si el valor absoluto del registro Índice X es igual o mayor que los datos de la memoria. Si el valor de la memoria es mayor que el contenido del registro Índice X, se borra el Acarreo. Si el resultado de la resta establece en 1 el bit 7, entonces la bandera N se establece en 1; de lo contrario, se borra. Si el valor en la memoria es igual al valor del registro Índice X, la bandera Z se establece en 1; de ​​lo contrario, se borra.
Los modos de direccionamiento disponibles para CPX son: Inmediato, Absoluto y Página Cero.


7.9 CPY-COMPARAR DEL REGISTRO ÍNDICE Y CON EL CONTENIDO DE UNA DIRECCIÓN DE MEMORIA


Esta instrucción realiza una resta en complemento a dos entre el registro Índice Y y la ubicación de memoria especificada. Los resultados de la resta no se almacenan en ninguna parte. Esta instrucción se usa estrictamente para establecer las banderas.
La notación simbólica para CPY es Y – M.
CPY no afecta a los registros del microprocesador ni tampoco a la bandera de Desbordamiento. Si el valor en el registro Índice Y es igual o mayor que el valor en la memoria, la bandera de Acarreo se establece en 1, de lo contrario se borra. Si el resultado de la resta establece en 1 el bit 7, entonces se establecerá en 1 la bandera N; de lo contrario, se borra. Si el valor en el registro Índice Y y el valor en el la Memoria son iguales, se establecerá en 1 la bandera Cero, de lo contrario se borra.
Los modos de direccionamiento para CPY son: Inmediato, Absoluto y Página Cero.

7.10 TRANSFERENCIAS ENTRE LOS REGISTROS ÍNDICE Y EL ACUMULADOR


Hay cuatro instrucciones que permiten el intercambio entre el Acumulador y los registros índice. Esta son TXA y TAX, que transfieren el contenido del registro Índice X al Acumulador y viceversa, y TYA y TAY, que transfieren el contenido del registro Índice Y al Acumulador y viceversa. Más adelante, después de las instrucciones, se discutirá la utilidad de esto.


7.11 TAX-TRANSFERIR EL CONTENIDO DEL ACUMULADOR AL ÍNDICE X


Esta instrucción toma el valor del Acumulador y lo transfiere (o lo carga) en el registro Índice X, sin perturbar su contenido.
La notación simbólica es A → X.
TAX sólo afecta al registro Índice X, no afecta a las banderas de Acarreo ni de Desbordamiento. La bandera N se establece en 1 si el valor resultante en el registro Índice X tiene el bit 7 activado; de lo contrario, N se borra. La bandera Z se establece en 1 si el contenido del registro X es 0 como resultado de la operación; de lo contrario, se borra. TAX es una instrucción de un sólo byte y su modo de direccionamiento es Implícito.


7.12 TXA-TRANSFERIR EL CONTENIDO DEL ÍNDICE X AL ACUMULADOR


Esta instrucción mueve el valor que está en el registro Índice X al Acumulador, sin perturbar el contenido del registro Índice X.
La notación simbólica es X → A.
TXA no afecta a ningún registro que no sea el Acumulador y no afecta las banderas de Acarreo ni de Desbordamiento. Si el resultado en A tiene el bit 7 activado, la bandera N se establece en 1; de lo contrario, se borra. Si el valor resultante en el Acumulador es 0, entonces la bandera Z se establece en 1; de lo contrario, se borra. El modo de direccionamiento es Implícito; es una instrucción de un sólo byte.


7.13 TAY-TRANSFERIR EL CONTENIDO DEL ACUMULADOR AL ÍNDICE Y


Esta instrucción mueve el valor del Acumulador al registro Índice Y sin afectar al Acumulador. La notación simbólica es A → Y.
La instrucción TAY sólo afecta al registro Y y no afecta a las banderas de Acarreo ni de Desbordamiento.
Si el registro Índice Y tiene el bit 7 activado, entonces la bandera N se establece en 1; de lo contrario, se borra. Si el contenido del registro Índice Y es igual a 0 como resultado de la operación, la bandera Z se establece en 1; de lo contrario, se borra.
TAY es una instrucción de un sólo byte y su modo de direccionamiento es Implícito.


7.14 TYA-TRANSFERIR EL CONTENIDO DEL ÍNDICE Y AL ACUMULADOR


Esta instrucción mueve el valor que está en el registro Índice Y al Acumulador, sin perturbar el contenido del registro Y.
La notación simbólica es Y → A.
TYA no afecta a ningún otro registro que no sea el Acumulador y no afecta ni a la bandera de Acarreo ni a la de Desbordamiento. Si el resultado en el Acumulador tiene el bit 7 activado, la bandera N se establece en 1; de lo contrario, se borra. Si el valor resultante en el Acumulador es 0, entonces la bandera Z se establece en 1; de lo contrario, se borra.
TYA es una instrucción de un sólo byte y su modo de direccionamiento es Implícito.


Las instrucciones de transferencia entre el Acumulador y los registros índice X, Y se aplican cuando el usuario desea usar el registro Índice para acceder a las posiciones de memoria donde hay varios valores de bytes entre las direcciones. En esta aplicación, un contador se carga en el registro Índice, luego el registro Índice se transfiere al Acumulador, a este se le suma de inmediato un valor como 5, 7, 10, etc. y el resultado se almacena de nuevo en el registro Índice usando la instrucción TAX o TAY. La consecuencia de este tipo de operación es que permite que el microprocesador pueda acceder a ubicaciones no consecutivas en la memoria. Otra aplicación es donde las instrucciones de transferencia interna permiten que los registros índice mantengan valores intermedios del Acumulador, lo que permite una transferencia rápida hacia y desde el Acumulador para ayudar a resolver problemas de reorganización de datos a alta velocidad.

7.15 RESUMEN DEL MANEJO DE LOS REGISTROS ÍNDICE


El principal uso de los registros índice X e Y es como desplazamiento y como contador para la manipulación de los datos en los que el registro Índice se utiliza para calcular una dirección basada en el su valor más una dirección base especificada por el usuario, ya sea en un formato de instrucciones fijas o en un formato del tipo puntero variable. Para operar como un desplazamiento (offset) o como un contador, los registros índice pueden incrementarse o decrementarse en uno o ser comparados con los valores de la memoria. Existen limitaciones en las aplicaciones de cada uno de los registros índice que tienen que ver con formatos que son exclusivos para ciertos modos de direccionamiento de algunas instrucciones. Debido a la capacidad de los registros índice para cargarse, modificarse y ser almacenados, también son útiles como registros de propósito general. Se pueden utilizar como almacenamiento provisorio para movimientos entre posiciones de memoria o para movimientos entre la memoria y el Acumulador.
Uno de los usos óptimos del concepto de indexación se da cuando el registro Índice se utiliza tanto como desplazamiento como contador. Este tipo de operación utiliza la capacidad del microprocesador para realizar una función de decremento en los registros índice y establecer banderas. Por lo tanto, una sola instrucción de decremento no sólo cambia el valor del contador, sino que también puede realizar una comprobación sobre el valor del mismo.