[Linux] off topic

---------

New Message Reply About this list Date view Thread view Subject view Author view

From: Halil Demirezen (halil@bilmuh.ege.edu.tr)
Date: Mon 19 Aug 2002 - 16:46:25 EEST


Selam konularla alakali deil ama,

linux daki bootstrap kodunu inceledim ve bir kac tane daha kod inceledeim farkli
os larin bootstraplerini. anladigim kadariylar...

boot edilecek deviceden 512 byte olan bootstrap kodu okunuyor sonra bu
memory de 07c0h adresine yerlestiriliyor ve buraya jump edliyor..
ve buradaki codeler teker teker calisiyor. ornegin bo code yani bootstap
diskten biraz daha sector okuyup bunu farkli bir memory segmentine yerlestirip
buraya jump ediyor. Ben asagidakine benzer bir code yazdim...

code segment
   mov ax,cs
   mov ds,ax
   mov es,ax
   cli
    mov ss,ax
    mov sp, 400h
     ;gercek kod ile karistirmamk icin 512 byte inin uzerinde bir deger
   
    sti
 
    push es
    mov ax, 3000h
    mov es, ax
    mov ah, 2
    ...
    ..
    int 13h
    pop es

boylece belirtigimiz sayida sector floppy veya hdiskten 3000h segment li adrese
atiliyor. diskten sector okuma veya jmp etme konusunda bir sorum yok fakat
bootstrap kodu icindeki bir offset degerli msg i ekrana bios interruplari ile yazdiramiyorum.

    bios intlerini gectim , hadi screen buffer ile halledeyim dedim

   push es
   mov ax, 0b800h
   mov es, ax
   push di
   mov di, 0
   mov si, offset msg

dongu:
   mov al, [si]
   mov byte ptr es:[di], al
   inc si
   add di, 2
   cmp al, 0
   je cik
   jmp dongu

   pop di
   pop es

bunu bile yapmiyor..
 fakat
   mov byte ptr es:[di], 'a'
 yapinca problem yok yani a harfini yazdiriyor...

ama offseti gorsteremiyorum...

atladigim bir nokta mi var yoksa... ve bios int ler ile 80x25 a nasil sitring bastiracagim bootstrap icinde..

ek olarak assembler olarak masm kullaniyorum. Yoksa ms assemblerin bir problemimi yoksa???

yardimlarinizi bekliyorum...

iyi calismalr

  

    

---------------------------------------
This message was sent by Postaci Webmail. See www.trlinux.com for details.
-----------------------------------------------------------------------
Liste üyeliğiniz ile ilgili her türlü işlem için
http://liste.linux.org.tr adresindeki web arayüzünü kullanabilirsiniz.

Listeden çıkmak için: 'linux-request@linux.org.tr' adresine,
"Konu" kısmında "unsubscribe" yazan bir e-posta gönderiniz.
-----------------------------------------------------------------------


New Message Reply About this list Date view Thread view Subject view Author view

---------

Bu arsiv hypermail 2b29 tarafindan uretilmistir.