// прототип ассемблерной процедуры
viod asm_proc(unsigned adr);
unsigned char code my_str[]="blablabla";
...
// вызов из си-кода
asm_proc((unsigned)my_str);
В ассемблерной процедуре вначале добавить
mov DPH,R6
mov DPL,R7
или R6 и R7 поменять местами, я не помню, как передается младший/старший байт в процедуру