Why is it that some DMA codes do not work when they are turned back into a regular code?

I sub-routined the regular version and it still didn't work.

Why is it that if I directly sub-routine the DMA it will work.

#SKYWALKER DMA Hz15
0xFFFFFFFF 0x00505858
0x00000368 0x00000000

#SKYWALKER <<<<<<<< Doesn't Work
0x0138A898 0x00000000

#SKYWALKER SUB <<<<<<<< Doesn't Work
0x00000118 0x0A400000
0x00800000 0x3c0809B9
0x00800004 0x00004800
0x0080000c 0xad09A898
0x00800010 0x03e00008