由於我的主要操作系統是Linux,並在Visual Studio上有項目,我決定使用聯機編譯器來實現它。我發現許多人建議使用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'不能把內存操作 - 它加載到寄存器中。但是,你有基本的原因,你的代碼不起作用。 –
對不起,我沒有看到你的答案,當我貼我的:(我保持它,因爲我已經寫了它 –