The n-th Fibonacci number can be calculated without recursion with a simple assembly language routine (nasm syntax), callable by C programs, as:

unsigned int fibonacci(unsigned int n);

It works both with C compilers that prepend each function name with an underscore, and those that do not. Like the rest of algorithms presented here, it does not check for overflow. Here it is:

global  _fibonacci, fibonacci
_fibonacci:
fibonacci:
    sub     eax, eax         ; eax = 0
    mov     ecx, [esp+4]     ; ecx = n
    sub     edx, edx
    jecxz   .done            ; return 0 if n == 0
    inc     dl               ; edx = 1

.loop:
    push    eax
    add     eax, edx
    pop     edx
    loop    .loop

.done:
    ret