在装配中分配等级

时间:2010-11-29 05:53:15

标签: assembly

我必须在汇编中编写一个程序,为学生分配一个字母等级并将其传递给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

1 个答案:

答案 0 :(得分:1)

看到我避免做作业,我会指出你需要去的方向: A good x86 FPU tutorial(具体而言,comparison instructions)。

FCOM与FPU堆栈的顶部ST(0)进行比较,因此在将它们与源值进行比较之前需要FLD检查的值,反之亦然,FLD来源,与你拥有的'括号'进行比较。那么您需要提取状态字(使用FSTSW)并使用逻辑AND检查值,然后相应地跳转。