format pe console
include 'win32ax.inc'
entry start
;---------
.data
table dd 0x006d,dohan, 0x006e,yonah, 0x006f,conroe,0x00f2,netburst
dd 0x1067,wolf, 0x106a,bloom, 0x106e,lynn, 0x206c,gulf
dd 0x2065,arra, 0x206e,neh, 0x206f,west, 0x3067,silver
dd 0x206a,sandy, 0x206d,sandy, 0x306a,ivy, 0x306e,ivy
dd 0x306c,hass, 0x306f,hass, 0x4065,hass, 0x4066,hass
dd 0x306d,broad, 0x4067,broad, 0x406f,broad, 0x5066,broad
dd 0x406e,sky, 0x5065,sky, 0x506e,sky, 0x00f4,pres
dd 0x506c,apollo,0x806e,kaby, 0x906e,coffe, 0x706a,gemini
dd 0x406a,merri, 0x406c,charry,0x406d,avoton,0x5067,phi
dd 0x506c,brox, 0x506a,moor, 0x506f,denver,0x606e,cougar
tableLen = ($ - table)/8
dohan db 'Dothan',0
yonah db 'Yonah',0
conroe db 'Conroe',0
netburst db 'Netburst',0
pres db 'Prescott',0
wolf db 'Wolfdale',0
bloom db 'Bloomfield',0
lynn db 'Lynnfield',0
gulf db 'Gulftown',0
arra db 'Arrandale',0
neh db 'Nehalen',0
west db 'Westmere',0
silver db 'Silvermont',0
sandy db 'Sandy-Bridge',0
ivy db 'Ivy-Bridge',0
hass db 'Haswell',0
broad db 'Broadwell',0
sky db 'Sky-Lake',0
apollo db 'Apollo-Lake',0
kaby db 'Kaby-Lake',0
coffe db 'Coffe-Lake',0
gemini db 'Gemini-Lake',0
merri db 'Merrifield',0
charry db 'Charry View',0
avoton db 'Avoton',0
phi db 'Phi-Lnights',0
brox db 'Broxton',0
moor db 'Moorefield',0
denver db 'Denverton',0
cougar db 'Cougar-Montain',0
unk db 'Unknown',0
buff db 0
;//---------
.code
start: mov eax,1
cpuid
push eax ;
shr eax,4 ; степпинг не нужен
xchg eax,ebx ; EBX = Family/Model
mov esi,table ; таблица
mov ecx,tableLen ; её длина
@@: lodsd ; ищем код в таблице..
cmp ebx,eax
je @found
add esi,4
loop @b
mov esi,unk ; прокол
jmp @prn ;
@found: mov esi,[esi] ; иначе: взять адрес строки
@prn: pop eax ; ..и код
cinvoke printf,<10,'CPUID code: %X --> %s',0>,eax,esi
cinvoke gets,buff
cinvoke exit,0
;//**********************************
section '.idata' import data readable
library msvcrt,'msvcrt.dll'
import msvcrt, printf,'printf',exit,'exit',gets,'gets'