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
|
$(CC) $(CFLAGS) -g -o helloworld helloworld.c
|
||||||
stable:clean
|
stable:clean
|
||||||
$(CC) $(CFLAGS) -o helloworld helloworld.c
|
$(CC) $(CFLAGS) -o helloworld helloworld.c
|
||||||
|
asm:clean
|
||||||
|
yasm -f elf -o helloworld helloworld.asm
|
||||||
|
chmod +x helloworld
|
||||||
clean:
|
clean:
|
||||||
rm -vfr *~ helloworld
|
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