Почему мой код переходит к return1, даже если значение в ebx больше, чем значение в eax - PullRequest
0 голосов
/ 29 декабря 2018

Так что это код, и он всегда переходит к return1, даже если значение в ebx больше, чем значение в eax

Я пытался использовать ret, но это вызывает нарушение памяти.

mov eax, 5
mov edx, 5
mov ebx, 11
add eax, edx
cmp eax, ebx
jg return1
mov eax, 0
return1:
mov eax, 1

Я ожидаю вывод «0», но фактический вывод «1»

1 Ответ

0 голосов
/ 29 декабря 2018

Ваш код перезаписывает регистр EAX, игнорируя принятую ветвь.

В случае (EAX> EBX) будет выполнен код:

mov eax, 0 // eax = 0
mov eax, 1 // eax = 1

В противном случае:

mov eax, 1 // eax = 1

Попробуйте вставить безусловный переход (переход) в код выхода непосредственно перед меткой «return1», чтобы исключить перезапись регистра EAX:

mov eax, 5
mov edx, 5
mov ebx, 11
add eax, edx
cmp eax, ebx
jg return1
mov eax, 0
jmp return2
return1:
mov eax, 1
return2:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...