2010-11-29 10 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

+0

アセンブリはより良いタグなので、私は考えました。 – justbrianr

+0

私は、平均6の成績を取った後、学生に文字等級を割り当てる関数を書く必要があります。いつものように90+はA、80+が<90はBなどです。 – justbrianr

答えて

1

を渡しています: A good x86 FPU tutorial(具体的には、 comparison instructions)。

FCOM、FPUスタックの最上部との比較を行いST(0)、あなたがあなたの元の値またはその逆にそれらを比較する前に、チェック対象の値をFLDする必要があるので、FLDソース、「ブラケット」対比較あなたが持っている。ステータスワード(FSTSW)を取り出し、論理値ANDで値をチェックし、それに応じてジャンプする必要があります。

+0

'fcom m32fp'を使うのは問題なく、比較値がロードされています。あなたはFPUステータスワード(制御ワードが異なっていて、 'FSTSW'が正しい)を必要としているときに完全に正しいですし、ビットをチェックします。 – Zooba

+0

@ zooba:ええ、ちょうど私は彼がすでにやったことを繰り返したが、まあ、正しいことを言っても害はない:P – Necrolis

関連する問題