Как возвратить результат после перехода в определенную метку? - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д