Agap Тюряга Klaft

перевести пару строчек кода на tasm

Код ASM1
2
3
movl $1, %eax
cpuid
movl %ebx, cpuid_ebx
Количество ядер находятся в битах 16-23 включительно переменной cpuid_ebx, то есть регистра ebx. В С это число выделяется так:

int procnum = (cpuid_ebx >> 16) & 0xFF;

Не очень силен в asm. Набросайте пожалуйста пару строк как все-таки
занести количество ядер в какую-нибудь переменную или регистр для посл.
вывода. Спасибо.

ДС
Дмитрий Савушкин

Непременно для TASM?

16-разрядная программа (для TASM):

ideal
model small
p586

udataseg
procnum dd ?

codeseg
startupcode
xor eax, eax
cpuid
mov eax, 1
cpuid
shr ebx, 16
and ebx, 0FFh
mov [procnum], ebx
;...
;Кол-во логических процессоров в переменной procnum
;...
exitcode
end

Но имейте в виду, что эмуляторы, например DOSBox, могут не полностью эмулировать команду cpuid, или вообще её не поддерживать.

32-разрядная программа (для TASM32):

ideal
p586
model flat

udataseg
procnum dd ?

codeseg
Start:
xor eax, eax
cpuid
mov eax, 1
cpuid
shr ebx, 16
and ebx, 0FFh
mov [procnum], ebx
;...
;Кол-во логических процессоров в переменной procnum
;...
end Start

P.S. У меня для Core i5 упорно возвращает 16 логических процессоров. Что-то я делаю не так.

P.P.S. Оказывается для многоядерных процессоров всё намного сложнее. Номер функции cpuid 11 (eax := 0Bh).

Похожие вопросы
Bonpoc no TASM (BHyTpu) турбо ассемблер. Ребятушки, какой TASM лучше для Windows 7? TASM 4.1 покатит ?
TASM это Visual ASM? Где скачать TASM? Где купить лицензию TASM?
Помогите с лабораторной на TASM
как написать данный код рекурсией? кода 10 строчек. подскажите пожалуйста
в хтмл код перевести можете?
Как сократить кол-во почти одинаковых строчек кода
Помогите с программой на TASM
кто поможет перевести с японского пару строчек?
подскажите, не понимаю в коде пару строчек
переведите с корейского пару строчек