С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.06.2018
Сообщений: 2

Создание программы получения строки названия системного процессора

12.06.2018, 23:35. Показов 1987. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
создать программу получения строки названия системного процессора
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2018, 23:35
Ответы с готовыми решениями:

Запретить изменение названия программы или возврат названия
Создал программу, при закрытии которой она удаляется. Но... если сменить название программы пока она запущена, она естественно не...

Время получения входящих сообщений на ровно на 1 час меньше системного времени
Добрый день всем! В MS OUTLOOK время получения входящих сообщений на ровно на 1 час меньше системного времени. Время отправленных...

Получения названия процесса в который внедряется длл
Как я могу в длл получить название процесса в который длл внедрилась ? К примеру я внедряю длл в test.exe и мне длл должна вывести после...

14
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6206 / 2441 / 402
Регистрация: 29.07.2014
Сообщений: 3,174
Записей в блоге: 4
13.06.2018, 07:00
Tamerlanich, копай в сторону инструкции cpuid
2
0 / 0 / 0
Регистрация: 11.06.2018
Сообщений: 2
13.06.2018, 09:06  [ТС]
R71MT, я вообще без понятия как это делать, собственно поэтому и обратился, думаю может помогут
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
13.06.2018, 09:58
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Так тут-же написано : https://ru.wikipedia.org/wiki/CPUID
При EAX = 0 процессор возвращает идентификатор производителя процессора (англ. Vendor ID) в виде 12 символов ASCII в регистрах EBX, EDX, ECX (именно в таком порядке).
Тут статья поподробнее : https://en.wikipedia.org/wiki/CPUID
А вот тут совсем хорошая статья : https://habr.com/company/intel/blog/220851/
3
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
13.06.2018, 11:05
Tamerlanich,
Инструкция cpuid: получить полное название модели процессора
4
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6206 / 2441 / 402
Регистрация: 29.07.2014
Сообщений: 3,174
Записей в блоге: 4
13.06.2018, 12:18
если просто проверить Intel или AMD, то можно так..
правда всю жизнь сижу на интеловском проце, и проверить этот код небыло возможности.
У меня на интеле определяет правило, а обладателей амд прошу откликнуться:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
org  100h
jmp  start
 
intel  db   'GenuineIntel $'
amd    db   'AuthenticAMD $'
 
start: xor  ax,ax
       sahf
       mov  ax,5
       xor  dx,dx
       mov  bx,2
       div  bl
 
       mov  ah,9
       mov  dx,intel
       jz   @00
 
       mov  dx,amd
@00:   int  21h
 
exit:  xor   ax,ax
       int   16h
       int   20h
4
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,300
Записей в блоге: 12
13.06.2018, 23:02
R71MT, прикольно! Только зачем делать xor ax,ax + sahf, когда следом идёт xor dx,dx ?
Можно вообще сократить:
Assembler
1
2
3
mov al,1
xor ah,ah
div al
Добавлено через 3 минуты
Цитата Сообщение от R71MT Посмотреть сообщение
обладателей амд прошу откликнуться
Да, было бы интересно проверить (в т.ч. и мой вариант)
1
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6206 / 2441 / 402
Регистрация: 29.07.2014
Сообщений: 3,174
Записей в блоге: 4
14.06.2018, 00:03
Цитата Сообщение от Jin X Посмотреть сообщение
Можно вообще сократить:
а я вообще плохо понял, на что тут делается упор.
это код Криса, и вот как он его комментирует:
Assembler
1
2
3
4
5
6
7
8
9
10
start: xor  ax,ax      ;
       sahf            ; clear flags. bit 1 of flags is always set
       mov  ax,5       ; into the divident
       xor  dx,dx      ; 
       mov  bx,2       ; into the divisor
       div  bl         ; perform div test
 
       jz   @intel     ; flag not chanded it's a Intel,
                       ;   ..ZF will never be set on a NexGen CPU,
                       ;      ..but will be set on other.
2
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,300
Записей в блоге: 12
14.06.2018, 00:31
Цитата Сообщение от R71MT Посмотреть сообщение
а я вообще плохо понял, на что тут делается упор.
Ну как же?
Устанавливаешь флаг ZF, выполняешь деление. Intel этот флаг не меняет, а AMD сбрасывает (видимо, если результат не нулевой). Хотя в обоих манах написано "undefined" про все арифметические флаги.
2
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6206 / 2441 / 402
Регистрация: 29.07.2014
Сообщений: 3,174
Записей в блоге: 4
14.06.2018, 06:08
Цитата Сообщение от Jin X Посмотреть сообщение
видимо, если результат не нулевой
вот это я и хотел проверить - при каких обстоятельствах он меняет флаг.
нужно будет попробовать на амд разные варианты деления (когда остаток есть, и когда его нет), чтобы выловить фишку.

Добавлено через 1 минуту
..кстати, это примеры из его книжки "Отладка без исходных текстов" в приложении(С), там ещё есть много чего
2
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
14.06.2018, 07:01
Цитата Сообщение от R71MT Посмотреть сообщение
это примеры из его книжки "Отладка без исходных текстов" в приложении(С), там ещё есть много чего
R71MT,
спасибо посмотрю
1
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,300
Записей в блоге: 12
14.06.2018, 11:33
Цитата Сообщение от R71MT Посмотреть сообщение
нужно будет попробовать на амд разные варианты деления (когда остаток есть, и когда его нет), чтобы выловить фишку.
Кстати, да, про остаток я не подумал.
В общем, 4 варианта для теста

