Сравнение массива строк со строкой в ​​Intel ASM - PullRequest
0 голосов
/ 17 апреля 2020

Я просто пытаюсь сравнить строки , одну в массиве и одну просто строку . Неравная ветвь работает несмотря на то, что первый символ равен.

Я планирую обойти весь массив в поисках равной строки, но не могу даже сравнить ее.

Если у вас есть какие-либо предложения, помощь или ресурсы, я был бы очень признателен за это. Я чувствую, что с любыми двумя строками, которые я пишу, я сталкиваюсь с ошибкой.

int main() {
    string arr[] = {"a","b","c","d","e" };
    string a= "a";
    char d;
    int test = 5;
    int test2 = 10;
    int index = 0;
    __asm {
        lea ebx,[arr]// Load address of the array into register ebx
        lea si,a // Load address of string a into si
        cmp [ebx],si // Compare a character from EBX to a character from si
        je SAME // JUMP IF EQUAL
        jne NOTSAME// jump if not equal

        SAME:
        mov test2,3
        jmp DONE

        NOTSAME:
        mov test,2
        jmp DONE

        DONE:
        mov index, 1

    }
    for (int x = 0; x < 5; x++) {
        cout << arr[x] << endl;
    }
    cout << a << endl;
    cout << test << endl;
    cout << test2 << endl;
}
...