Текущий архив: 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_;
- так катит..., похоже дело, как всегда, в прямом приведении типов (dword (ptr id)[1])...
{$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.
Страницы: 1 вся ветка
Текущий архив: 2003.07.07;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.006 c