6.9.3에서 추가사항
여러 개의 시험 성적 계산할 수 있도록 루프 추가
시험 성적 개수를 카운터에 누적
시험성적이 0보다 작거나 100보다 크면 오류 출력
INCLUDE Irvine32.inc .data score SDWORD ? str1 BYTE "Enter your score : ",0 str2 BYTE "This is your grade : ",0 str3 BYTE "Enter correct score !!!!",0 str4 BYTE "Count : ",0 grade BYTE ? .code main PROC call Clrscr mov ecx,0 .WHILE score>=0 && score<=100 mov edx,OFFSET str1 call WriteString ;"Enter your score : " 출력 call ReadInt ;점수 입력 mov score,eax ;score에 점수 저장 call MakeGrade ;점수에 해당하는 평점 출력 call Crlf mov edx,OFFSET str4 ;카운트 출력 call WriteString inc ecx mov eax,ecx call WriteInt call Crlf .ENDW mov edx,OFFSET str3 call WriteString ret main ENDP WriteGrade PROC mov edx,OFFSET str2 call WriteString mov edx,OFFSET grade call WriteString ret WriteGrade ENDP MakeGrade PROC .IF score>=90 && score<=100 mov grade,'A' call WriteGrade .ENDIF .IF score>=80 && score<90 mov grade,'B' call WriteGrade .ENDIF .IF score>=70 && score<80 mov grade,'C' call WriteGrade .ENDIF .IF score>=60 && score<70 mov grade,'D' call WriteGrade .ENDIF .IF score>=0 && score<60 mov grade,'F' call WriteGrade .ENDIF ret MakeGrade ENDP END main
미완성 풀이
이유 : 범위를 벗어나는 값이 입력되면 즉시 종료된다.
오류 메시지만 출력하고 다른 종료 방법이 있어야 할 것 같다.
'노트정리 > 어셈블리 책 스터디 공간' 카테고리의 다른 글
6.9.10 오버플로까지 피보나치 출력 (0) | 2010.07.14 |
---|---|
6.9.9가중확률 (0) | 2010.07.13 |
6.9.7 부울계산기(1) (0) | 2010.07.13 |
6.9.5. 6.9.6 대학등록(1)(2) (0) | 2010.07.12 |
6.9.3 시험성적계산 (0) | 2010.06.30 |
6.9.2 루프 구현 (0) | 2010.06.30 |
색상 행렬 (0) | 2010.06.14 |
무작위 화면 위치에 문자 출력 (0) | 2010.06.13 |