Как возвратить результат после перехода в определенную метку? - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Сравниваю две строки, и всегда получаю один результат. Не знаю как возвратить результат, после перехода в определенную метку.
char* _stdcall func(char *a, char *b, char* msg, char* msg2)
{
__asm
    {
        mov ESI, a
        mov EDI, b
 
        repe cmpsb
        jne error
        
        jmp ok
 
        error :
        mov eax, msg
 
        ok :
        mov eax, msg2
    }
}
 
int main()
{
    char str_1[] = "Hello, world!";
    char str_2[] = "Hello, world!44";
    char  *c = func(str_1, str_2, "Mistake", "TRUE");
    cout << c;
    system("pause");
    return 0;
}

Решение задачи: «Как возвратить результат после перехода в определенную метку?»

textual
Листинг программы
        error :
        mov eax, msg
 ;тут нет перехода
        ok :
        mov eax, msg2

Объяснение кода листинга программы

  1. error - это метка в коде.
  2. Код переходит к метке ok.
  3. Переменная eax используется для хранения значений.
  4. Значение переменной eax устанавливается равным msg2.
  5. Значение переменной eax устанавливается равным msg.

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы