newrating: cmp [FRS], 266 jz f266 cmp [FRS], 333 jz f333 cmp [FRS], 400 jz f400 f266: ;формулы вычисления XP-рейтинга Athlon-ов (Tbred, Barton): ;FSB266/256kB: сделано ;XP+ (Freq<2000MHz) = 1000 + (Freq-1000)*1,5 = Freq*1.5-500 ;XP+ (Freq>=2000MHz) = 900 + (Freq-1000)*1,5 = Freq*1.5-600 cmp [total], 2000 jl pal ; Рейтинг для Паломино 2000+ mov eax,[total] imul eax, 3 shr eax,1 sub eax, 600 mov [rating], eax jmp vyxod pal: ; Рейтинг для Паломино 2000- mov eax,[total] imul eax, 3 shr eax,1 sub eax, 500 mov [rating], eax jmp vyxod f333: cmp [L2], 256 jl .Th ; Thorton ;FSB333/512kB: сделано ;XP+ (Freq<2100MHz) = Freq*1.2 + 300 ;XP+ (Freq>=2100MHz) = Freq*1.2 + 400 cmp [total], 2100 jl .r2100 mov eax,[total] xor edx, edx imul eax, 600000 mov ebx, 500000 div ebx mov [rating], eax add [rating], 400 ; Rating for Barton F<2000 MHz jmp vyxod .r2100: mov eax,[total] xor edx, edx imul eax, 600000 mov ebx, 500000 div ebx mov [rating], eax add [rating], 300 ; Rating for Barton F>2000 MHz jmp vyxod ;FSB333/256kB: сделано ;XP+ = Freq*1.2 + 100 .Th: mov eax,[total] xor edx, edx imul eax, 600000 mov ebx, 500000 div ebx mov [rating], eax add [rating], 100 ;Rating for Thorton jmp vyxod f400: ;FSB400/512kB: ;XP+ = Freq*1.5 - 100 mov eax,[total] imul eax, 3 shr eax,1 sub eax, 100 mov [rating], eax vyxod: ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; multipl: ;--- вычисление коэффициента умножения - ; портит регистры ; out : CL = коэфф.умножения * 10, или 0 xor ecx, ecx cmp dword[smallvendor], 'cAMD' ; Check for Advanced Micro Devices CPU jne noAMD cmp byte [f], 5 jne noAMDK6 mov eax, 68 ; AMD-K6 (p.30) mov ebx, 3 mov edx, 0x0C0000087 mcall ; eax - low dword and eax, 111b mov cl, [athloncoef3 + eax] cmp eax, 6 jne @f cmp byte[m], 8 jae @f mov cl, 20 @@: ret noAMDK6:cmp byte [f], 6 jne noAMDK7 cmp byte [m], 5 jna @f mov eax, 0x80000007 cpuid and edx, 6 ; voltage ID control & frequency ID control cmp edx, 6 je AMDK7M @@: mov eax, 68 ; Athlon/AthlonXP mov ebx, 3 mov edx, 0x0C0010015 mcall mov ebx, eax shr ebx, 24 and ebx, 0x0F shr eax, 20 jnc @f add bl, 16 @@: mov cl, [athloncoef + ebx] ret AMDK7M: mov eax, 68 ; AthonXP-M mov ebx, 3 mov edx, 0xC0010042 mcall and eax, 0x1F mov cl, [athlonmcoef + eax] ret noAMDK7:cmp byte [f], 0xF jne noAMDK8 mov eax, 0x80000007 cpuid and edx, 6 ; voltage ID control & frequency ID control cmp edx, 6 je AMDK8M mov eax, 68 ; Athon64 mov ebx, 3 mov edx, 0xC0010015 mcall shr eax, 24 and al, 0x3F shr al, 1 add al, 4 mov dl, 10 mul dl mov cl, al ret AMDK8M: mov eax, 68 ; Athon64-M mov ebx, 3 mov edx, 0xC0010042 mcall and al, 0x3F shr al, 1 add al, 4 mov dl, 10 mul dl mov cl, al ret ;///////////////////////////////////////////////////////// noAMD: cmp dword [smallvendor], 'ntel' ; Check for International Electronics CPU jne noIntel cmp byte[f], 0x0F jne noIntelP4 cmp byte [t], 6 jne @f mov eax, 68 ; Pentium M mov ebx, 3 mov edx, 0x2A mcall shr eax, 22 and eax, 0x1F mov dl, 10 mul dl mov cl, al ret @@: cmp byte [m], 2 jae @f mov eax, 68 ; Pentium 4 / Xeon (model < 2) Willamete mov ebx, 3 mov edx, 0x2A mcall shr eax, 8 and eax, 0x0F mov cl, [p4coef + eax] ret @@: mov eax, 68 ; Pentium 4 / Xeon (model >= 2) NorthWood mov ebx, 3 mov edx, 0x2C mcall shr eax, 24 and eax, 0x1F mov dl, 10 mul dl mov cl, al ret noIntelP4: cmp byte[f], 6 jne noIntelP6 mov eax, 68 ; Pentium Pro / Pentium II / Pentium III mov ebx, 3 mov edx, 0x2A mcall shr eax, 22 test al, 0x20 jz @f or al, 0x10 @@: and eax, 0x1f cmp byte[m], 0x06 ; ? 7 ja @f and al, 0x0f @@: mov cl, [coppercoeff + eax] cmp byte[m], 0x0B jb @f mov cl, [tualatcoeff + eax] cmp byte[m], 0x0B je @f mov dl, 10 ; model 0x0C - 0x0F - Dothan / Yonah / Conroe / Merom mul dl mov cl, al @@: ret noIntel: noIntelP6: noAMDK8: ret