include irvine32.inc
.data
msg1 byte 50 DUP(?)
msg2 byte (lengthof msg1) DUP(?)
m1 DWORD 0
m2 DWORD 0
m3 DWORD 0
m4 DWORD 0
.code
main PROC
mov edx, OFFSET msg1
mov ecx, SIZEOF msg1
call ReadString
mov esi,offset msg1
mov edi,offset msg2
mov ecx,lengthof msg1
mov m1,0
mov m2,0
mov m3,0
mov m4,0
xor eax,eax
cld
L1:lodsb
cmp al,'a'
je c1
c1:add m1,2
cmp al,'e'
je c2
c2:add m2,1
cmp al,'i'
je c3
c3:add m3,1
cmp al,'u'
je c4
c4:add m4,1
stosb
loop L1
xor eax,0
mov eax,m1
call writedec
mov eax,m2
call writeint
mov eax,m3
call writeint
mov eax,m4
call writeint
mov edx,offset msg2
call writestring
call crlf
exit
main ENDP
END main
--------------------------------------------------
문제가 문자열 입력받아서 모음의 갯수 출력하는건데요
예를 들어 this is a game. 입력하면
a:2 e:1 i:2 u:0
이런식으루요.
그런데 요녀석 출력하니까 a,e,i,u가 다 50으로 찍히더라구요. 되는데로 0으로 다 초기화하고 했는데도 안되는걸 봐서 문제는 루프안에 녀석이 무조건 다 더해버리는거같더군요. 분명 조건별로 점프시킨거같은데..
msg1의 크기만큼 다 더해버리는거같은데..도대체 왜 다 더해버리는거죠? 조건문 썼느데 ㅜㅜ
알려주세요 |