fibonaci
section .data fmt0: db "Entre com um numero:",0 fmt1: db "%d",0 fmt2: db " o numero eh: %i",13,10,0 ;definiu uma string e formatação para o printf a: dd 0 ;definir uma variavel res: dd 0
section .text
global main main: ; printf("Entre com um numero:");
push dword fmt0 ;empilha o endereço fmt0 call printf ;chama a função printf para ser executada add esp,4 push rsi, a ;empilha o endereço de a push rdi, fmt1 ;empilha o endereço de fm call scanf ;chama a função scanf para ser executada add esp,8 ;desempilhar a e fmt, 8 pois dword = 4 byte
mov ebx,[a] call fib mov [res],eax push rdi, [res] push rdi, fmt2 call printf add esp,8
mov eax,0 ;devolve o controle para SO ret
;função fibonacci ; retorno em eax ; n = ebx fib: push ebx push ecx push edx cmp ebx,0 je lab1 cmp ebx,1 je lab1 jmp lab2 lab1: mov eax,ebx pop edx pop ecx pop ebx ret lab2: sub ebx,1 ;subtrai 1 call fib ;chama a função mov ecx,eax ;move o valor de eax para ecx sub ebx,1 ;subtrai 1 call fib ;chama a função fib mov edx,eax ;move o eax para edx, e fica armazenado em edx add ecx,edx ;soma o valor de edx com ecx, e fica armazenado em ecx mov eax,ecx ;move o valor de ecx para eax pop edx pop ecx pop ebx ret