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