Сканирование строки на наличие символа, вывод остатка строки после символа - PullRequest
0 голосов
/ 04 мая 2020

Я просматриваю строку до тех пор, пока не будет найден указанный символ c, а затем печатаю остальную часть строки после того, как этот символ найден. В основном, если моя строка «Быстрая коричневая лиса», и я ищу «k», я хочу напечатать «коричневая лиса». У меня есть код, чтобы отсканировать все готово, но я просто озадачен тем, как продвигать указатель на байт после разделителя и печатать оттуда. Прямо сейчас он печатает все до разделителя, включая сам символ и несколько ненужных символов после него.

    INVOKE Str_length, strVar

    mov edi, strVar
    mov al, find
    mov ecx, LENGTHOF line
    cld
    repne scasb
    jnz NOHIT

HIT:
    cld
    rep movsb
    mov BYTE PTR[edi], 0
    mov edx, OFFSET line
    call WriteString
    call Crlf
    ret 

Очевидно, мой код для вывода неправильный, я просто не знаю, откуда go отсюда.

1 Ответ

0 голосов
/ 04 мая 2020

Удалось выяснить это, публикуя для всех, у кого может быть такая же проблема в будущем! Чрезвычайно простое решение:

    cld
    mov edx, edi
    call WriteString
    call Crlf
    ret 

Поскольку scasb увеличивает значение edi до тех пор, пока не будет достигнут разделитель, все, что вам нужно сделать, - это распечатать само значение edi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...