To quote the description of your link (emphasis mine):
The DSECT directive is used to define an area of memory [...] without actually generating any output object code. [...] The most common use [...] is to define the labels [...] that occur in the [...] page zero.
So the reason why you do not get an "A" is that your DSECT doesn't produce any ...
The opcodes are already sorted that way. Just a bit less obvious and schoolbook-like, but optimized to allow compact decoding.
It is all about space saving.
Real chip space and (potential) transistors that is. It's well known that the 6500 design was all about cost saving and the most important factor in chip production cost is its size. Smaller chips mean ...
The instruction decode is quite simple on the 6502.
If we call the bits in the opcode byte aaabbbcc, then one of the first things that happens is that cc, the two bits you're talking about, gets converted into a 1-of-3 signal which selects the register. This signal is called G, and is computed like this:
A is true if the bits are 01
X is true if the bits ...