here is some hello world function that would just add 10 to whatever number it is given
#Simple adder function in assebmly - just adds 10 the called number .code32 #if running the code on 64 bit machine .section .data .section .text .globl _start _start: #entry point #Assign the number to be modified here push $9 # using immediate access mode just assign number 9 call adder10 #call the function adder10 here - basically assign a memory address name mov %eax, %ebx #pass the return value to ebx since return value sits on eax mov $1, %eax # call system call exit on register eax int $0x80 #yup - interrupt it! .type adder10, @function # like declare a function here ;) adder10: #save the current base pointer first push %ebp #load the current stack pointer to the base pointer and use the new base pointer in the function mov %esp, %ebp #load the paramter on register ecx mov 8(%ebp), %ecx #access it using base index access method add $10, %ecx #do the magic #the return value will be on %eax mov %ecx, %eax #return the original values to the ebp and esp mov %ebp, %esp pop %ebp ret
Save the above file as adder.s
to run this if you are on 64 bit machine use
gcc -m32 -nostartfiles -o adder adder.s
otherwise
as -o adder.o adder.s ld -o adder adder.o
and run it as
./adder
to see the result
echo $?
If all ok the above should print 19