¿En qué circunstancias se utilizan instrucciones de direccionamiento de punteros?
Puntero para direccionamiento indirecto de memoria
La instrucción utilizada para el direccionamiento indirecto de memoria en el programa incluye una instrucción, un identificador de dirección y un desplazamiento (el desplazamiento debe indicarse entre corchetes).
A continuación se proporciona un ejemplo de un puntero de formato de doble palabra:
l
p#8.7
Cargue el valor del puntero en el dispositivo acumulador 1
t
i[md2]
transfiere el valor del puntero a md2
a
i [md2]
Consulta el estado de la señal de i8.7
t
i[md2]
. 7
=
q[md2]
Asignar un valor al bit de salida q8.7
Direccionamiento interno y direccionamiento intercalado de el área de memoria Dirección
: una declaración de programa que utiliza uno de estos modos de direccionamiento consta de una instrucción y lo siguiente: un identificador de dirección, un identificador de registro de dirección y un desplazamiento. Dirección
Los registros (ar1, ar2) y los desplazamientos deben escribirse entre corchetes.
Rutina de direccionamiento interno para área de almacenamiento
: El puntero no contiene información que indique el área de almacenamiento:
l
p#8.7
Cargar el valor del puntero en el acumulador 1
lar1
Cargar el puntero del acumulador 1 en ar1
a
i[ar1,p#0.0]
Consultar el estado de la señal de i8.7
=
q[ar1,p#1.1]
Asignar un valor al bit de salida q10.0
El desplazamiento 0.0 no funciona. El bit de salida q10.0
es igual a 8.7
(ar1)
Suma el desplazamiento 1.1, el resultado es 10.0
en cambio 9.8.
Rutina de direccionamiento de entrelazado de área de memoria
: En el direccionamiento de entrelazado de área de memoria, el puntero contiene información que indica el área de memoria (en el ejemplo
i
y
q).
l
p#i8.7
Cargue el valor del puntero y el identificador del área de almacenamiento en el acumulador 1
lar1 p>
Almacene el área de almacenamiento i
y la dirección 8.7 en ar1
l
p#q8.7
Almacene el valor del puntero e identificador de dirección en el acumulador 1
lar2
Mover el área de almacenamiento q y la dirección 8.7 a ar2
a
[ar1,p# 0.0]
Consultar el estado de la señal del bit de entrada i8.7
=
[ar2,p#1.1]
Asignar valor al bit de salida q10.0 Asignación
El desplazamiento 0.0 no funciona. La salida q10.0
es igual a 8,7
(ar2)
más un desplazamiento de 1,1. El resultado es 10,0
, no 9,8
.