Помогите правильно интерпретировать базовый адрес памяти B0003000h, на котрый отображается пространство регистров устройства.
Сначала приведу часть кода для чтения регистров PCI устройства:
IDEAL
P386
LOCALS
MODEL MEDIUM
SEGMENT sseg para stack 'STACK'
DB 400h DUP(?)
ENDS
DATASEG
VendorID      DW ? ;идентификатор изготовителя
DeviceID      DW ? ;идентификатор устройства
ClassCode     DD ? ;тип устройства
BaseAddress0  DD ? ;базовый адрес 0
BaseAddress1  DD ? ;базовый адрес 1
BaseAddress2  DD ? ;базовый адрес 2
BaseAddress3  DD ? ;базовый адрес 3
BaseAddress4  DD ? ;базовый адрес 4
BaseAddress5  DD ? ;базовый адрес 5
InterruptLine DB ? ;номер используемого прерывания IRQ
BusNumber     DB ? ;номер шины
DeviceNumber  DB ? ;номер устройства и номер функции
NoPCI  DB 12,18,"Система не поддерживает PCI USB",0
NoUSB DB 12,23,"Контроллер USB не найден",0
BadReg DB 12,28,"Неверный номер регистра",0
ENDS
CODESEG
;****************CUT**********************
PROC PCITest
; Опрос PCI-устройств
; Проверить наличие PCI BIOS
        mov     AX,0B101h
        int     1Ah
        jc      @@PCIBIOSNotFound
        cmp     EDX,20494350h
        jne     @@PCIBIOSNotFound
; Найти USB контроллер
        mov     AX,0B103h
        mov     ECX,0C0310h
        mov     SI,0
        int     1Ah
        jc      @@DeviceNotFound
        mov     [BusNumber],BH
        mov     [DeviceNumber],BL
; Получить идентификатор изготовителя
        mov     AX,0B109h ;читать слово
        mov     DI,0      ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [VendorID],CX
; Получить идентификатор устройства
        mov     AX,0B109h ;читать слово
        mov     DI,2      ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [DeviceID],CX
; Получить тип устройства
        mov     AX,0B10Ah ;читать двойное слово
        mov     DI,8      ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        shr     ECX,8
        mov     [ClassCode],ECX
; Получить базовый адрес 0
        mov     AX,0B10Ah ;читать двойное слово
        mov     DI,10h    ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [BaseAddress0],ECX
; Получить базовый адрес 1
        mov     AX,0B10Ah ;читать двойное слово
        mov     DI,14h    ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [BaseAddress1],ECX
; Получить базовый адрес 2
        mov     AX,0B10Ah ;читать двойное слово
        mov     DI,18h    ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [BaseAddress2],ECX
; Получить базовый адрес 3
        mov     AX,0B10Ah ;читать двойное слово
        mov     DI,1Ch    ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [BaseAddress3],ECX
; Получить базовый адрес 4
        mov     AX,0B10Ah ;читать двойное слово
        mov     DI,20h    ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [BaseAddress4],ECX
; Получить базовый адрес 5
        mov     AX,0B10Ah ;читать двойное слово
        mov     DI,24h    ;смещение слова
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [BaseAddress5],ECX
; Получить номер используемого устройством
; прерывания IRQ
        mov     AX,0B108h ;читать байт
        mov     DI,3Ch    ;смещение байта
        int     1Ah
        jc      @@BadRegisterNumber
        mov     [InterruptLine],CL
; *************************CUT******************
@@BadRegisterNumber:
@@DeviceNotFound:
@@PCIBIOSNotFound:
ENDP PCITest 
ENDS
END
;***************Результат***************************
;
;BusNumber     00h
;DeviceNumber  13h
;VendorID      0E11h
;DeviceID      A0F8h
;ClassCode     0C0310h
;BaseAddress0  00h
;BaseAddress1  00h
;BaseAddress2  00h
;BaseAddress3  00h
;BaseAddress4  B0003000h  ! 
 
 ;BaseAddress5  00h
;InterruptLine 09h
;
;*********************************************
; * pointer = getbaseptr(BaseAddress4);
;   IOSpace = pointer;
(BaseAddress4 specifies upper 20 bits of the 32 bit starting base adress.
This represents a maximum of 4-KB addressing space for the operation registers)
По адресу BaseAddress4 должен находиться  Revision register и,
как сказано в спецификации, всегда должен иметь значение 00000010h,
но при чтении линейного базового адреса IOSpace выводятся какие-то левые коды.
Пожалуйста!
Помогите правильно интерпретировать базовый адрес памяти B0003000h,
промучился с ним уже черти сколько и не знаю, как до него достучаться. 
