Win32 MMX-testi

Entropia 16.10.03 09:31

Testaa onko prosessorissa MMX-käskykantaa

 Tekstiversio  Arvo: 0 (1 ääntä)  Äänestä: +  -
Lopullisesta ohjelmasta tulee noin 2560 tavun pituinen.
Kääntyy masmilla. http://www.masm32.com.
Valmis ohjelma löytyy osoitteesta http://koti.mbnet.fi/entropia/assembly/mmxtest.exe.
Edit: optimoitu ;)


.586
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

.data                        ; määritellään tekstit
otsikko db "MMX-testi",0
eimmx   db "Prosessorissa ei ole MMX-käskykantaa",0
onmmx   db "Prosessorissa on MMX-käskykanta",0

.code
start:
  mov eax, 1                            ; asetetaan eax-rekisteriin arvo yksi
  cpuid        ; jolloin cpuid palauttaa eax-rekisteriin
  test edx, 00800000h                  ; tietoa cpu:n ominaisuuksista. verrataan
  jnz loytyy                            ; tulosta ja suoritetaan hyppy jos ei ole nolla

eiloydy:
  invoke MessageBox, NULL, addr eimmx, addr otsikko, MB_OK      ; avataan viestiruutu jossa kerrotaan ettei mmx-tukea ole
  jmp loppu

loytyy:
  invoke MessageBox, NULL, addr onmmx, addr otsikko, MB_OK      ; viestiruutu jossa kerrotaan että mmx-tuki löytyy

loppu:
  invoke ExitProcess,NULL                                   ; lopetetaan ohjelma

end start

thefox 13:14 18.10.03 
Eipä siinä, noinhan se tapahtuu. Voisit tietysti myös tsekata, tuetaanko CPUID:tä ylipäätään (EFLAGS), ja tuossa "loytyy" labelin perässä on turha "jmp loppu".