Please see below a small snippet of code which uses I1.0 directly addressed, and then the same access using a run time created indirect access to I1.0
I have deliberately loaded the pointer area into the accumulator first, and then transferred it to address register 1 (AR1) so you can see the values being loaded as hex codes (I would normally load the values directly into AR1). As you can see, once a valid area is loaded into AR1, the display conveniently shows you the area being used. I have also shown the area pointer (now you can see where the byte address is stored in the pointer, this explains why you need to shift a byte address left 3 bits to convert it to an area pointer)
The area coding ZZZ, is as follows:
000=Peripheral(PIW/PQW)
001=Input(I)
010=Output(Q)
011=M
100=DBX (global DB)
101=DIB (instance DB)
110=L (temp local data)
111=V (temp local data of the preceding block)
Here is another snippet of code showing the loading of different areas first into the accumulator and then AR1
Finally, here is FC277 shown with extra comments and the online view with the byte address set to 1 and the bit address set to 0, the block is thus accessing I1.0 using indirect addressing. (I have chosen to limit the max byte address to 255 for my 317 plc)
Chew this over and come back with any questions.