CPUID megírása C assemblerben?
Beadványt kell majd elmondanom hogy mi mire van nagyjábol..
Van két megírt változatom elozo evesektol..
1: a szlovák kommentart nem kell figyelni.csak azt irja nagyjabol hogy elmenti a tommb hanyadik elemebe valmit
#include <stdio.h>
#include <conio.h>
static char cpu[13];
int main()
{
__asm{ //zaciatok asemblerovskeho kodu
MOV EAX,0 //register EAX nastav na hodnotu nula
CPUID //vykonanie instrukcie CPUID, ktora nastavi registre EBX,EDX,ECX
// ziskanie prvych styroch pismen retazca z registra EBX
MOV cpu[0],bl //premennu cpu[0] (prvok pola znakov), na hodnotu registra bl
MOV cpu[1],bh //premennu cpu[1] (prvok pola znakov), na hodnotu registra bh
SHR EBX,16 //bitovy posun doprava o 16 bitov, aby sme mohli ziskat hodnotu z vyznamovo vyssej casti a registra pristupit k 8-bitovym registrom *h,*l (* je b,d,c)
MOV cpu[2],bl //premennu cpu[2] (prvok pola znakov), na hodnotu registra bl
MOV cpu[3],bh //premennu cpu[3] (prvok pola znakov), na hodnotu registra bh
// ziskanie druhych styroch pismen retazca z registra EDX
MOV cpu[4],dl //premennu cpu[4] (prvok pola znakov), na hodnotu registra dl
MOV cpu[5],dh //premennu cpu[5] (prvok pola znakov), na hodnotu registra dh
SHR EDX,16 //bitovy posun doprava o 16 bitov, aby sme mohli ziskat hodnotu z vyznamovo vyssej casti a registra pristupit k 8-bitovym registrom *h,*l (* je b,d,c)
MOV cpu[6],dl //premennu cpu[6] (prvok pola znakov), na hodnotu registra dl
MOV cpu[7],dh //premennu cpu[7] (prvok pola znakov), na hodnotu registra dh
// ziskanie tretich styroch pismen retazca z registra ECX
MOV cpu[8],cl //premennu cpu[8] (prvok pola znakov), na hodnotu registra cl
MOV cpu[9],ch //premennu cpu[9] (prvok pola znakov), na hodnotu registra ch
SHR ECX,16 //bitovy posun doprava o 16 bitov, aby sme mohli ziskat hodnotu z vyznamovo vyssej casti a registra pristupit k 8-bitovym registrom *h,*l (* je b,d,c)
MOV cpu[10],cl //premennu cpu[10] (prvok pola znakov), na hodnotu registra cl
MOV cpu[11],ch //premennu cpu[11] (prvok pola znakov), na hodnotu registra ch
} //koniec asemblerovskeho kodu
cpu[12]='\0';
printf("Procesor ID : %s\n\n\n ",cpu);
getch();
return(0);
}
2: egy egyszerubb valtozatnak nez ki:
#include <stdio.h>
#include <string.h>
int main()
{
char name[13];
__asm
{
XOR EAX,EAX
CPUID
MOV dword ptr [name], EBX
MOV dword ptr [name+4], EDX
MOV dword ptr [name+8], ECX
}
name[12]=0;
printf("Procesor: %s is BEST!!!\n", name);
getchar();
return 0;
}
Ezt az egyet nem erteM:
char cpu[10];
MOV dword ptr [cpu], EDX
dword ptr mire valo
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!