-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 azeem ahmad wrote:
hi list i am about to make a bootable floppy for test but i am being unable to get it done please review the code below and tell me if there is any problem with it ----------------------------------------------------------------------------------------------------------------------------------
.code16 #assembler directive to start 16-bit real mode for execution .text /*assembler directive to tell the start of 'read-only' code segment*/ .org 0x00 /*assembler directive to set the origon to sector 0 needed to copy the program to the very first sector of the floppy disk*/
.global _start /*assembler directive to export the start section to all other programs, i.e. to make it visible to programs like linker or other user programs*/
_start: #label of the start routine mov 0x07C0, %ax /*move immidiate operand 07C0 to the accumulator register ax, so that it can be transfered to data segment register*/ mov %ax, %ds /*move contents of register ax to register ds*/ call _boot #call the boot section ret #return the control to the caller routine
_boot: #label of the boot section mov $msg, %si /*move the address of the character string constant 'msg' to the source index register*/ call _disp #call subroutine disp ret #return the control to the caller routine
_disp: #label of the disp routine cld /*clear direction flag, to permit string instructions to increment index registers by their own*/ lodsb /*load the string pointed by ds:si in a byte by byte manner into the accumulator*/ or %al, %al /*check if the entire string has been loaded byte-wise by oring al to al, if the result is zero, it shows there are no more byte to load*/ jz ret #jump if al zero to return mov $0xE, %ah /*else put code for 'write a character on the screen and move forward' into the ah*/ mov $7, %bh /*enable normal attribute for all the blank lines on the screen*/ int $0x10 /*call interupt 0x10, which is responsible for the video display, it will take codes from ah and bh*/ jmp _disp
msg: #label of the string definition .ascii "My Boot System" #definition of the string
.org 510 #set origon to 510 .word 0xAA55 # --------------------------------------------------------------------------------------------------------------------------------------
saved the file with the name myos.s then
#as myos.s -o myos.o #objcopy -O binary myos.o BOOT #dd if=./BOOT of=/dev/fd0 bs=512 count=1 -------------------------------------------------------------------------------------------------------------------------------------
the system tries to boot from the floppy and it boots (as it doesnt give an error or it doesnt go to the next boot device. but it doesnt display the string that i had to show from the string
please check it and tell me about any possible errors in the code
Regards Azeem
_________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
a) Having a little difficulty reading the code... b) You might get more help with the suse-programming list c) I think you are assuming the string is null terminated. I am unfamilier with this assembler but it might be worthwhile explicitly putting a null at the end of the string. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org iD8DBQFGYS3BasN0sSnLmgIRAktSAKCr34HSYobLCCWudXV/S8fJc+V0qwCfQE4j IRCq2NkLBQjoSgwlXTNJIPc= =7jdM -----END PGP SIGNATURE----- -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org