On Friday 01 June 2007 22:22, azeem ahmad wrote:
> i am about to make a bootable floppy for test
> but i am being unable to get it done
Whoa bubba... I am surprised you can make lunch... but seriously, who
taught
you how to write assembler code? Ok, here is a sample "hello, world!"
program that includes a counted loop to the iolib wrapper routine
( hello.asm ) and the io wrapper ( iolib.asm ) and a Makefile. All you will
need to build this hello world demo in opensuse is yasm|nasm , binutils
( ld ) and elf (standard). Its a flat 32 bit sample, staticly linked, and
does not call any of the c library. Enjoy, but pay particular attention to
the format, the style, the comments, and the Makefile. note: do not include
the /begin /end lines in the code files.
</begin hello.asm>
section .text
global _start
extern stdOut
_start:
mov ecx,count ;loop counter
mov eax,hello ;setup data hello
mov edx,hellolen
wrtHello:
call stdOut ;write data hello
loop wrtHello ;loop back until counter is zero
mov eax,1 ;sys_exit
mov ebx,0 ;return code 0 (no error)
int 80h ;call the kernel
section .data
hello db 'Hello, World!',10
hellolen: equ $-hello
count: equ 07h
</end hello.asm>
</begin iolib.asm>
section .text
global stdOut
stdOut:
push edx ;save environment
push ecx ;
push ebx ;
push eax ;
mov ecx,eax ;setup data register
mov eax,4 ;sys_write
mov ebx,1 ;standard out
int 80h ;call kernell
pop eax ;restore environment
pop ebx ;
pop ecx ;
pop edx ;
ret
</end iolib.asm>
</begin Makefile>
all: hello
AS = yasm
ASMOPTS = -f elf
LINKOPTS = -s -o hello
hello: hello.o iolib.o
ld $(LINKOPTS) hello.o iolib.o
hello.o: hello.asm
$(AS) $(ASMOPTS) hello.asm
iolib.o: iolib.asm
$(AS) $(ASMOPTS) iolib.asm
clean:
rm hello.o iolib.o hello
install:
cp hello ~/bin/
</end Makefile>
--
Kind regards,
M Harris <><
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]