1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include<stdio.h> #include<stdlib.h>
char getGrade(int grade) { if (grade < 60) { return 'F'; } else if (grade == 60) { return 'E'; } else { return 'D'; } }
char __declspec(naked) getGradeByAsm(int grade) { __asm { push ebp; mov ebp,esp;
mov ebx,[grade]; cmp ebx,60; jge elseif; mov eax, 'F'; jmp fun_end; elseif: cmp ebx,60; jne elseif2; mov eax, 'E'; jmp fun_end; elseif2: mov eax, 'D'; jmp fun_end;
fun_end: mov esp, ebp; pop ebp;
ret } }
int main() { int grade = 0; scanf_s("%d", &grade); printf("%c",getGradeByAsm(grade));
}
|