From: Maciej Hrebien <m_hrebien@wp.pl>
To: linux-assembly@vger.kernel.org
Subject: Re: Prblem with AT&T
Date: Sat, 10 Aug 2002 13:47:35 +0200 [thread overview]
Message-ID: <3D54FD57.9E453151@wp.pl> (raw)
In-Reply-To: 20020810044121.24633.qmail@web14510.mail.yahoo.com
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
next prev parent reply other threads:[~2002-08-10 11:47 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 [this message]
2002-08-10 19:35 ` Maciej Hrebien
2002-08-14 6:35 ` Anticipating a Reply
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=3D54FD57.9E453151@wp.pl \
--to=m_hrebien@wp.pl \
--cc=linux-assembly@vger.kernel.org \
/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).