Direcciones variables

Vamos a explicar las alternativas que se implementan de manera habitual en la actualidad:

  • Direccionamiento absoluto: En este caso es el dispositivo o la interfaz del dispositivo la encargada de conocer la dirección de la RSI y de enviarla al procesador para que este pueda localizar dicha subrutina y ejecutarla.

  • Direccionamiento relativo: El dispositivo solo suministra parte de la dirección de comienzo y es el procesador el encargado de completarla (añadiendo bits o sumando una determinada cantidad, que siempre será fija). Esta alternativa tiene una ventaja sobre la anterior y es que permite especificar la dirección de comienzo con menos bits y por tanto simplifica el diseño. Ahora bien tiene una desventaja principal y es que limita el número de dispositivos que podemos conectar y además ciertos bits de la dirección quedan fijados de forma permanente por la CPU lo que reduce la capacidad de reubicabilidad de la RSI. Una alternativa que utilizan ciertos procesadores como el 8080 o 8085 es que en vez de enviar solamente la dirección de comienzo de la RSI se envía también el código de la operación de salto (call por ejemplo).

  • Direccionamiento indirecto: También conocida como direccionamiento por interrupciones vectorizadas. Se mantiene una tabla de vectores de interrupción (direcciones de comienzo de las distintas RSI) y a cada interrupción se le asocia un número que será el índice por el cual se accederá a la tabla y se recuperará la información de la dirección de comienzo. Necesita señales de conformidad o 'handshaking' para sincronizar al procesador con la interfaz, ya que esta última tiene que indicarle al procesador cuando va a enviarle el índice que necesita para buscar el vector de interrupción (INT) y el procesador deberá enviar otra señal para indicar que se ha reconocido la interrupción (INTA#).
Por último introducimos otro apartado en el que indicamos las distintas formas de identificar la fuente de una determinada interrupción.