Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; PA7
- ; Eric Lilling & Matthew Dangerfield
- INCLUDE Irvine32.inc
- .386
- .model flat,stdcall
- .stack 4096
- ExitProcess proto, dwExitCode: dword
- .data
- prompt BYTE "Enter a test score (999 to exit): ", 0
- score BYTE "Test Score: ", 0
- grade BYTE " Letter grade: ", 0
- newline BYTE " ", 13,10,0
- totalSum BYTE "Sum of test scores: ", 0
- totalCount BYTE "Number of test scores: ", 0
- errorPrompt BYTE "You entered an invalid number. Please only enter numbers between 0 and 100!", 0
- Num1 DWORD ?
- counter DWORD 0
- sum DWORD 0
- .code
- main proc
- mov edx,OFFSET Prompt
- call WriteString
- call ReadInt
- mov Num1, eax
- cmp eax, 999
- je done
- cmp eax, 0
- jl errormsg
- cmp eax, 100
- jg errormsg
- add sum, eax
- mov eax, 1
- add counter, eax
- mov edx, OFFSET score
- call WriteString
- mov eax, Num1
- call WriteDec
- call CalcGrade
- mov edx, OFFSET grade
- call WriteString
- call WriteChar
- mov edx, OFFSET newline
- call WriteString
- jmp main
- errormsg:
- mov edx, OFFSET errorPrompt
- call WriteString
- mov edx, OFFSET newline
- call WriteString
- jmp main
- done:
- mov edx, OFFSET newline
- call WriteString
- mov edx, OFFSET totalSum
- call WriteString
- mov eax, sum
- call WriteDec
- mov edx, OFFSET newline
- call WriteString
- mov edx, OFFSET totalCount
- call WriteString
- mov eax, counter
- call WriteDec
- mov edx, OFFSET newline
- call WriteString
- exit
- exit
- main endp
- CalcGrade proc
- cmp eax, 90
- jae CheckA
- cmp eax, 80
- jae CheckB
- cmp eax, 70
- jae CheckC
- cmp eax, 60
- jae CheckD
- jmp CheckF
- CheckA: mov al, 'A'
- ret
- jmp main
- CheckB: mov al, 'B'
- ret
- jmp main
- CheckC: mov al, 'C'
- ret
- jmp main
- CheckD: mov al, 'D'
- ret
- jmp main
- CheckF: mov al, 'F'
- ret
- jmp main
- CalcGrade endp
- end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement