From: "Anticipating a Reply" <ruxyz@yahoo.com>
To: m_hrebien@wp.pl, linux-assembly@vger.kernel.org
Subject: Re: Prblem with AT&T
Date: Wed, 14 Aug 2002 07:35:31 +0100 (BST) [thread overview]
Message-ID: <20020814063531.427.qmail@web14507.mail.yahoo.com> (raw)
In-Reply-To: <3D556B11.71533027@wp.pl>
Hello Maciej !
Thanks for your help , and the code
now works fine .
Can you please help me understand how
you decided the addresses to use for
the text and data section .
I could not figure out how you
decided to use specifically 0x1c
for the data section .
Can you please explain what addresses
are these referring to ?
Thanks in Advance .
With Regards
ld --oformat binary -Ttext 0x0 -Tdata 0x1c -o sect2
sect2.o
--- Maciej Hrebien <m_hrebien@wp.pl> wrote: >
Anticipating a Reply wrote:
> >
> > Hi All !
> >
> > I got the below code compiled , but it does not
> > give the desired results .
> >
> > I have two modules , stored on a boot floppy .
> > The first module residing in the boot sector
> > loads the second module ( residing
> > on second sector of floppy ) into RAM and
> > transfers control to it . The Second module
> > prints a string onto the screen .
>
> I've tried very similar code some time ago and all
> the information
> needed to assembly and link it properly i've found
> in "info as" &
> Linux's arch/i386/boot/Makefile. Try to study it,
> it's very interesting
> lecture ;)
>
> > All the relevant code is given below .
> > Please help this newbie find out ,
> > what the problem is ?
>
> I've chceck it. bsect.s, sect2.s & write.c are OK
> but Makefile is wrong!
> Please look below.
>
> > ---------THE MAKEFILE --------
> >
> > all : bsect sect2 write
> >
> > bsect : bsect.o
> > ld -s -oformat binary -Ttext 0x000 -o
> bsect bsect.o
>
> ld --oformat binary -Ttext 0x0 -o bsect bsect.o
>
> ^^ 2 "-" are needed & "-s" isn't useful for us
>
> > sect2 : sect2.o
> > ld -s -oformat binary -Ttext 0x500 -o
> sect2 sect2.o
>
> ld --oformat binary -Ttext 0x0 -Tdata 0x1c -o sect2
> sect2.o
>
> The same thing with "-" & "-s". The text section in
> this "module" begins
> at 0x0 address and the data section is 0x1c bytes
> after text section.
> This is needed to properly do:
>
> mov $mymsg,%bp
>
> and see the beautiful string :)
>
> Hope I helped You, regards
>
> > bsect.o : bsect.s
> > as bsect.s -o bsect.o
> >
> > sect2.o : sect2.s
> > as sect2.s -o sect2.o
> >
> > write : write.c
> > cc write.c -o write
> >
> > clean :
> > rm bsect.o sect2.o bsect sect2 write
> >
> > ------( Module 1) bsect.s - Boot sector code
> > ----------
> >
> > .code16
> >
> > .globl _start
> >
> > _start:
> >
> > movw $0x500,%ax
> > movw %ax,%es
> > movw $0,%bx #segment offset
> > movb $0,%dl #drive no.
> > movb $0,%dh #head no.
> > movb $0,%ch #track no.
> > movb $2,%cl #sector no.( 1..18 )
> > movb $1,%al #no. of sectors tranferred
> > movb $2,%ah #function no.
> > int $0x13
> >
> > ljmp $0x500,$0
> >
> > -----(Module 2)sect2.s -Code in 2nd sector
> --------
> >
> > .code16
> >
> > .data
> >
> > mymsg:
> > .byte 13,10
> > .ascii "Handling BIOS interrupts"
> > .text
> >
> > .globl _start
> >
> > _start:
> > movb $0x03,%ah # read cursor position.
> > xor %bh,%bh
> >
> > int $0x10
> >
> > movw $26,%cx # length of our beautiful
> string.
> > movw $0x0007,%bx # page 0, attribute 7
> (normal)
> > movw $mymsg,%bp
> > movw $0x1301,%ax # write string, move
> cursor
> >
> > int $0x10
> >
> > loop1:
> > jmp loop1
> >
> >
> > ------------ write.c ---------------------
> >
> > /*
> > * Program to write to boot sector and
> > * desired code to second sector
> > *
> > */
> >
> > #include <sys/types.h> /* unistd.h needs this */
> > #include <unistd.h> /* contains read/write */
> > #include <fcntl.h>
> >
> > int main()
> > {
> > char boot_buf[512];
> > int floppy_desc, file_desc;
> >
> > file_desc = open("./bsect", O_RDONLY);
> > read(file_desc, boot_buf, 510);
> > close(file_desc);
> >
> > boot_buf[510] = 0x55;
> > boot_buf[511] = 0xaa;
> >
> > floppy_desc = open("/dev/fd0", O_RDWR);
> > lseek(floppy_desc, 0, SEEK_SET);
> > write(floppy_desc, boot_buf, 512);
> >
> >
> > file_desc = open("./sect2", O_RDONLY);
> > read(file_desc, boot_buf, 512);
> > close(file_desc);
> >
> > lseek(floppy_desc, 512, SEEK_SET);
> > write(floppy_desc, boot_buf, 512);
> > close(floppy_desc);
> >
> > }
> >
> > ---------------------THE END
> ----------------------
>
> --
> Maciej Hrebien
>
> -
> To unsubscribe from this list: send the line
> "unsubscribe linux-assembly" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at
http://vger.kernel.org/majordomo-info.html
________________________________________________________________________
Want to sell your car? advertise on Yahoo Autos Classifieds. It's Free!!
visit http://in.autos.yahoo.com
next prev parent reply other threads:[~2002-08-14 6:35 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-08-08 7:31 Prblem with AT&T Anticipating a Reply
2002-08-08 8:02 ` Frederic Marmond
2002-08-08 9:28 ` Anticipating a Reply
2002-08-08 16:04 ` Maciej Hrebien
2002-08-10 4:41 ` Anticipating a Reply
2002-08-10 11:47 ` Maciej Hrebien
2002-08-10 19:35 ` Maciej Hrebien
2002-08-14 6:35 ` Anticipating a Reply [this message]
2002-08-14 18:40 ` Maciej Hrebien
2002-08-16 4:55 ` Anticipating a Reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020814063531.427.qmail@web14507.mail.yahoo.com \
--to=ruxyz@yahoo.com \
--cc=linux-assembly@vger.kernel.org \
--cc=m_hrebien@wp.pl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).