Question
In Assembly Language 3. Test Score Evaluation Create a procedure named CalcGrade that receives an integer value between 0 and 50, and returns a single
In Assembly Language
3. Test Score Evaluation Create a procedure named CalcGrade that receives an integer value between 0 and 50, and returns a single capital letter in the AL register. Preserve all other register values between calls to the procedure. The letter returned by the procedure should be displayed and should be according to the following ranges:
Score 45 to 50 Grade A Score 40 to 44 Grade B Score 35 to 39 Grade C Score 0 to 34 Grade F
Write a test program that
1. asks the user to enter integer between 0 and 50, inclusive. If the user enters invalid number, please display error message.
2. Pass it to the CalcGrade procedure.
3. Repeat steps 1 and 2 three times so that you collect three scores from the user and display the respective grade for each score.
What I have so far:
INCLUDE Irvine32.inc
.data
grade BYTE ?,0
grA BYTE "A",0
grB BYTE "B",0
grC BYTE "C",0
grF BYTE "F",0
out_of_range BYTE "The integer is not <= 50 and >= 0",0
.code
main PROC
mov ecx, 3
L1:
mov eax, 1
add eax, 51
call GradeCalc
mov edx, 0
mov grade,al
mov edx, OFFSET grade
call WriteString
call Crif
loop L1
exit
main ENDP
.IF (eax <= 50 && eax >= 0)
.IF (eax <= 50 ) && (eax > 44)
mov al,grA
.ELSEIF (eax < 45) && (eax > 39)
mov al,grB
.ELSEIF (eax < 40) && (eax > 34)
mov al,grC
.ELSE
mov al, grF
.ENDIF
.ELSE
mov edx,OFFSET out_of_range
call WriteString
call Crlf
ret
.ENDIF
ret
GradeCalc ENDP
END main
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started