Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Bilgisayarımızı açtığımızda işletim sistemi boot edilmeden önce anakart tarafından fiziksel RAM'in 0040:0000-0040:00FF adresleri arasına yazılan donanım bilgisidir. Bu bilgiler PC üzerinde takılı olan donanımın erişlebilecek adreslerini verir. anakartlarda bir standarttır ve BIOS Data Area alanının her byte'ı diğer anakartlarda da aynı donanımın adresini verir. Eğer ilgili donanım yüklü değilse adres alanında 0 atanmıştır fakat donanım varsa o donanıma ulaşılabilecek adres tutulur. işletim sistem de buradan yola çıkarak donanıma veri gönderir/alır.

PC üzerindeki seri port'a adreslerini BIOS Data Area alanında öğrenelim.
#include <stdio.h>
#include <dos.h>

void main(void){
    unsigned int *ptr_addr;
    unsigned int address;
    int i;

    ptr_addr = (unsigned int *) 0x00000400;

    for ( i=0; i<4; i++){
        address = *ptr_addr;

        if (address == 0)
            printf("COM%d icin Port bulunamadi \n", i+1);
        else
            printf("COM%d icin atanan adres %Xh\n", i+1, address);

        *ptr_addr++;

    }

}

(Örnek C kodu Dr. Haluk Gümüşkaya'nın Mikroişlemciler ve Bilgisayarlar kitabından alınmıştır.)

Yukarıdaki kod PC'de var olan Seri portların adreslerini listeler. Bulunan bu adreslere veri yazarak seri port'tan çıkış yapılabilir.

Windows NT sistemlerinde BIOS Data Area alanına erişim sağlamaya çalışan programlar geçersiz işlem yürüttü hatası ile sonlandırılır. Bunun nedeni güvenliktir. Bu alana erişebilmek için sürücü yazmak gereklidir. Windows 9x ve DOS işletim sistemlerinde erişim serbesttir.
bateristt
16 Eylül 2005 12:22 ~ 08 Ekim 2006 22:35
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.
© 2005, Bilişim Kulübü. (1078 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen