inline assembly question .

so i have been working with SPI and inline assembly for some time now . the thing is , for example when we want to use the I/O ports , you have the "out" command and all you need is the address of the needed port . the thing is what should i do when working with other registers , such as the interrupt and timers registers and for example the SPI data register "SPDR" .
in the program , setting that register for trigger the SPI transmission , though in assembly setting it in real time seems to be a small issue . when i use the "mov" command for this for example , that always seems not to work or to cause issues .
what i do for these things in usual is to use the "ST" command , that stores the value in the ram address pointed by a register pair like "X" or "Y" , the thing is , that does not seem to be very practicle ,

The ATmega328P datasheet shows Assembler and C examples for using the SPI interface in Master or Slave mode. In the assembler examples they use the 'out' and 'in' instructions to write and read device registers.

thank you .