Conceptual Descriptions of Indirect and Indexed Addressing...
Indirect Addressing:
Indirect Addressing is like a covert-courier working under a double-blind dead-drop arrangement.
For whatever purpose, some agency (function) needs to know the value of some particular information (data).
One way or another, the data is placed at an appropriate location. Then, the identity of that location is placed at the primary-drop-point.
Under one arragement or another, on a scheduled basis or based on some particular event, the particular courier (function-fetch) always goes to a particular primary-drop-point. When required, the courier (function-fetch) goes to the primary-drop-point; he (the function-fetch) reads the note at the primary-drop-point, and then he knows the location of the secondary-drop-point. The courier (the function-fetch) then goes to the secondary-drop-point and gathers the information (data) and delivers it to wherever the information is required.
.
For whatever reason, this can be made more complicated (blinded) by using a triple- or quadruple-blind. As in, a pointer pointing to a pointer which is pointing to a pointer which is pointing to a ... etc.
.
Indexed Addressing:
Indexed Addressing is nothing more, or less, than simply counting from a staring place.
The basic idea is to... "start-here", and then apply this "offset", and then do something for so-many iterations (counts).
If the initial offset-value is zero then the data at the "start-here" location is the first data moved, manipulated, or whatever. If the initial offset-value is "6" then that means that the data at the 6th location after the "start-here" location is the first data moved, manipulated, or whatever. This then continues for "so-many" iterations.