0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 14
|
||||||
1 | ||||||
Определить наличие мат.сопроцессора у ПК (Ревизия системных ресурсов)15.02.2014, 15:45. Показов 3159. Ответов 16
Метки нет Все метки)
(
Доброго времени суток, уважаемые форумчане! Мне нужно понять, как определить наличие мат. сопороцессора у ПК.
Я разобрался с тем, какой тип моего ПК. Вот программа:
Далее по учебнику Джордейна вычитал: " Заранее спасибо! С ув.Андрей
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
15.02.2014, 15:45 | |
Ответы с готовыми решениями:
16
Определить наличие математического сопроцессора в реестре Определить наличие математического сопроцессора (с использованием cpuid) Недостаточно системных ресурсов Недостаточно системных ресурсов |
Модератор
![]() ![]() |
|
15.02.2014, 21:51 | 2 |
![]() Решение
memw[0040:0010] and $2
или mem[0040:0010] and $2 поскольку на платформах Intel младший байт лежит перед старшим. Биты 14-15 -- это 2 старших бита в 2-байтном слове. Достаточно сдвинуть слово вправо на 14 бит: memw[0040:0010] shr 14 либо старший байт на 6 бит: mem[0040:0011] shr 6 Если почему-то компилятор всегда при сдвиге вправо тиражирует знаковый бит, можно подстраховаться так: (memw[0040:0010] shr 14) and $3 (mem[0040:0011] shr 6) and $3 Добавлено через 8 минут Например: Код
номер: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 знач.: 1 0 . . . . . . . . . . . . 1 .
1
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
|
15.02.2014, 23:52 | 3 |
Не обязательно сдвигать, есть еще логические операции and
1
|
Модератор
![]() ![]() |
|
15.02.2014, 23:56 | 4 |
Уверены? В 2-х битах (14-15) кодируется число 0, 1, 2 или 3. Если взять (memw[0040:0010] and $C000), то полученное число всё равно придётся сдвинуть или поделить для получения одного из чисел из набора 0-3.
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
||||||
16.02.2014, 00:15 | 5 | |||||
Да не важно на каком месте находятся биты.
Проверка на бит может выглядеть так:
Только сейчас заметил - ты уже этот вариант привел:
1
|
Модератор
![]() ![]() |
||||||
16.02.2014, 11:16 | 6 | |||||
Jin_Hunt,
Исправляюсь. У Джордейна Введение, если точнее -- Соглашения о числах, принятые в этой книге, гласит: APALoff, Хорошо.
Напишите такое же решение для 5 старших бит, снова сравните количество написанного (32 числа от 0 до 31) с (memw[$40:$10] shr 11) and $8F). Для числа из 15 старших бит ваш вариант потребует 32768 строчек ![]()
1
|
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 14
|
|
16.02.2014, 12:15 [ТС] | 7 |
0
|
Модератор
![]() ![]() |
|
16.02.2014, 12:45 | 8 |
Если читать буквально: биты 14-15 -- число принтеров, то речь о двубитовом числе. Возможные варианты:
00 -- 0 01 -- 1 10 -- 2 11 -- 3 См. также http://webpages.charter.net/da... p/0059.HTM
1
|
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 14
|
|
16.02.2014, 12:50 [ТС] | 9 |
Спасибо большое за лаконичные ответы!
Я так понимаю, что для 15 бита будет точно такая же запись только измениться shr 14 на shr 15? верно?
0
|
Модератор
![]() ![]() |
|
16.02.2014, 13:02 | 10 |
Jin_Hunt, неправильно понимаете.
Вам не нужны биты по отдельности в случае количества принтеров. Вам нужно 2-битное число, образованное из битов 14-15 2-байтного слова по адресу $40:$10. Код
10...... ........ - исходное значение ........ ......10 - после сдвига вправо на 14 00000000 00000011 - маска $3 00000000 00000010 - после применения маски, получили искомое число 2
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
|
16.02.2014, 13:03 | 11 |
bormant, изначальный вопрос был:
Я показал один из способов. Строчек чего, кода? Что это за бред? Или у нас отменили циклы?
0
|
Модератор
![]() ![]() |
|
16.02.2014, 13:08 | 12 |
Проверка отдельных битов проста:
memw[$40:$10] and (1 shl 15) <> 0 -- 15-й бит, считая справа с 0 memw[$40:$10] and (1 shl 14) <> 0 -- 14-й бит, считая справа с 0 ... Добавлено через 2 минуты APALoff, варианта с циклом от вас не было. Тем не менее, использование суррогатов вместо битовой арифметики сродни почесыванию левого уха пяткой правой ноги. А изначальный вопрос был в определении количества принтеров с вариантом неоптимального решения вместо выделения битового поля.
0
|
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 14
|
|
16.02.2014, 13:23 [ТС] | 13 |
Все понял до 2ой строчки.Вы можете пояснить, суть маски 3? Я, читая техническую литературу, не как не могу понять ее назначение.
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
|
16.02.2014, 13:23 | 14 |
bormant, у Вас видимо где то что-то очень болит... я не против Вашего варианта - я показал просто еще один в ответ на вопрос "как определить состояние бита" - и Ваши "нападки" здесь ни к чему.
0
|
Модератор
![]() ![]() |
|
16.02.2014, 14:49 | 15 |
Маска 3 -- это последние 2 бита, которые и нужны. Аналитический получается просто: (1 shl 2)-1, либо просто выписать нужные биты в двоичном представлении и перевести в 16-ричный или 10-ричный вид.
Конкретно в этом примере это действие лишнее, уже писал выше, только для подстраховки, поскольку при сдвиге вправо беззнакового числа (word), крайний левый (знаковый) бит не должен распространяться вправо. Рассмотрим другой случай, где такая маска нужна. Допустим нужно получить число, записанное в 2-5 битах байта Код
..xxxx.. - x -- нужные биты ....xxxx - после shr 2 00001111 - маска, $f=15=1 shl 4 - 1 0000xxxx - после "and маска" все биты числа, соответствующие 0 в маске, тоже будут 0
0
|
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 14
|
||||||||||||||||
16.02.2014, 15:10 [ТС] | 16 | |||||||||||||||
По полученным данным пробовал реализовать программу:
Если же проверяю именно бит -
Не могу понять, почему в первом случае выдает не двоичное число а набор чисел. Если же буду использовать маску $2, то будет писать - 2. С принтерами разобрался - если писать обоими случаями везде будет число 11:=3. Прикладываю программу:
0
|
Модератор
![]() ![]() |
||||||
16.02.2014, 18:00 | 17 | |||||
1
|
16.02.2014, 18:00 | |
Помогаю со студенческими работами здесь
17
Мониторинг системных ресурсов С++ Нехватка системных ресурсов Распределение системных ресурсов вручную
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |