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: 3694362 • 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 90 to 100 Grade A Score 80 to 89 Grade B Score 70 to 79 Grade C Score 60 to 69 Grade D Score 0 to 59 Grade 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.

Explanation / Answer

TITLE CalcGrade                                      (CalcGrade.asm)

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