Kezdőoldal » Számítástechnika » Programozás » CPUID megírása C assemblerben?

CPUID megírása C assemblerben?

Figyelt kérdés

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;

}


2012. márc. 25. 22:33
 1/3 anonim ***** válasza:
Esetleg nem azonnal kódolással kellene kezdeni, hanem kivenni egy könyvet a CPU-k felépítéséről....
2012. ápr. 1. 15:50
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:

Ezt az egyet nem erteM:

char cpu[10];


MOV dword ptr [cpu], EDX


dword ptr mire valo

2012. ápr. 1. 17:56
 3/3 iostream ***** válasza:
Arra való, hogy 4 byteot mozgasson, 4 bytera mutató pointerként értelmezze.
2012. ápr. 1. 20:16
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!