Du brauchst dazu die Funktion 1. Diese musst du in eax schreiben und dann cpuid aufrufen. In den registern ecx,ebx und edx (diese Reihenfolge) befindet sich dann ein (logischerweise) insgesamt 12 Byte großer String. Du kopiert diese Werte also einfach in einen leeren 12 Byte String und testest dann ob dieser AuthenticAMD oder GenuineIntel beinhaltet.
mov eax,1
cpuid
mov rsi,ZeroString
mov [rsi],ecx
mov [rsi+4],ebx
mov [rsi+8],edx
mov rsi,ZeroString
mov rdi,IntelString
mov rcx,12/4
rep cmpsd
je IntelCPU
mov rsi,ZeroString
mov rdi,AMDString
mov rcx,12/4
rep cmpsd
je AMDCPU
;keine AMD oder Intel CPU
...
Ich habe den Code jetzt auf die Schnelle geschrieben. Aber so oder so ähnlich sollte es Funktionieren. (64 Bit Register evt. in 32 Bit umwandeln).
bitmaster