Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. ; PA7
  2. ; Eric Lilling & Matthew Dangerfield
  3. INCLUDE Irvine32.inc
  4. .386
  5. .model flat,stdcall
  6. .stack 4096
  7. ExitProcess proto, dwExitCode: dword
  8.  
  9. .data
  10. prompt BYTE "Enter a test score (999 to exit): ", 0
  11. score BYTE "Test Score: ", 0
  12. grade BYTE " Letter grade: ", 0
  13. newline BYTE " ", 13,10,0
  14. totalSum BYTE "Sum of test scores: ", 0
  15. totalCount BYTE "Number of test scores: ", 0
  16. errorPrompt BYTE "You entered an invalid number. Please only enter numbers between 0 and 100!", 0
  17. Num1 DWORD ?
  18. counter DWORD 0
  19. sum DWORD 0
  20.  
  21. .code
  22. main proc
  23. mov edx,OFFSET Prompt
  24. call WriteString
  25.  
  26. call ReadInt
  27. mov Num1, eax
  28.  
  29. cmp eax, 999
  30. je done
  31.  
  32. cmp eax, 0
  33. jl errormsg
  34. cmp eax, 100
  35. jg errormsg
  36.  
  37. add sum, eax
  38. mov eax, 1
  39. add counter, eax
  40.  
  41. mov edx, OFFSET score
  42. call WriteString
  43. mov eax, Num1
  44. call WriteDec
  45.  
  46. call CalcGrade
  47.  
  48. mov edx, OFFSET grade
  49. call WriteString
  50. call WriteChar
  51.  
  52. mov edx, OFFSET newline
  53. call WriteString
  54.  
  55. jmp main
  56. errormsg:
  57. mov edx, OFFSET errorPrompt
  58. call WriteString
  59. mov edx, OFFSET newline
  60. call WriteString
  61. jmp main
  62. done:
  63. mov edx, OFFSET newline
  64. call WriteString
  65. mov edx, OFFSET totalSum
  66. call WriteString
  67. mov eax, sum
  68. call WriteDec
  69. mov edx, OFFSET newline
  70. call WriteString
  71. mov edx, OFFSET totalCount
  72. call WriteString
  73. mov eax, counter
  74. call WriteDec
  75. mov edx, OFFSET newline
  76. call WriteString
  77. exit
  78.  
  79. exit
  80. main endp
  81.  
  82. CalcGrade proc
  83. cmp eax, 90
  84. jae CheckA
  85. cmp eax, 80
  86. jae CheckB
  87. cmp eax, 70
  88. jae CheckC
  89. cmp eax, 60
  90. jae CheckD
  91. jmp CheckF
  92.  
  93.  
  94. CheckA: mov al, 'A'
  95. ret
  96. jmp main
  97. CheckB: mov al, 'B'
  98. ret
  99. jmp main
  100. CheckC: mov al, 'C'
  101. ret
  102. jmp main
  103. CheckD: mov al, 'D'
  104. ret
  105. jmp main
  106. CheckF: mov al, 'F'
  107. ret
  108. jmp main
  109. CalcGrade endp
  110. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement