Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2013, 21:05   #1
qwe1qwe2qwe3
Пользователь
 
Регистрация: 16.05.2012
Сообщений: 10
По умолчанию Вывести на экран сообщение

Сам я в программировании не силен, подскажите пожалуйста. У меня задание: Вывести на дисплей сообщение о поддержке процессором усовершенствованной технологии управления электропитанием (например, "Процессор поддерживает технологию ACPI", "Процессор не поддерживает технологию ACPI".
Полазил в интернете нашел похожую программу, где выводиться сообщение о поддержке процессором команды 3DNow!
Код:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
.data
MsgBoxText1 DB "***********************************************",13,10    
		DB "*           *",13,10
		DB "***********************************************",13,10,0
MsgBoxCaption db "Проверка поддержки  расширения архитектуры x86 CPUID и персонально для AMD - 3DNow!",0
MsgBoxText2 db "CPUID поддерживается!  И далее...",0
MsgBoxText3 db "CPUID НЕ поддерживается! И далее...",0
MsgBoxText4 db "Команда 3DNow! Поддерживается!",0
MsgBoxText5 db "Команда 3DNow! НЕ ПОДДЕРЖИВАЕТСЯ",0
.code
.586
start:
 invoke MessageBox, NULL, addr MsgBoxText1, addr MsgBoxCaption, MB_OK
	 pushfd           ; размещение регистра EFLAGS в стеке
	 pop eax          ; извлечение значения EFLAGS в EAX
	 mov ebx, eax     ; сохранение значения в EBX
	 xor eax, 200000h ; изменение 21-го бита
	 push eax         ; размещение нового значения в стеке
	 popfd            ; сохранение нового значения в EFLAGS
	 pushfd           ; снова размещение EFLAGS в стеке
	 pop eax          ; значение EFLAGS теперь в EAX
	 xor eax, ebx     ; проверка 21-го бита
	 je no_cpuid      ; если он не изменился, то CPUID не поддерживается
 invoke MessageBox, NULL, addr MsgBoxText2, addr MsgBoxCaption, MB_OK
	 mov eax,80000001h    ; установка входного значения EAX=8000_0001h
	 CPUID                ; выполнение расширенной функции
	 test edx,80000000h   ; проверка 31-го бита
	 jz No_3DNow       ; переход, если 3DNow! не поддерживается
 invoke MessageBox, NULL, addr MsgBoxText4, addr MsgBoxCaption, MB_OK
			invoke ExitProcess, NULL
no_cpuid:
 invoke MessageBox, NULL, addr MsgBoxText3, addr MsgBoxCaption, MB_OK
No_3DNow: 
 invoke MessageBox, NULL, addr MsgBoxText5, addr MsgBoxCaption, MB_OK
			invoke ExitProcess, NULL
end start
Подскажите, может можно как то переделать ее под мое задание, поменять что ни будь?

Последний раз редактировалось Stilet; 08.04.2013 в 21:17.
qwe1qwe2qwe3 вне форума Ответить с цитированием
Старый 09.04.2013, 07:41   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Собственно, поменять нужно только число, подаваемое на вход команды CPUID и маску на выходе.
Подробности нужно смотреть в справочнике команд. Таковые есть на сайтах производителей процессоров - Intel и AMD.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести сообщение Aleksandr Общие вопросы Delphi 3 29.03.2013 09:42
проверить является четным числом длина введенной пользователем строки и вывести сообщение на экран (оплачу пополнением счета) Pomogi Фриланс 2 14.01.2013 17:25
Вывести любое сообщение yeaP Общие вопросы C/C++ 4 26.03.2012 14:27
Вывести на экран сообщение JeyKip Win Api 1 02.04.2010 21:10
Как вывести сообщение... Busine2009 Microsoft Office Word 3 09.06.2009 22:08