Witam.

Ostatnio zacząłem się bawić portami 0xCFC i 0xCF8 które służą do obsługi PCI. Zgłębiając tajniki dowiedziałem się o takim elemencie jak PCI Header i jest to standardowy nagłówek PCI który posiada każde urządzenie. Z tego nagłówka można wyczytać wiele ciekawych informacji takich jak Device Id , Vendor id itp. Lecz do kontroli urządzenia najważniejsze są BARY. W współczesnych czasach raczej wykorzystuje się mapowanie portó I/O które są wsadazne do RAMU (Jeśli dobrze rozumiem). I pytanie moje jest takie jak w temacie.
Np W linux można użyć API systemu żeby zmapować porty I/O urządzenia (Jeśli dobrze pamiętam to chyba metoda mmap(); ). A mnie zastanawia jak te porty zmapować w Assemblerze czyli tak nisko poziomowo. Z wzór weźmy że stworzyłem bootloadera z OS. I teraz jak za pomocą assemblera (16 bit mode) zrobić to mapowanie bo przyznam się że przeleciałem wiele stron i znalazłem tylko wykorzystanie API systemu linux ale o asm na tak niskim poziomie to nic.

Fajnie gdyby były jakieś przykłady kodu. ( Nie musi być cały tylko jakiś krótki skrawek który podaje przykład działania tego mapowania) :)

Dziękuję za każdą pomoc i życzę miłego dnia wszystkim.