Otros modos de direccionamiento derivados de los básicos

Hay otros modos de direccionamiento que, en cierto modo, son variantes o pequeñas complicaciones de los anteriores:

  • Direccionamiento de página cero. En el fondo es muy parecido al direccionamiento absoluto (el dato está en una posición de memoria), con la salvedad de que la posición de memoria referenciada está en la página cero y, por tanto, es suficiente el byte LSB para especificarla (dando por hecho que el byte MSB será $00). Gracias a esto se consigue que la instrucción ocupe un byte menos y se ejecute más rápido.
  • Direccionamiento acumulador. Hay instrucciones como “asl”, “lsr”, “rol” y “ror” que permiten manipular los bits del acumulador. Por tanto, los datos en cierto modo están implícitos en la instrucción; de ella se deduce que están en el acumulador. Entonces, ¿por qué se habla de otro modo de direccionamiento diferente (implícito vs acumulador)? Sinceramente, no lo tengo muy claro. No veo mucha diferencia en la práctica. La principal diferencia que aprecio es que las instrucciones que soportan el modo implícito (“clc”, “sec”, “cli”, “sei”, “cld”, “sed”, “clv”, etc.) no soportan otros modos de direccionamiento, mientras que las que soportan el modo acumulador (“asl”, “lsr”, “rol” y “ror”) sí tienen otros modos de direccionamiento, por ejemplo, para actuar sobre los bits de una posición de memoria (direccionamiento absoluto). Por tanto, podría ser una forma de diferenciar cuándo la instrucción actúa sobre una posición de memoria de cuándo actúa sobre el acumulador. Pero igualmente se le podría haber llamado “modo implícito” a mi entender.
  • Direccionamiento indexado (también llamado “absoluto, X” y “absoluto, Y”). Nuevamente, es parecido al direccionamiento absoluto, en el sentido de que el dato está en una posición de memoria. La novedad es que esa posición de memoria se determina sumando la posición incluida en la instrucción (bytes 2 y 3), más el registro X o Y. Como ya se comentó al revisar los registros, un uso muy importante de los registros X e Y es su uso como índice. Aquí se puede ver. Este modo de direccionamiento permite recorrer cómodamente zonas de memoria incrementando el valor del registro X o Y.
  • Direccionamiento indexado, pero relativo a posiciones de memoria en página cero (también llamado “página cero, X” y “página cero, Y”). Igual que el anterior, pero con una dirección de base en la página cero.

Modos dir2


Programa de ejemplo: Prog08

Deja un comentario