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

Вниз

Тут промелькивал вопрос про серийный номер камня   Найти похожие ветки 

 
han_malign ©   (2003-06-20 12:29) [0]

никак не пойму где туплю, но какая то непонятка вышла:
program cpu_;
{$APPTYPE CONSOLE}
uses Windows,
Utils in "..\Common\utils.pas";
var id,id1: array[0..2]of dword;
begin
asm
push EBX
mov eax,3
db $0F,$A2//CPUID opcode
mov dword ptr id[2],ebx//least significant (Transmeta Crusoe processors only)
mov dword ptr id[1],ecx
mov dword ptr id[0],edx//most significant

mov dword ptr id1[0],ebx
mov dword ptr id1[1],ecx
mov dword ptr id1[2],edx
pop EBX
end;
Writeln(HexDword(id[0])+HexDword(id[1])+HexDword(id[2]));
Writeln(HexDword(id1[0])+HexDword(id1[1])+HexDword(id1[2]));
end.

- самое непонятное в том, что оно выдает
0C04084100000000 00000000
08410000 00000C0400000000


Как??????


 
han_malign ©   (2003-06-20 13:20) [1]

Вот так и узнаешь, что в BASM смещение всегда побайтовое...
program cpu_;
{$APPTYPE CONSOLE}
uses Windows,
Utils in "..\Common\utils.pas";
var id: array[ 0..2]of dword;
begin
asm
push EBX
mov eax,3
db $0F,$A2//CPUID opcode
mov dword ptr id[ 0],ebx//(Transmeta Crusoe processors only)
mov dword ptr id[ 4],ecx
mov dword ptr id[ 8],edx
pop EBX
end;
Writeln(HexDword(id[ 0])+HexDword(id[ 1])+HexDword(id[ 2]));
end.
- так катит..., похоже дело, как всегда, в прямом приведении типов (dword (ptr id)[1])...



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

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

Наверх




Память: 0.46 MB
Время: 0.016 c
1-20105
VD601
2003-06-22 23:14
2003.07.07
SizeOf(ClassType)


3-20014
Kinda
2003-06-15 13:22
2003.07.07
Создание запроса.


14-20291
BOA_KAA
2003-06-20 14:07
2003.07.07
PowerPoint


14-20267
Lamer111
2003-06-19 22:45
2003.07.07
чат для локалки


1-20146
maxic
2003-06-25 10:50
2003.07.07
Проблемы с dll