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
Posted by 공돌이pooh
,