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

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

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

Здравствуйте! Сравниваю две строки, и всегда получаю один результат. Не знаю как возвратить результат, после перехода в определенную метку.
Листинг программы
  1. char* _stdcall func(char *a, char *b, char* msg, char* msg2)
  2. {
  3. __asm
  4. {
  5. mov ESI, a
  6. mov EDI, b
  7. repe cmpsb
  8. jne error
  9. jmp ok
  10. error :
  11. mov eax, msg
  12. ok :
  13. mov eax, msg2
  14. }
  15. }
  16. int main()
  17. {
  18. char str_1[] = "Hello, world!";
  19. char str_2[] = "Hello, world!44";
  20. char *c = func(str_1, str_2, "Mistake", "TRUE");
  21. cout << c;
  22. system("pause");
  23. return 0;
  24. }

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

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

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

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы