add asm versiob of helloworld. still needs correct yasm params

This commit is contained in:
Johannes Findeisen 2018-01-10 18:47:10 +01:00
commit 55dab91ad9
2 changed files with 29 additions and 0 deletions

View file

@ -5,5 +5,8 @@ debug:clean
$(CC) $(CFLAGS) -g -o helloworld helloworld.c
stable:clean
$(CC) $(CFLAGS) -o helloworld helloworld.c
asm:clean
yasm -f elf -o helloworld helloworld.asm
chmod +x helloworld
clean:
rm -vfr *~ helloworld

26
helloworld.asm Normal file
View file

@ -0,0 +1,26 @@
section .text ;section declaration
;we must export the entry point to the ELF linker or
global _start ;loader. They conventionally recognize _start as their
;entry point. Use ld -e foo to override the default.
_start:
;write our string to stdout
mov edx,len ;third argument: message length
mov ecx,msg ;second argument: pointer to message to write
mov ebx,1 ;first argument: file handle (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
;and exit
mov ebx,0 ;first syscall argument: exit code
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data ;section declaration
msg db "Hello, world!",0xa ;our dear string
len equ $ - msg