0
GreatCommonDivisor를 작성하고 repeat....until
을 선언하고 사용했지만 여전히 repeat ..... until
에 들어가서 0으로 나누어 오류가 발생합니다.'ret'을 실행하지만 실행하지 마십시오.
나는 ret
가 발신자의 다음 줄에 주소를 표시하지만, 왜 그것이 repeat...until
으로 점프한다고 생각합니까?
ps:eax is dividend and ebx is divisor.
Thx.
INCLUDE Irvine32.inc
.data
.code
main PROC
mov eax, 75
mov ebx, 18
call gcd
main ENDP
gcd PROC
or eax,eax;set SF
.IF Sign?
Neg eax
.Else
.EndIf
or ebx,ebx;set SF
.IF Sign?
Neg ebx
.Else
.EndIf
.Repeat
mov edx, 0
div ebx
mov eax, ebx
mov ebx, edx
.Until ebx <= 0
call WriteInt
ret
gcd ENDP
END main
그것은 잘 작동 :
이 같은 프로그램을 구성거야? –
'main'은'ExitProcess' 호출이나'ret'로 끝나지 않으므로, 그 뒤에 나오는 것을 실행합니다 (원래 버전에서는'gcd'였습니다). 완전히 정확하려면'Invoke ExitProcess, 0'을 사용하여 Windows로 돌아가십시오. – Michael