Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: CL | DM;

Вниз

mov eax,   Найти похожие ветки 

 
Xia ©   (2002-10-29 16:39) [0]

раньше в winxp проходило сл.:

var
BD:dword;
.....
asm
mov eax,[$FFFF5] {- error}
mov bd,eax
end;

сейчас error компилятора.систему и дельфи не менял.что не так?


 
Наезжалкин   (2002-10-29 16:44) [1]

[ ] зачем?


 
Digitman ©   (2002-10-29 16:46) [2]

Какая {- error} ? Конкретно ?


 
Xia ©   (2002-10-29 19:03) [3]

2Digitman
Invalid combination of opcode and operands
А exe"шник пишет ошибку доступа- что там acsess v...
2Наезжалкин
информацию о бивасе знать хочу..
вообщето прогу к компу надо привязать...- кто-нить может подсказать.


 
Digitman ©   (2002-10-30 08:26) [4]

>Xia

Если ты даже скомпилировать не можешь, откуда "exe"шник"-то взялся ?)

А насчет AV - правильно "пишет". Адресное пространство BIOS недоступно для обращения через вирт.адр.пространство пользовательского процесса в Win32


 
soware   (2002-10-30 09:30) [5]

А под администратором не пробовал логиниться в XP ?


 
Tano   (2002-10-31 03:53) [6]

Пока не выделишь себе в программе эту память - EXEшник будет писать Access violation, даже если компилятор пропустит. Вообще не знаю, как такую конструкцию пропускал компил - у меня такое вроде не работало. Используй вместо этого
mov ebx,$fff???????
mov eax,[ebx] //или mov eax,QWORD PTR ebx


 
Tano   (2002-10-31 03:56) [7]

sorry, не QWORD, а DWORD
и еще - попробуй отключить в опциях компилятора Range Check (можно диективой {$R-})


 
Digitman ©   (2002-10-31 08:32) [8]


> Пока не выделишь себе в программе эту память


Любопытно, как же ты это себе мыслишь ?)


 
Странник ©   (2002-10-31 11:40) [9]

> Digitman © (31.10.02 08:32)
а в BIOS есть недокументированная функция
DWORD* AllocateBIOSMemoryPointer(adr:WORD););
которая мапит ROM в адресное пространство вызывающего потока.
так что все путем...


 
Странник ©   (2002-10-31 11:46) [10]

забыл добавить, доступна только если RAS/CAS=2 и установлено Shadow BIOS Memory на нужный сегмент.


 
Digitman ©   (2002-10-31 12:15) [11]


> а в BIOS есть недокументированная функция
> DWORD* AllocateBIOSMemoryPointer(adr:WORD););
> которая мапит ROM в адресное пространство вызывающего потока.
> так что все путем...


У потока нет АП. Оно есть у процесса.

Ну и ? Какое отношение ф-ции BIOS (пусть даже и недокументированные) имеет к модели виртуальнй памяти, используемой конкретно в Win32 ? А если работает ОС, отличающаяся от Win32 ? И там нет вообще понятия "процесс" ?

Если же таки речь все же идет не от ф-ции BIOS, а о недок.вызове Win32-ядра, то где, в каком модуле ядра реализована эта ф-ция ?


 
Странник ©   (2002-10-31 14:11) [12]

ну, уважаемый Digitman и Вы попались...
присмотритесь повнимательней :))
DWORD* AllocateBIOSMemoryPointer(adr:WORD) ;);
ведь правильно будет так:
threadvar ponter* AllocateBIOSMemoryPointer(volatile unsigned pointer BIOSadr); ;^)))


 
Digitman ©   (2002-10-31 14:29) [13]

>Странник

Ты это к чему вообще ?

Я, кажется, задал вполне конкретные вопросы :

1. Каким образом исп.код BIOS"а может чего-то там на что-то "мапить", если ему ничего не известно о местоположении GDT/LDT ?

2. Где ты нашел такую декларацию ?

Теперь еще и 3-й вопрос к тебе :
При чем здесь threadvar ? Какое это имеет отношение к сабжу, когда речь идет конкретно о селекторах сегментов, каковые находятся исключительно в ведении protected mode ОС , а не BIOS ?




 
Странник ©   (2002-10-31 14:56) [14]

да ПРИКАЛЫВАЮСЬ Я, неужели не понятно.
ессно, под NT только из нулевого кольца можно напрямую добраться до нижних адресов, а тем более к BIOS.
BIOS не использует ни GDT ни LDT, оно ему на фиг не нужно, а тем более виртуальные адресные пространства каких-то там процессов.

Зри в корень © Козьма Прутков
жуткую смесь паскаля и С и веселого настроения ты принял за чистую монету. :((
Нельзя быть постоянно таким серьезным, да еще в "Потрепаться". ;)))


 
Digitman ©   (2002-10-31 15:08) [15]

>Странник

Вот в "Потрепаться", сударь, и уместен треп. А здесь - "Система". Малясь промахнулся ты)

Ну а насчет "мапить" ФАП BIOS - оно вполне реализуемо. Только BIOS - как ни крути - здесь ни при чем)


 
han_malign ©   (2002-10-31 16:39) [16]

Я просто сделал поиск в Google по ключу FFFF5 Delphi

Title: Read from BIOS
From: n_pelov
Date: 03/29/2001 01:05PM PST
Answer Grade: A Points: 5
Hi!
I want to read 8 bytes from address $F000:$FFF5 in BIOS. When I make it with pascal for DOS I have no problems, but if I try it in delphi ot Borland pascal for windows (16 bit) it dosn"t work. Do any one can tell me how to do it?
...............................................................
Accepted Answer from Hamlet 03/29/2001 05:43PM PST
Okay, I"ve checked this out a bit more and you can ignore most of my previous comments!

For Win95/98 you can do this...
BIOSDate := string(pchar(ptr($FFFF5)));

For WinNT you should read from the registry...
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\SystemBiosDate


 
Digitman ©   (2002-10-31 17:21) [17]

>han_malign

>>For Win95/98 you can do this...
>> BIOSDate := string(pchar(ptr($FFFF5)));

Те же ..., но вид сбоку)
Не будет это работать.



Страницы: 1 вся ветка

Текущий архив: 2003.01.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
14-37366
Rouse_
2002-12-16 23:04
2003.01.13
---|Ветка была без названия|---


3-36967
oss
2002-12-18 12:06
2003.01.13
Update ADO


3-36921
Patrick
2002-12-17 18:48
2003.01.13
SQL для PARADOXа


3-36968
Сергей Бушин
2002-12-14 17:58
2003.01.13
Поле AutoIncrement при вставке в ClientDataSet


4-37428
Marko_polo
2002-11-24 07:38
2003.01.13
Нужна Помощь!!!