EDIT: Thanks to Jester I got the loop to work, but the loop that is supposed to find the divisible numbers always gives me "1" and the number I'm dividing with. Am I using div wrong inside the loop?
EDIT 2:
Program working as intended, code below.
%include "io.inc"
extern _scanf ; externa za scanf
extern _printf; externa za printf
global _main
section .bss
N resd 1
section .data
vhod db "%d", 0 ; prebrano število
izhod db "%d", 10, 0 ; izpisano število
section .text
_main:
mov ebp, esp; for correct debugging
pushad ; ALPR
push dword N
push dword vhod ;; priprava za branje
call _scanf
add esp, 8 ; iz esp počistimo 8 bitov
mov eax, [N] ; v eax damo N za deljenje
mov ebx, 2 ; v ebx damo 2 za deljenje
sub edx, edx ; spucamo edx, da lahko dobimo pravilni ostanek pri deljenju
div ebx ; edx:eax / ebx
mov [N], eax ; shranimo v N dejansko število iteracij
mov ebx, 0 ; exb register nastavimo na 0
.loopf: ; začetek loopa
inc ebx ; ebx šteje kot iterator, povečamo za 1 na začetku loopa.
mov eax, ebx ; pripravimo eax kot deljenca
mov esi, 9 ; pripravimo esi kot deljitelj
sub edx, edx ; spucamo edx
div esi ; delimo
cmp edx, 0 ;pogledamo če je ostanek pri deljenju 0
jne .skip ; če ni, ne izpisemo
push ebx ; ebx dodamo na sklad
push dword izhod ; priprava za izpis
call _printf ;; izpisemo
add esp, 8 ; počistimo esp
.skip:
cmp ebx, [N], ; primerjamo N in register ebx
jl .loopf ; skok na zacetek loopa, ce je manjse
popad ; pop klic na vse registre
ret ; return