Я создал процедуру, которая будет печатать все простые числа вплоть до пользовательского ввода. Однако некоторые выходные значения не являются простыми, например 15, 21 и т. Д. c. Если я начну программу с 15, она не будет выводиться как простое, поэтому это должен быть мой сегмент DIV или l oop. Любая помощь очень ценится.
.code
main proc
mov ecx, 18 ;ecx is the loop counter
mov eax, 2 ;assume 2 is prime
L1:
inc eax ;start with value 3
call isPrime
loop L1
invoke ExitProcess,0
main endp
isPrime PROC ;Procedure
push eax
push ecx
mov valEntered, eax
mov ogCounter, ecx
mov edx, 0 ;check if
;value divisible by 2
mov eax, eax
div divisor0 ;divisor0 = 2
mov eax, edx
cmp eax, 0
jz no
mov ecx, valEntered ;ecx loop
;counter
L2: ;check if
;value divisible by >= 3
mov eax, iStart ;iStart = 3
mul iStart
cmp valEntered, eax
jl yes
mov edx, 0
mov eax, valEntered
div iStart ;iStart = 3
mov eax, edx
cmp eax, 0
jz no
add iStart, 2 ;iStart += 2
loop L2
jmp no
yes: ;output prime number
mov eax, valEntered
call WriteInt
call Crlf
mov ecx, ogCounter
pop ecx
pop eax
ret
no: ;continue to next int
mov ecx, ogCounter
pop ecx
pop eax
ret
isPrime ENDP
end main