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