Последние записи
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
- Взаимодействие через командную строку
- Сравнение языков на массивах. Часть 1
- Сравнение языков по скорости
- Чтение огромных xml-файлов
- Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
26th
Дек
IO порты и PCI
Posted by bullvinkle under Пост-обзор
Здрйвствуйте у меня вопрос… как сделать запрос PCI на опрос устройства? например выполнить функцию по смещению 00h (получить вендор) для устройства 1f0 (IDE first …) если быть точней то 00:D31:F1. Говорят что надо вначале PCI сказать с каким устройством ты хочешь пообщатся…. но как это делается? знаю что запрос должен быть 32 битный….. помогите плиззз….
>>> тырк
function detectPCIBios:boolean;assembler;
asm
mov ax,0b101h
int 1ah
jc @nopcibios
mov ax,1
ret
@nopcibios:
xor ax,ax
ret
end;
function detectPCIdevice(DeviceID:Word;VendorID:Word;VAR BusNumber:Byte;VAR FunctionNumber:Byte):boolean;
var found:boolean;
bn:byte;
fn:byte;
begin
bn:=0;fn:=0;
found:=false;
asm
db 66h;pusha
mov cx,DeviceID
mov dx,VendorID
mov ax,0b102h
xor si,si
int 1ah
jc @nodevice
mov found,true
mov bn,BH
mov fn,BL
@nodevice:
db 66h;popa
end;
BusNumber:=bn;FunctionNumber:=fn;
detectPCIdevice:=found;
end;
function readPCIRegisterByte(RegisterNumber:word;BusNumber:Byte;FunctionNumber:Byte;var result:byte):boolean;
var okay:boolean;
res:byte;
begin
okay:=false;
res:=0;
asm
db 66h; pusha
mov AX,0B108h
mov BH,busNumber
mov BL,functionNumber
mov DI,RegisterNumber
int 1Ah
jc @noaction
mov res,cl
mov okay,true
@noaction:
db 66h; popa
end;
result:=res;
readPCIRegisterByte:=okay;
end;
function readPCIRegisterWord(RegisterNumber:word;BusNumber:Byte;FunctionNumber:Byte;var result:Word):boolean;
var okay:boolean;
res:word;
begin
okay:=false;
res:=0;
asm
db 66h; pusha
mov AX,0B109h
mov BH,busNumber
mov BL,functionNumber
mov DI,RegisterNumber
int 1Ah
jc @noaction
mov res,cx
mov okay,true
@noaction:
db 66h; popa
end;
result:=res;
readPCIRegisterWord:=okay;
end;
function readPCIRegisterDWord(RegisterNumber:word;BusNumber:Byte;FunctionNumber:Byte;var result:longint):boolean;
var okay:boolean;
res:longint;
begin
okay:=false;
res:=0;
asm
db 66h; pusha
mov AX,0B10ah
mov BH,busNumber
mov BL,functionNumber
mov DI,RegisterNumber
int 1Ah
jc @noaction
db 66h; mov word ptr res,cx { MOV RES, ECX }
mov okay,true
@noaction:
db 66h; popa
end;
result:=res;
readPCIRegisterDword:=okay;
end;
function writePCIRegisterByte(RegisterNumber:word;BusNumber:Byte;FunctionNumber:Byte;input:byte):boolean;
var okay:boolean;
begin
okay:=false;
asm
db 66h; pusha
mov AX,0B10bh
mov BH,busNumber
mov BL,functionNumber
mov DI,RegisterNumber
mov CL,input
int 1Ah
jc @noaction
mov okay,true
@noaction:
db 66h; popa
end;
writePCIRegisterByte:=okay;
end;
function writePCIRegisterWord(RegisterNumber:word;BusNumber:Byte;FunctionNumber:Byte;input:word):boolean;
var okay:boolean;
begin
okay:=false;
asm
db 66h; pusha
mov AX,0B10ch
mov BH,busNumber
mov BL,functionNumber
mov DI,RegisterNumber
mov CX,input
int 1Ah
jc @noaction
mov okay,true
@noaction:
db 66h; popa
end;
writePCIRegisterWord:=okay;
end;
function writePCIRegisterDWord(RegisterNumber:word;BusNumber:Byte;FunctionNumber:Byte;input:longint):boolean;
var okay:boolean;
res:byte;
begin
okay:=false;
res:=0;
asm
db 66h; pusha
mov AX,0B10dh
mov BH,busNumber
mov BL,functionNumber
mov DI,RegisterNumber
db 66h; mov CX, word ptr input
int 1Ah
jc @noaction
mov okay,true
@noaction:
db 66h; popa
end;
writePCIRegisterDWord:=okay;
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)