The direction flag can be changed with __writeeflags. Check an example:
unsigned long s[8] = { 100, 101, 102, 103, 104, 105, 106, 107 };
unsigned long d[8] = { 0 };
__writeeflags( __readeflags() | ( 1 << 10 ) );
__movsd( d + 4, s + 4, 3 );
It seems to work, however it does not generate just a simple std. Maybe consider adding an asm file to your project. Visual Studio is able to compile it.