Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Create a procedure named CalcGrade that receives an integer value between 0 and

ID: 3713130 • Letter: C

Question

Create a procedure named CalcGrade that receives an integer value between 0 and 100, 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 according to the following ranges:

Score Range - Letter Grade
90 to 100 A

80 to 89 B

70 to 79 C

60 to 69 D

0 to 59 F

Write a test program that generates 10 random integers between 50 and 100, inclusive. Each
time an integer is generated, pass it to the CalcGrade procedure. Display each integer and its
corresponding letter grade (the Irvine32 library is required for this solution program because it
uses the RandomRange procedure).

WRITE THE CODE IN ASSEMBLY LANGUAGE AND ALSO WRITE THE COMMENTS AFTER EACH CODE SO THAT I CAN UNDERSTAND PROPERLY

Explanation / Answer

INCLUDE Irvine32.inc

  

.data

grade BYTE ?,0

grA BYTE "A",0

grB BYTE "B",0

grC BYTE "C",0

grD BYTE "D",0

grF BYTE "F",0

out_of_range BYTE "The integer is not <= 100 and >= 0",0

.code

main PROC

call Randomize

mov ecx,10

L1:

mov eax,51

call RandomRange

add eax,50

call GradeCalc

mov edx,0

mov grade,al

mov edx, OFFSET grade

call WriteString

call Crlf

loop L1

exit

main ENDP

GradeCalc PROC

.IF (eax <= 100 && eax >= 0)

.IF (eax <= 100) && (eax > 89)

mov al,grA

.ELSEIF (eax < 90) && (eax > 79)

mov al,grB

.ELSEIF (eax < 80) && (eax > 69)

mov al,grC

.ELSEIF (eax < 70) && (eax > 59)

mov al,grD

.ELSE

mov al,grF

.ENDIF

.ELSE

mov edx,OFFSET out_of_range

call WriteString

call Crlf

ret

.ENDIF

ret

GradeCalc ENDP

END main

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote