global main
extern printf
extern ExitProcess@4
segment .data
Not_Supp db 'CPUID not supported', 10, 0
Supp db 'CPUID supported', 10, 0
Strl db 'Number function: %d', 10
db 'ID: %s', 10, 0
ModelStr db 'signature %u %Xh', 10, 0
;Number dd 0
Buf times 32 db 0
Buf_Length equ $ - Buf - 1
db 0
endline db 13,10,'$'
segment .code
main:
pushfd
pop eax
mov ebx, eax
xor eax, 200000h
push eax
popfd
pushfd
pop eax
cmp eax, ebx
jne CPUIDSupp
push Not_Supp
call printf
jmp @exit
CPUIDSupp:
push Supp
call printf
mov eax, 0
cpuid
mov dword [Buf], ebx
mov dword [Buf+4], edx
mov dword [Buf+8], ecx
push Buf
push eax
push Strl
call printf
;push 32
;push dword 0
;push Buf
;call memset
mov eax, 1
cpuid
push eax
push eax
push ModelStr
call printf
@exit:
push dword 0
call ExitProcess@4
mov EBX,number
mov EDi, strOut
mov ECX,32
@@01: SHL EBX,1
XOR EAX,EAX
ADC AL,'0'
stosb
loop @@01
format PE
entry begin
include 'WIN32AX.INC'
section '.code' code readable executable
begin: mov eax,1
cpuid
mov ebx,eax
mov edi,dbBin
mov ecx,32
push edi
push eax
cld
@@01: xor eax,eax
shl ebx,1
adc al,'0'
stosb
loop @@01
xor eax,eax
stosb
pop eax
push eax
push eax
push dbFormat
call [printf]
xor eax,eax
call ExitProcess
section '.data' data readable writable
dbFormat db 'signature hex= %x oct= %o bin= %s this all',0
dbBin db 32 dup(?),0
section '.idata' import data readable
library kernel, 'kernel32.dll',\
msvcrt, 'msvcrt.dll'
import kernel,\
ExitProcess, 'ExitProcess'
import msvcrt,\
printf, 'printf'
int printf(
const char *format [,argument]...
);
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.