2010-11-29 55 views
0

我必須編寫程序集來爲學生分配一個字母等級並將其傳回給C++程序。在程序集中指定成績

在C++中,我路過

extern "C" char LetterGrade (double); 


.data 

GradeA REAL4 89.99 

GradeB REAL4 79.99 

GradeC REAL4 69.99 

GradeD REAL4 59.99 

_LetterGrade proc 

fld REAL4 PTR [esp + 4] 

fcom GradeA 
jnbe L1 

fcom GradeB 
jnbe L2 

fcom GradeC 
jnbe L3 

fcom GradeD 
jnbe L4 

mov eax, 'F' 
ret 

L1: 
mov eax, 'A' 

ret 

L2: 
mov eax, 'B' 

ret 

L3: 
mov eax, 'C' 

ret 

L4: 
mov eax, 'D' 

ret 

_LetterGrade endp 
+0

最新的問題是什麼?爲什麼這不被標記爲家庭作業? – Necrolis 2010-11-29 06:26:21

+0

大會是一個更好的標籤,或者我想。 – justbrianr 2010-11-29 06:37:39

回答

1

看到,因爲我避免做功課,我會代替你指出,你需要去的方向: A good x86 FPU tutorial(具體而言, comparison instructions)。

FCOM確實比較給FPU堆棧,ST(0)的頂部,所以你需要FLD你覈對你把它們比作你的源值或反之亦然,FLD源之前的數值,比較VS的「括號」你有。那麼您需要拔出狀態字(使用FSTSW),然後檢查邏輯值爲AND的值,然後相應跳轉。