Is it possible to rewrite the asm routines in C? If so, then that's definitely your best solution. If not, then something similar to what you outlined should work.
A better solution might be to place the asm routines in C functions with inline asm. This makes it easy to pass the data back and forth between the C and asm functions. The method of doing this varies from compiler to compiler, but it probably looks something like:
Code:
void my_function()
{
_asm {
// your asm routine goes here
}
// Put C code here to handle the result of the asm routine
}
Look up how to write inline assembly in your compiler's documentation.