linux-assembly.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).