Top.Mail.Ru
Ответы

Даны строки str="hello world!" и str1="world".Как найти начало вхождения str1 в строку str?(ассемблер)

Дополнен

На ассемблере.

По дате
По рейтингу
Аватар пользователя
Гений
9лет

Ну алгоритм используя команды ассемблера для семейства x86 - найти первый символ из второй строки в первой строке с помощью repne scasb, если нашли - сравнить две строки с помощью repe cmpsb. Только надо отслеживать не вышли ли Вы за пределы строки (за регистром cx/ecx). Если есть выравнивание - можно реализовать соотв на scasw/scasd, cmpsw/cmpsd

В MASM н-р есть готовая библиотечная функция InString.
Её исходник можно посмотреть в папке с MASM - m32lib\instring.asm
Параметры вызова: позиция с которой ищем, адрес строки1, адрес строки2
Возвращает: результат в eax (номер позиции в строке), при ошибке ecx <=0
строка1 должна быть длиннее строка2

Для вызова в MASM
include \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib

....
invoke InString, 1, ADDR строка1, ADDR строка2