2010-11-29 54 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的值,然后相应跳转。