Accueil > > > CPUID3.Asm
LECTURE DE CPUID
CPUID3.Asm
Informations sur ce code source
utilisation de l'instruction CPUID pour connaitre les caractéristiques du processeurs (constructeur,extensions supportées,...)
Fichier : CPUID3.Asm
Nombre de lignes : 131 lignes
Afficher ce fichier en plein écran
- .686
- .model flat, stdcall ;32 bit memory model
- option casemap :none ;case sensitive
-
- include CPUID3.inc
-
- .code
-
- start:
-
- invoke GetModuleHandle,NULL
- mov hInstance,eax
-
- invoke InitCommonControls
- invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
- invoke ExitProcess,0
-
-
-
- DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
-
- LOCAL compteur:DWORD
-
- mov eax,uMsg
- .if eax==WM_INITDIALOG
-
- lea eax,constructeur
- mov edi,eax
- xor eax,eax
- cpuid
- mov [edi+16],ebx
- mov [edi+20],edx
- mov [edi+24],ecx
- invoke lstrcat,offset buff,offset constructeur
- invoke lstrcat,offset buff,offset RL
-
- ;contenu de ECX
-
- mov compteur,16
- lea eax,TAB
- mov edi,eax
- @@:
- invoke CPUID_TEST,1,[edi],[edi+4],[edi+8],1
- add edi,12
- dec compteur
- jnz @b
-
- ;contenu de EDX
-
- mov compteur,8
- lea eax,TAB1
- mov edi,eax
- @@:
- invoke CPUID_TEST,1,[edi],[edi+4],[edi+8],2
- add edi,12
- dec compteur
- jnz @b
-
- invoke SetDlgItemText,hWin,IDC_EDT1,addr buff
-
-
- .elseif eax==WM_COMMAND
-
- mov eax,wParam
-
- .IF lParam==0
- .if ax==IDM_EXIT
- invoke EndDialog, hWin,NULL
- .endif
- .ELSE
- mov edx,wParam
- shr edx,16
- .if dx==BN_CLICKED
- .if ax==IDC_BTN3
- invoke SendMessage,hWin,WM_COMMAND,IDM_EXIT,0
- .endif
- .ENDIF
- .ENDIF
-
- .elseif eax==WM_CLOSE
- invoke SendMessage,hWin,WM_COMMAND,IDM_EXIT,0
- .else
- mov eax,FALSE
- ret
- .endif
- mov eax,TRUE
- ret
-
- DlgProc endp
-
- CPUID_TEST proc uses eax ecx num:dword,bit:dword,msgTRUE:dword,msgFALSE:dword,REG:dword
-
- ;num: n° de la fonction passée à CPUID
- ;bit: bit à tester par un AND
- ;msgTRUE: pointeur sur le message TRUE
- ;msgFALSE: pointeur sur le message FALSE
- ;REG: registre à étudier 1=ECX 2=EDX
-
- mov eax,num
- cpuid
-
- .if REG==1
- push ecx
- and ecx,bit
- .elseif REG==2
- push edx
- and edx,bit
- .endif
-
- jz bit_desarme
- invoke lstrcat,offset buff,msgTRUE
- jmp @f
-
- bit_desarme:
- invoke lstrcat,offset buff,msgFALSE
- @@:
- invoke lstrcat,offset buff,offset RL
-
- .IF REG==1
- pop ecx
- .ELSEIF REG==2
- pop edx
- .endif
-
- ret
-
- CPUID_TEST endp
-
-
- end start
|