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

this is assemly langauge for x86 processors using visual studio. Create a proced

ID: 3837840 • Letter: T

Question

this is assemly langauge for x86 processors using visual studio.

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

TITLE CalcGrade 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