1.
Assembler
1
2
3
4
5
6
start: xor  ax,ax      ;
       sahf            ; clear flags. bit 1 of flags is always set
       mov  ax,5       ; into the divident
       xor  dx,dx      ; 
       mov  bx,2       ; into the divisor
       div  bl         ; perform div test
2.
Assembler
1
2
3
mov al,1
xor ah,ah
div al
3.
Assembler
1
2
3
4
mov al,5
mov cl,2
xor ah,ah
div cl
4.
Assembler
1
2
3
4
mov al,1
mov cl,2
xor ah,ah
div cl
1
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,300
Записей в блоге: 12
14.06.2018, 11:43
Вот наваял, прикрепляю вместе с EXE-шником
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
format  PE Console 4.0
entry   start
 
include 'win32axp.inc'
 
;-- CODE SECTION -------------------------------------------------------------------------------------------------------
 
.code
 
start:
 
                xor     ax,ax   ;
                sahf            ; clear flags. bit 1 of flags is always set
                mov     ax,5    ; into the divident
                xor     dx,dx   ; 
                mov     bx,2    ; into the divisor
                div     bl      ; perform div test
                mov     edx,Intel
                jz      @F
                mov     edx,AMD
        @@:     cinvoke printf, fmtStr, Test1, edx
 
                mov     al,1
                xor     ah,ah
                div     al
                mov     edx,Intel
                jz      @F
                mov     edx,AMD
        @@:     cinvoke printf, fmtStr, Test2, edx
 
                mov     al,5
                mov     cl,2
                xor     ah,ah
                div     cl
                mov     edx,Intel
                jz      @F
                mov     edx,AMD
        @@:     cinvoke printf, fmtStr, Test3, edx
 
                mov     al,1
                mov     cl,2
                xor     ah,ah
                div     cl
                mov     edx,Intel
                jz      @F
                mov     edx,AMD
        @@:     cinvoke printf, fmtStr, Test4, edx
 
                mov     al,0
                mov     cl,1
                xor     ah,ah
                div     cl
                mov     edx,Intel
                jz      @F
                mov     edx,AMD
        @@:     cinvoke printf, fmtStr, Test5, edx
 
                cinvoke getch
                invoke  ExitProcess, 0
 
;-- DATA SECTION -------------------------------------------------------------------------------------------------------
 
.data
fmtStr  db      '%s: %s',13,10,0
Intel   db      'Intel',0
AMD     db      'AMD',0
Test1   db      'KK 5/2',0
Test2   db      '1/1',0
Test3   db      '5/2',0
Test4   db      '1/2',0
Test5   db      '0/1',0
 
;-- IMPORT SECTION -----------------------------------------------------------------------------------------------------
 
section '.idata' import data readable
 
library kernel32, 'kernel32.dll',\
        msvcrt, 'msvcrt.dll'
 
        import_kernel32
 
import  msvcrt,\
        printf, 'printf',\
        getch, '_getch'
Вложения
Тип файла: zip CPUtest.zip (1.2 Кб, 4 просмотров)
2
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,300
Записей в блоге: 12
14.10.2018, 20:21
Я потестил прогу на паре AMD'шек: Sempron M100 и Athlon II X4.
Выдал "AMD" во всех тестах (что забавно). На всех протестированных Intel'ах выдал "Intel".
Получается, что AMD всегда выставляет ZF=1, а Intel ничего не трогает.
В связи с этим можно просто сделать что-то вроде
Assembler
1
2
3
4
  xor edx,edx
  div esp  ; esp always > 0
  jz .Intel
.AMD:
idiv работает так же.
Вложения
Тип файла: zip IntelOrAMD.zip (1,021 байт, 2 просмотров)
3
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,300
Записей в блоге: 12
21.02.2022, 21:49
Немного понекрофильствую...
Никто, кстати, не заметил опечатки в книге Криса.
Он пишет, что "On any div/idiv operation ZF flag will not be changed on Intel (and will never be set on NexGen) but will be set on other CPUs (including AMD)", хотя по факту флаг ZF очищается на AMD!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2022, 21:49
Помогаю со студенческими работами здесь

Программа для получения названия видеокарты не работает
Почему не работает мой проект в варианте. А этот же проект записанный через модуль работает без сбоев.

Регулярное выражение для получения названия из html-кода
Доброго времени суток, имеется такой код <div class="postertitle"><a href="*ссылка*">Название / Название(транслит)</a><div...

Написать функцию получения названия дня недели по его номеру
3)Написать функцию получения названия дня недели по его номеру. Буду премного благодарен если хоть немного поможете

Ошибка получения идентификатора процессора
Здравствуйте! На одном компьютере windows 10, x64 выдает исключение: Указанная служба не может быть запущена, поскольку она отключена...

Напишите запрос для получения списка предметов обучения, названия которых состоят из более одного слова
Напишите запрос для получения списка предметов обучения, названия которых состоят из более одного слова. Помогите пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru