The earlier 704 also had a decrement part in the instruction, and the 7090 can emulate the 704, so one should look at the smaller instruction set of the 704 for reasons for this design decision.
As the IBM 704 manual states on page 12, there are 5 "Type A" instructions which contain both a a decrement and an address field, namely TIX
, TNX
, TXH
, TXL
, TXI
(those instructions also exist for the 709 series). The T in those instructions stands for "transfer", but that means "transfer of control" (modern jump/branch instructions), not "transfer of register contents".
In particular, TIX
"transfer on index" and TNX
"transfer on no index" decrement the index register, compare it with zero (though it's phrased as if the comparison is with the decrement value, but that's an implementation detail), and depending on the result, store the decremented value in the index register and/or take the branch to the new address.
The reason for this is that it's difficult to provide both an increment/decrement value and a limit to compare with in a single instruction (one would need enough bits for both fields).
If the limit is zero, then looping through indexes from the lower index to the upper limit requires a negation somewhere. And that's the reason indexing is done by subtracting the index, and increasing the index is done by decrementing the index register.
There's also an instruction to increment the index register (TXI
, transfer with index incremented), but that's an unconditional jump, so for tight loops, the other indexing instructions would be preferred.
As mentioned in the comment above, the PDP computers used a similar technique for indexing, except the two's complement had to be calculated manually, and core locations served as index values.
Here's a typical routine (scalar product) that uses indexing, taken from the Coding for the IBM 704 document, so one can see how it was used:
LXA COUNT,1 load index register
LOOP LDQ VECTA+3,1
FMP VECTB+3,1
FAD ANSWER
STO ANSWER
TIX LOOP,1,1
HPR
COUNT PZE 3 a constant
ANSWER originally contains 0