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

In Assembly Language: Create a procedure named CalcGrade that receives an intege

ID: 3760132 • Letter: I

Question

In Assembly Language: 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. You can test your program using a debugger, or if you prefer to use the book's library, you can display each integer and its corresponding letter grade. letter grade.

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 = 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 = 0) .IF (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