본문내용
용을 더 줄일 수 없는지 확인하기
5) 프로그램 소스
TITLE Data Transfer ExamplesINCLUDE Irvine32.inc.dataa DWORD ?b DWORD ?n DWORD ?.codemain PROC
call ReadIntmov a, eaxcall ReadIntmov b, eaxcall ReadIntmov n, eaxsub n, 1
mov ecx, b
L1:mov eax, ecx
cmp eax, ajl QUIT
call WriteDec
sub ecx, n
call crlf
loop L1
QUIT:
exitmain ENDP
END main
10. 소수 출력
1) 문제
1부터 x까지의 모든 소수를 출력하시오.
2) 풀이방법
2중 loop를 사용해서 소수를 출력하시오.
3) 실행 화면 및 결과
4) 검토
1개의 루프와 3개의 조건문으로 해결. 1부터 출력하게 하고 싶었지만, 1을 입력받으면 에러발생. n-1의 값으로 나눠야하기때문. 1을 입력받게되면 0으로 나누기 때문에 에러 발생.
5) 프로그램 소스
TITLE Data Transfer Examples
INCLUDE Irvine32.inc
.data
x DWORD ?
.code
main PROC
call ReadInt
mov x, eax
mov ecx, x
dec ecx
;나누는수를n-1까지로지정
L1:
mov edx,0
mov eax,x
;eax에n으로지정
cmp ecx,1
je L3
;나누는값이1까지왔다면소수이므로출력(L3)
div ecx
cmp edx,0
je L2
;1과자기자신이외의수로나머지가0으로떨어진다면(L2)
loop L1
;1과자기자신이외의수로나눠지지않는다면나누는값을-1시켜서다시나눔(L1)
L2:
dec x
mov ecx, x
;n-1
cmp x, 1
je QUIT
;n-1이1이라면(n이2라면소수의최소값이므로) 종료
dec ecx
jmp L1
;n-1이1이아니라면L1부터다시시작(2가아니므로다시시작해야함)
L3:
call WriteDec
mov al, \' \'
call WriteChar
jmp L2
;출력이연결되어야하므로다시L2(L1)로돌아간다.
QUIT:
exit
main ENDP
END main
11. 점수 및 석차, 평균 출력
1) 문제
5명의 학번,이름,국어,영어,수학,총점,평균,석차를 출력
2) 풀이방법
loop문에 byte 제한을 염두할것
3) 실행 화면 및 결과
4) 검토
Rank를 구하는 함수가 Tot가 다 돌아가야 지정되기 때문에, 같이 출력하는게 불가능했음. 개선필요
5) 프로그램 소스
INCLUDE Irvine32.inc
.data
sNum DWORD 201046513, 200846211, 201112514, 200637028, 200845671
sName BYTE \"KIM \",0,\"CHOI\",0,\"PARK\",0,\"HONG\",0,\"LEE \",0
Kor BYTE 90, 95, 76, 55, 53
Eng BYTE 85, 70, 55, 43, 89
Mat BYTE 71, 65, 33, 22, 91
Tot BYTE 5 DUP(0)
Avg BYTE 5 DUP(0)
Rak BYTE 5 DUP(1)
.code
main PROC
mov eax, 0
mov esi, OFFSET sName
mov ebx, 0 ;배열의index
mov ecx, 5
L1:
call iNum
call iName
call iKOR
call iENG
call iMAT
call iTot
call iAvg
call crlf
add esi, 5
inc ebx
loop L1
call dRank
mov eax, 0
mov esi, OFFSET sName
mov ebx, 0 ;배열의index
mov ecx, 5
L2:
call iName
call iRank
call crlf
add esi, 5
inc ebx
loop L2
exit
main ENDP
iNum PROC
mov eax, ebx
mov ebx, 4
mul ebx
mov ebx, eax
mov eax,sNum[ebx]
call WriteDec
mov eax, ebx
mov ebx, 4
div ebx
mov ebx, eax
mov eax, 0
mov al, \' \'
call WriteChar
;학번
ret
iNum ENDP
iName PROC
mov edx, esi
call WriteString
mov al, \' \'
call WriteChar
;이름
ret
iName ENDP
iKOR PROC
mov al,Kor[ebx]
call WriteDec
add Tot[ebx], al
mov al, \' \'
call WriteChar
;국어
ret
iKOR ENDP
iENG PROC
mov al, Eng[ebx]
call WriteDec
add Tot[ebx], al
mov al, \' \'
call WriteChar
;영어
ret
iENG ENDP
iMAT PROC
mov al, Mat[ebx]
call WriteDec
add Tot[ebx], al
mov al, \' \'
call WriteChar
;수학
ret
iMAT ENDP
iTot PROC
movzx eax, Tot[ebx]
call WriteDec
mov al, \' \'
call WriteChar
;총점
ret
iTot ENDP
iAvg PROC
push ebx
mov al, Tot[ebx]
mov bl, 3
div bl
pop ebx
mov Avg[ebx], al
mov eax, 0
mov al, Avg[ebx]
call WriteDec
mov al, \' \'
call WriteChar
;평균
ret
iAvg ENDP
dRank PROC
mov ebx,0
mov ecx,5
L1:
mov esi,0
mov al,Tot[ebx]
push ecx
mov ecx,5
L2:
mov dl,Tot[esi]
CMP al,dl
jge quit
inc Rak[ebx]
quit:
inc esi
loop L2
pop ecx
inc ebx
loop L1
ret
dRank ENDP
iRank PROC
mov al, Rak[ebx]
call WriteDec
mov al, \' \'
call WriteChar
ret
iRank ENDP
END main
5) 프로그램 소스
TITLE Data Transfer ExamplesINCLUDE Irvine32.inc.dataa DWORD ?b DWORD ?n DWORD ?.codemain PROC
call ReadIntmov a, eaxcall ReadIntmov b, eaxcall ReadIntmov n, eaxsub n, 1
mov ecx, b
L1:mov eax, ecx
cmp eax, ajl QUIT
call WriteDec
sub ecx, n
call crlf
loop L1
QUIT:
exitmain ENDP
END main
10. 소수 출력
1) 문제
1부터 x까지의 모든 소수를 출력하시오.
2) 풀이방법
2중 loop를 사용해서 소수를 출력하시오.
3) 실행 화면 및 결과
4) 검토
1개의 루프와 3개의 조건문으로 해결. 1부터 출력하게 하고 싶었지만, 1을 입력받으면 에러발생. n-1의 값으로 나눠야하기때문. 1을 입력받게되면 0으로 나누기 때문에 에러 발생.
5) 프로그램 소스
TITLE Data Transfer Examples
INCLUDE Irvine32.inc
.data
x DWORD ?
.code
main PROC
call ReadInt
mov x, eax
mov ecx, x
dec ecx
;나누는수를n-1까지로지정
L1:
mov edx,0
mov eax,x
;eax에n으로지정
cmp ecx,1
je L3
;나누는값이1까지왔다면소수이므로출력(L3)
div ecx
cmp edx,0
je L2
;1과자기자신이외의수로나머지가0으로떨어진다면(L2)
loop L1
;1과자기자신이외의수로나눠지지않는다면나누는값을-1시켜서다시나눔(L1)
L2:
dec x
mov ecx, x
;n-1
cmp x, 1
je QUIT
;n-1이1이라면(n이2라면소수의최소값이므로) 종료
dec ecx
jmp L1
;n-1이1이아니라면L1부터다시시작(2가아니므로다시시작해야함)
L3:
call WriteDec
mov al, \' \'
call WriteChar
jmp L2
;출력이연결되어야하므로다시L2(L1)로돌아간다.
QUIT:
exit
main ENDP
END main
11. 점수 및 석차, 평균 출력
1) 문제
5명의 학번,이름,국어,영어,수학,총점,평균,석차를 출력
2) 풀이방법
loop문에 byte 제한을 염두할것
3) 실행 화면 및 결과
4) 검토
Rank를 구하는 함수가 Tot가 다 돌아가야 지정되기 때문에, 같이 출력하는게 불가능했음. 개선필요
5) 프로그램 소스
INCLUDE Irvine32.inc
.data
sNum DWORD 201046513, 200846211, 201112514, 200637028, 200845671
sName BYTE \"KIM \",0,\"CHOI\",0,\"PARK\",0,\"HONG\",0,\"LEE \",0
Kor BYTE 90, 95, 76, 55, 53
Eng BYTE 85, 70, 55, 43, 89
Mat BYTE 71, 65, 33, 22, 91
Tot BYTE 5 DUP(0)
Avg BYTE 5 DUP(0)
Rak BYTE 5 DUP(1)
.code
main PROC
mov eax, 0
mov esi, OFFSET sName
mov ebx, 0 ;배열의index
mov ecx, 5
L1:
call iNum
call iName
call iKOR
call iENG
call iMAT
call iTot
call iAvg
call crlf
add esi, 5
inc ebx
loop L1
call dRank
mov eax, 0
mov esi, OFFSET sName
mov ebx, 0 ;배열의index
mov ecx, 5
L2:
call iName
call iRank
call crlf
add esi, 5
inc ebx
loop L2
exit
main ENDP
iNum PROC
mov eax, ebx
mov ebx, 4
mul ebx
mov ebx, eax
mov eax,sNum[ebx]
call WriteDec
mov eax, ebx
mov ebx, 4
div ebx
mov ebx, eax
mov eax, 0
mov al, \' \'
call WriteChar
;학번
ret
iNum ENDP
iName PROC
mov edx, esi
call WriteString
mov al, \' \'
call WriteChar
;이름
ret
iName ENDP
iKOR PROC
mov al,Kor[ebx]
call WriteDec
add Tot[ebx], al
mov al, \' \'
call WriteChar
;국어
ret
iKOR ENDP
iENG PROC
mov al, Eng[ebx]
call WriteDec
add Tot[ebx], al
mov al, \' \'
call WriteChar
;영어
ret
iENG ENDP
iMAT PROC
mov al, Mat[ebx]
call WriteDec
add Tot[ebx], al
mov al, \' \'
call WriteChar
;수학
ret
iMAT ENDP
iTot PROC
movzx eax, Tot[ebx]
call WriteDec
mov al, \' \'
call WriteChar
;총점
ret
iTot ENDP
iAvg PROC
push ebx
mov al, Tot[ebx]
mov bl, 3
div bl
pop ebx
mov Avg[ebx], al
mov eax, 0
mov al, Avg[ebx]
call WriteDec
mov al, \' \'
call WriteChar
;평균
ret
iAvg ENDP
dRank PROC
mov ebx,0
mov ecx,5
L1:
mov esi,0
mov al,Tot[ebx]
push ecx
mov ecx,5
L2:
mov dl,Tot[esi]
CMP al,dl
jge quit
inc Rak[ebx]
quit:
inc esi
loop L2
pop ecx
inc ebx
loop L1
ret
dRank ENDP
iRank PROC
mov al, Rak[ebx]
call WriteDec
mov al, \' \'
call WriteChar
ret
iRank ENDP
END main
키워드
추천자료
장애인 전환교육 분석, 전환교육프로그램의 의미, 전환교육프로그램의 중요성, 전환교육프로...
활동중심교육(교수)프로그램, 영재교육(교수)프로그램, 심성계발교육(교수)프로그램, 가족심...
독서감상지도(학습)프로그램 사례, 성교육지도(학습)프로그램 사례, 원예활동지도(학습)프로...
체험활동지도(교육)프로그램 사례, 인성지도(교육)프로그램 사례, 가치명료화중심지도(교육)...
미술관교육(수업)프로그램, 심성계발교육(수업)프로그램, 영재교육(수업)프로그램, STS(과학...
전통음악교육(교수학습)프로그램, 직업준비교육(교수학습)프로그램, 인성교육(교수학습)프로...
평생학습(평생교육)프로그램의 개념, 평생학습(평생교육)프로그램의 조망, 평생학습(평생교육...
평생교육(평생학습)프로그램의 정의와 조건, 평생교육(평생학습)프로그램의 조망, 평생교육(...
[성교육][성교육프로그램][성교육프로그램 사례]성교육의 의의, 성교육의 목적, 성교육의 필...
[교육][조교교육프로그램][조교교육프로그램 성격][조교교육프로그램 평가]교육의 유형, 교육...
[정신건강과간호] 직장인 스트레스관리프로그램을 찾아 구체적인 적용대상자와 프로그램 내용...
PP(방송채널사용사업자, 프로그램공급자) 여건, 정책, PP(방송채널사용사업자, 프로그램공급...
[자원봉사론] 자원봉사 프로그램이란 무엇이며 프로그램계획에 반영해야할 점과 프로그램 기...
방송채널사용사업자(PP, 프로그램공급자)의 역사, 규모, 방송채널사용사업자(PP, 프로그램공...