Как возвратить результат после перехода в определенную метку? - 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
Объяснение кода листинга программы
error- это метка в коде.- Код переходит к метке
ok. - Переменная
eaxиспользуется для хранения значений. - Значение переменной
eaxустанавливается равнымmsg2. - Значение переменной
eaxустанавливается равнымmsg.