- Normally if I was coding this in C I'd just look for'\0'
Why does asm have to be any different? In any language I choose I can simply iterate through the bytes looking for a zero byte. The language is irrelevant. ASM is a language as is C or pascal or java, etc. If it is a zero terminated C string then whatever language you simply look for a zero.
C, asm, etc ram is ram an address is an address, so here again it has nothing to do with it, you have a starting address you iterate through until you find the zero byte.
Am I misunderstanding the question? Is your "string" not a C string, not zero terminated? If it isnt then your string by definition has to have some well known (to both sides) termination and or length specification. And then once you have defined that well known termination you simply implement that in whatever language you choose.