asve79

;zill zero string => fill zero string?

Присмотритесь для поиска нуля в строке к команде CPIR - будет эффективнее по скорости. Вот, например, как это реализовано в SDCC:

Код:
unsigned int Strings_Length (unsigned char *str) __z88dk_fastcall {
  __asm
    XOR  A
    LD   B,A
    LD   C,A
    CPIR
    LD   HL,#0xFFFF
    SBC  HL,BC
__endasm;
}
А вот так, если длина строки не более чем len (будет достигнут 0 или строка закончится по длине - без 0). Экзотика, но это я для Оберона делал. Более безопасная работа со строками:

Код:
unsigned int Strings_LengthEx (unsigned int len, unsigned char *str) __z88dk_callee {
    __asm
        POP  HL
        POP  BC             ; len
        EX   (SP), HL       ; str
        LD   E, C
        LD   D, B
        XOR  A
        CPIR
        EX   DE, HL
        RET  NZ
        SBC  HL, BC
        DEC  HL
    __endasm;
}