Det afhænger lidt af, hvilken assembler du bruger og hvorvidt du er i real mode eller protected mode, men her er et eksempel i protected:
;main.asm
bits 64
global main
extern printf
extern fib
section .text
main:
mov edi, 10 ;Find 10th fibonacci number
call fib
mov esi, eax ;Move result from eax to esi
mov edi, my_string
mov eax, 0
call printf
mov eax, 0 ;Exit with success
ret ;Return from main
section .data
my_string db "Fibonacci: %d", 0xa, 0
- /* fib.c */
- int fib(int num) {
- return num == 0 ? 0 :
- num == 1 ? 1 :
- fib(num - 1) + fib(num - 2);
- }
Assemble, lænk og eksekver:
$ nasm -f elf64 -o main.o main.asm
$ gcc -o test main.o fib.c
$ ./test
Fibonacci: 55
$