Поскольку моя основная ОС - это Linux и есть проект на визуальной студии, я решил использовать онлайн-компиляторы для ее достижения. Я нашел this, что было предложено многими. Так вот мой код:Сборка: JA и JB работают некорректно
#include <iostream>
using namespace std;
int main(void) {
float a = 1;
float b = 20.2;
float res = 0;
float res1 = 0;
_asm {
FLD a
FCOM b
JA midi
JMP modi
midi:
FST res
JMP OUT
modi:
FST res1
JMP OUT
}
OUT:
cout << "res = " << res << endl;
cout << "res1 = " << res1 << endl;
return 0;
}
Моя цель проста, если a
больше что b
чем ставить a
в res
, в противном случае в res1
. Но кажется, что у меня есть переменная a
, она всегда прыгает на midi
, и результат всегда res = whatever is in a
. Надеюсь, ты поможешь. Извините, если мои вопросы глупы, я только начал изучать сборку. спасибо :)
P.S
То же самое происходит с JB
, но напротив. Он всегда печатает res1 = whatever is in b
.
Я получаю сообщение об ошибке сказав 'source_file.cpp (13): ошибка C2414: незаконное количество operands' – Rasty
@Rasty, кажется, что' FCOMI' не может принимать операнд в памяти - загрузить его в регистр. Но у вас есть основная причина, почему ваш код не работает. –
Извините, я не видел вашего ответа, когда я разместил свой файл :(Я держу его с тех пор, как я уже написал его –