Присвоение оценок по сборке - PullRequest
0 голосов
/ 29 ноября 2010

Мне нужно написать процедуру на ассемблере, чтобы присвоить ученику оценку за букву и передать ее обратно в программу 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 Ответ

1 голос
/ 29 ноября 2010

Поскольку я избегаю делать домашнее задание, вместо этого я укажу вам направление, в котором вы должны идти: Хорошее учебное пособие по x86 FPU (в частности, инструкции по сравнению ).

FCOM выполняет сравнение с вершиной стека FPU, ST(0), поэтому вам нужно FLD значения, с которыми вы проверяете, прежде чем сравнивать их с исходным значением или наоборот, FLDисточник, сравните с «скобками» у вас есть.затем вам нужно вытащить слово состояния (с помощью FSTSW) и проверить значения с помощью логического AND, а затем перейти соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...