add asm versiob of helloworld. still needs correct yasm params
This commit is contained in:
parent
1c42d683c9
commit
55dab91ad9
2 changed files with 29 additions and 0 deletions
3
Makefile
3
Makefile
|
|
@ -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
26
helloworld.asm
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue