rendered paste body%include "asm_io.inc"
segment .data
print_limit db 'Enter limit: ', 0
segment .bss
limit resd 1
guess resd 1
segment .text
global _asm_main
_asm_main:
enter 0,0
pusha
mov eax, print_limit
call print_string
call read_int
mov [limit], eax
mov dword [guess], 5
while:
mov eax, [guess]
cmp eax, [limit]
ja endwhile
mov ebx, 3
while_factor:
mov eax, ebx
mul eax ; edx:eax = eax * eax
jo end_factor
cmp eax, [guess]
jae end_factor ; while (f*f < guess)
mov eax, [guess]
mov edx, 0
div ebx ; guess / factor, remainded in edx (edx:eax)
cmp edx, 0
je end_if ; && % != 0
add ebx, 2 ; factor += 2
jmp while_factor
end_factor:
mov eax, [guess]
call print_int
call print_nl
end_if:
add dword [guess], 2
jmp while
endwhile:
popa
mov eax, 0
leave
ret