All pastes #114746 Raw Edit

Mine

public text v1 · immutable
·published 2006-08-04 04:48 UTC
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