Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 620
от 20.08.2003, 08:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 3966
Отправлено ответов: 11750
Активность: 296.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

vitya
Статус: Профессиональный
Общий рейтинг: 108.06
[Подробней >>]
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 126.55
URL: Методы оптимизации работы ПК
[Подробней >>]
[L2]Max
Статус: Доверительный
Общий рейтинг: 122.46
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 119.18
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.25
URL: Программирование
[Подробней >>]
Lynx
Статус: Профессиональный
Общий рейтинг: 117.58
Телефон: (8442) 750522
[Подробней >>]
 
Igoryk
Статус: Профессиональный
Общий рейтинг: 110.94
URL: CodeClimber.Com
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 149.24
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
dimka
Статус: Опытный
Общий рейтинг: 144
Телефон: (231)-4-43-85
[Подробней >>]
 
Eugene
Статус: Профессиональный
Общий рейтинг: 106.72
URL: мощный файловый архив
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 121
URL: мой сайт
[Подробней >>]
Hangatyr
Статус: Опытный
Общий рейтинг: 113.43
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 134.92
[Подробней >>]
Greys
Статус: Доверительный
Общий рейтинг: 137.28
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 111.71
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 3920. Приветствую, Эксперты. Подскажите, пожалуйста, как вывести на экран символ с помощью прямого обращен... (ответов: 9)
Вопрос № 3921. Здравствуйте уважаемые эксперты! Извините за оффтопик, но по-моему, здесь можно получить наиболее по... (ответов: 3)
Вопрос № 3922. Доброе время суток, Эксперты! У меня к вам вопрос по SoftIce. Как там посмотреть стек? по команде 'w... (ответов: 1)
Вопрос № 3923. Приветствую вас! Запутался я с этим ImageBase, теперь совсем непонятно, что это такое. Т.е. это адре... (ответов: 3)
Вопрос № 3924. Здравствуйте дорогие эксперты! Пожалуйста дайте ссылки на инфу по портам I/O различных интерфейсов П... (ответов: 3)
Вопрос № 3925. Как использовать MASM (ML v7.00.9466 + LINK v7.00.9466), чтобы компилировать com и exe-файлы? На MAS... (ответов: 3)
Вопрос № 3926. Здраствуйте, dimka! В ответе на вопрос № 3877 вы написали, что можете выслать книгу Зубкова. Если мо... (ответов: 1)
Вопрос № 3927. Доброе время суток уважаемые експерты! Как можно наиболие точно определить тип процессора, а также е... (ответов: 5)
Вопрос № 3928. Еще раз здраствуйте! Как работает DIV когда я делю на word? Как мне поделить двойное слово (file siz... (ответов: 7)
Вопрос № 3929. Слушай, хватит засорять рассылку своими тупыми ответами, зачем лезть если не хрена не знаешь?... (ответов: 1)
Вопрос № 3930. Уважаемые эксперты как зарегистрировать новый шрифт в системе просто копирование файлов шрифтов в к... (ответов: 3)
Вопрос № 3931. Здравствуйте уважаемые эксперты не подскажите где можно скачать WinXP DDK, FSDDK в инете кроме ссыло... (ответов: 3)

Вопросов: 12, ответов: 42


 Вопрос № 3920

Приветствую, Эксперты.
Подскажите, пожалуйста, как вывести на экран символ с помощью прямого обращения к видеопамяти? Вот программка с помощью которой я попытался вывести число 2 красным цветом в левом верхнем углу экрана. В чём моя ошибка?


Приложение:


Вопрос отправлен: 15.08.2003, 10:49
Отправитель: Roman

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Добрый день, Roman!
навскидку: замени B000 на B800... Может че и выйдет :)

Ответ отправлен: 15.08.2003, 10:52
Отправитель: vitya


Отвечает Tigran K. Kalaidjian

Доброе время суток, Roman!
Ошибки следующие:
1. Адрес видеобуфера не B000h, а B800h
2. Надо выводить сначала код символа, а потом его атрибут(помните о обратном порядке записи байтов в слове?)
3. Не выделено 100h байт под PSP (директивой ORG 100h)
В приложении работающий код Вашей программы (стек выкинул за ненадобностью).

Приложение:

Ответ отправлен: 15.08.2003, 12:19
Отправитель: Tigran K. Kalaidjian


Отвечает [L2]Max

Здравствуйте, Roman!
Бинарный файл -
org 100h
mov ax,0xb800
mov ds,ax
xor di,di
mov word ptr es:[di],1f32h ; синий символ 2
int 20h

и все


Ответ отправлен: 15.08.2003, 11:13
Отправитель: [L2]Max


Отвечает _vt

Добрый день, Roman!
Описываю ошибки по порядку:
1) первые три инструкции не имеют смысла, только стек портят - убери их вообще
2) ты пытаешься обратиться к видео памяти по адресу 0B000h:0000h, но там ее нет! Она располагается по адресу 0B800h:0000h
3) первым записывается символ, затем его цветовой атрибут, а у тебя наоборот...
4) так как ты создаешь программу в формате EXE, то завершаешь ее некорректно. Надо завершать так:

mov ax, 4c00h
int 21h

или выкинуть сегмент стека и создавать COM-файл.
5) Если работаешь под Win2000/XP, то в начале надо инициализировать 3 видеорежим:

mov ax, 0003h
int 10h

В противном случае ничего не увидишь, даже если все правильно будет...

---===*** Testing E-Man 1.5 ...***===---


Ответ отправлен: 15.08.2003, 21:22
Отправитель: _vt


Отвечает Bob Johnson

Приветствую Вас, Roman!
1. Сегмент видеопамяти находится по адресу 0B800h, а не 0B000h.
2. Если ты работаешь в windows XP, то поставь в начало программы mov ax, 3; int 10h, иначе ничего не увидишь.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 15.08.2003, 15:59
Отправитель: Bob Johnson


Отвечает Lynx

Доброе время суток, Roman!
------------------------------------------------
mov ax,0B800h
mov es,ax
xor di,di
mov byte ptr es:[di+1],4h
mov byte ptr es:[di],32h
------------------------------------------------
Вот так работает!!! ;)


Ответ отправлен: 15.08.2003, 17:20
Отправитель: Lynx


Отвечает Igoryk

Доброе время суток, Roman!
Замени mov ax,0B000h на mov ax,0B800h.
И еще совет по оптимизации:
Замени
mov byte ptr es:[di],4h
mov byte ptr es:[di+1],32h
на
mov word ptr es:[di],0432h

Ответ отправлен: 15.08.2003, 17:26
Отправитель: Igoryk


Отвечает Евгений Иванов

Доброе время суток, Roman!
Если память не изменяет (давно в ДОС не писал и вряд ли буду :-),
то сегмент 0B800h!!!
Сегмент B000 - это 7 видеорежим - он устаревший и там всего 2 цвета!
А так обычно 3 режим используется.
Да, насчёт push es, 0 - это оригинально, но лучше выходить
по стандарту - mov ax, 4Cxxh; int 21h;
Удачи!


Ответ отправлен: 16.08.2003, 01:07
Отправитель: Евгений Иванов


Отвечает dimka

Здравствуйте, Roman!
Ну гляди(для дос)


Приложение:

Ответ отправлен: 18.08.2003, 10:59
Отправитель: dimka


 Вопрос № 3921

Здравствуйте уважаемые эксперты!
Извините за оффтопик, но по-моему, здесь можно получить наиболее полный ответ.
Нужно сформировать почтовое сообщение в Outlook Express, при этом использую конструкцию mailto(см. в приложении)
Но нужно не только заполнить поля "От", "Кому", "Тема" и содержание письма, но и прицепить к письму 2 файла.
Изучил RFC 2368, но не нашёл там ссылок, как прицеплять к письму файлы через mailto.
Подскажите пожалуйста, как прицепить файлы.
Delphi 5


Приложение:


Вопрос отправлен: 15.08.2003, 15:04
Отправитель: Alexandr (balex@mail.spbnit.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Eugene

Добрый день, Alexandr!
Насколько мне известно, таким способом вложить файлы не удастся.

Ответ отправлен: 15.08.2003, 15:19
Отправитель: Eugene


Отвечает Евгений Иванов

Здравствуйте, Alexandr!
Используй The Bat! и его командную строку!
А так попробуй ключ attach,
может получится?... :-)


Ответ отправлен: 16.08.2003, 01:07
Отправитель: Евгений Иванов


Отвечает dimka

Здравствуйте, Alexandr!
bzzzzzzz???


Ответ отправлен: 18.08.2003, 11:01
Отправитель: dimka


 Вопрос № 3922

Доброе время суток, Эксперты!
У меня к вам вопрос по SoftIce. Как там посмотреть стек? по команде 'ws' появляется
какое-то непонятное окно с тремя значениями. А как увидеть нормальный стек (вроде того, что
в Dasm'е или Ollydbg? А то надоедает все время "dd esp" использовать.
TIA



Вопрос отправлен: 15.08.2003, 16:04
Отправитель: Dr.00py (stepipatov@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Приветствую Вас, Dr.00py!
спешу разочаровать но dd esp это вполне нормальный способ показа стека и вообще единственный в SI. А чем он тебе не нравиться? если влом все время набирать эту команду то привяжи к окну. Т.е. создай окно данных (благо, их там можно наклепать достаточно, аж 5), а потом командой dex привяжи к нему команду dd esp. Т.е. вот пример для нулевого окна: dex 0 dd esp. Теперь при активации окна сайса у тебя в нулевом окне всегда будет стек


Ответ отправлен: 15.08.2003, 16:20
Отправитель: Broken Sword


 Вопрос № 3923

Приветствую вас! Запутался я с этим ImageBase, теперь совсем непонятно, что это такое. Т.е. это адрес в памяти, с которого грузится образ, но... Прочитал, что секция .reloc нужна, если невозможно(какие причины?) загрузить образ с ImageBase из заголовка. Но если её нет? Запросто запускается несколько копий одного приложения, в котором нет секции .reloc. Куда они(копии) грузятся? Очевидно, что в разные места памяти. Как тогда загрузчик это делает, если нет секции .reloc? И, кстати, тут у вас часто встречал утверждение, что по сути секция .reloc и не нужна. Проясните, пожалуйста, эту ситуацию.



Вопрос отправлен: 15.08.2003, 19:47
Отправитель: Кодер

[Следующий вопрос >>] [Список вопросов]

Отвечает Hangatyr

Приветствую Вас, Кодер!
Дело в том, что для каждой новой задачи создаются свои таблицы преобразования, вследствии чего она (задача) выполняется в отдельном адресном пространстве, поэтому настройка адресов не требуется. Другое дело, например, драйверы - загрузить их по указанному адресу вряд ли удасться, поэтому настройка адресов необходима.

Ответ отправлен: 15.08.2003, 20:05
Отправитель: Hangatyr


Отвечает masquer

Приветствую Вас, Кодер!
Причины? Мало памяти и много процессов загружено. Если reloc-ов нет? Никаких копий - упадет с access violation. Для exe файлов она действительно практически не нужна - тяжело создать такую ситуацию, чтобы образ грузился по адресу, отличающемуся от ImageBase, а вот для dll она обязательна (если есть глобальные переменные), т.к. dll (почти) всегда грузится по другому адресу.

Ответ отправлен: 16.08.2003, 18:52
Отправитель: masquer


Отвечает Bob Johnson

Приветствую Вас, Кодер!
1. Секция reloc нужна действительно только в том случае, когда образ грузится не по адресу, указанному как ImageBase в заголовке. В другом случае она может и отсутствовать (например, UPX может ее удалять для еще большего уменьшения объема, занимаемого программой).
2. Адреса внутри одного процесса являются виртуальными и совсем не соответствуют адресам внутри другого процесса (да и не зависят от них). Таким образом любой (или все) процессы имеют в своем виртуальном распоряжении адрес
400000, например, куда и грузятся большинство программ. Вопрос "Для чего тогда вообще нужна релокация" можно не задавать - проблемы могут возникнуть, если данный адрес (ImageBase) в процессе уже занят чем-либо (например, DLL-ку грузим, а у нее в IB указан адрес, который уже занят другой DLL-кой). Для этого и нужна релокация. Материалы по теме (типа "See Also"): защищенный режим процессора: страничная адресация и механизм сегментации.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 15.08.2003, 22:29
Отправитель: Bob Johnson


 Вопрос № 3924

Здравствуйте дорогие эксперты!
Пожалуйста дайте ссылки на инфу по портам I/O различных интерфейсов ПК
и устройств.



Вопрос отправлен: 15.08.2003, 22:45
Отправитель: Radmir

[Следующий вопрос >>] [Список вопросов]

Отвечает Igoryk

Приветствую Вас, Radmir!
Посмотри здесь:
www.codeclimber.com/lowlevel/docs.html

Ответ отправлен: 16.08.2003, 12:27
Отправитель: Igoryk


Отвечает Tigran K. Kalaidjian

Добрый день, Radmir!
Если Вы не сталкивались ранее с программированием I/O-портов, то скачайте документ
http://kalaidjian.narod.ru/proekt.rar
Если же Вы имеете опыт в этом деле, то купите книгу:
Пей Ан "Сопряжение ПК с внешними устройствами"
Не пожалеете! На сегодняшний день это ИМХО лучшее руководство по теме.
Если и там не найдете то, что Вам нужно, то пишите на kalaidjian@pochtamt.ru - скорее всего смогу выслать нужную документацию.

Ответ отправлен: 15.08.2003, 23:06
Отправитель: Tigran K. Kalaidjian


Отвечает dimka

Добрый день, Radmir!
Зайди на www.emanual.ru


Ответ отправлен: 18.08.2003, 11:11
Отправитель: dimka


 Вопрос № 3925

Как использовать MASM (ML v7.00.9466 + LINK v7.00.9466), чтобы компилировать com и exe-файлы? На MASM v6.11 получается, а на этом ни в какую!



Вопрос отправлен: 15.08.2003, 23:09
Отправитель: Меир (meir@hotmail.kz)

[Следующий вопрос >>] [Список вопросов]

Отвечает Tigran K. Kalaidjian

Добрый день, Меир!
Запустите компилятор и линкер с ключом /?
и посмотрите используемые параметры.

Ответ отправлен: 16.08.2003, 17:46
Отправитель: Tigran K. Kalaidjian


Отвечает _vt

Здравствуйте, Меир!
Если ты имеешь ввиду под DOS, то ML.EXE справляться должен, а LINK.EXE используй старый...

---===*** Testing E-Man 1.5 ...***===---


Ответ отправлен: 16.08.2003, 02:26
Отправитель: _vt


Отвечает dimka

Приветствую Вас, Меир!
Используй ключ:
/?


Ответ отправлен: 18.08.2003, 11:16
Отправитель: dimka


 Вопрос № 3926

Здраствуйте, dimka!
В ответе на вопрос № 3877 вы написали, что можете выслать книгу Зубкова. Если можно вышлите ее и мне -
она мне очень нужна(gdayyy@rambler.ru). Зарание спасибо.



Вопрос отправлен: 16.08.2003, 00:48
Отправитель: gdayyy

[Следующий вопрос >>] [Список вопросов]

Отвечает dimka

Приветствую Вас, gdayyy!
Получай!!!!!


Ответ отправлен: 18.08.2003, 11:19
Отправитель: dimka


 Вопрос № 3927

Доброе время суток уважаемые експерты!
Как можно наиболие точно определить тип процессора, а
также его тактовою частоту?
Большое спасибо за ответы!



Вопрос отправлен: 16.08.2003, 01:19
Отправитель: Madman (yo-ho@km.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, Madman!
Я могу тебе подсказать, как определить достаточно точно тактовую частоту:

int one_milliard = 1000000;
int one_thousand = 1000;
{
LARGE_INTEGER frq;
LARGE_INTEGER cnt1;
LARGE_INTEGER cnt2;
LARGE_INTEGER tsc1;
LARGE_INTEGER tsc2;
QueryPerformanceFrequency (&frq);
QueryPerformanceCounter (&cnt1);
rdtsc (&tsc1);
Sleep (1000);
QueryPerformanceCounter (&cnt2);
rdtsc (&tsc2);
__asm
{
fild qword ptr [cnt2]
fild qword ptr [cnt1]
fsubp st(1), st
fild qword ptr [frq]
fdivp st(1), st
fild qword ptr [tsc2]
fild qword ptr [tsc1]
fsubp st(1), st
fdivrp st(1), st
fidiv [one_milliard]
fstp [cpufreq]
}
print_num (&cpufreq);
}

int __declspec (naked) __cdecl rdtsc
(LARGE_INTEGER *p)
{
__asm
{
mov ecx, [esp + 4]
rdtsc
mov [ecx], eax
mov [ecx + 4], edx
ret
}
}

void print_num (double *num)
{
int inum;
int inum1, inum2;
__asm
{
mov eax, [num]
fld qword ptr [eax]
fimul [one_thousand]
fistp [inum]
}
inum2 = inum/1000;
inum1 = inum - inum2*1000;
print ("%6i.%03i", inum2, inum1);
}

Только это для С++ с применением асма. Взято из программки RamSpd, которая (вместе с исходным текстом) лежит у меня на странице. Точность составляет десяток или единицы килогерц.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 16.08.2003, 15:48
Отправитель: Bob Johnson


Отвечает Greys

Здравствуйте, Madman!
Чтобы определить тип процессора,его модификацию, производителя, можно воспользоваться командой индификации процессора(CPUID). Ниже я вам прилагаю отрывок из книги Зубкова по пользованию этой команды(простите, что не своими словами, но времени у меня сейчас свободного мало):
CPUID сообщает информацию о производителе, типе и модификации процессора, о наличии и поддержке различных расширений. Команда CPUID поддерживается Intel, начиная с процессоров Intel 80486DX/SX/DX2 SL, UMC U5S, Cyrix M1, AMD 80486DX4. Чтобы проверить, поддерживает ли процессор эту команду, попробуйте установить флаг ID в 1 (бит 21 в регистре EFLAGS) — если это получается, значит, команда CPUID поддерживается.
Результат работы CPUID зависит от значения регистра ЕАХ. Если ЕАХ = 0, CPUID возвращает в ЕАХ максимальное значение, с которым ее можно вызывать (2 для Р6, 1 для Р5), а регистры EBX:ECX:EDX содержат 12-байтную строку — идентификатор производителя (табл. 8).

Таблица 8. Строки производителей в CPUID

Производитель Строка в ЕВХ:ЕСХ:ЕРХ
Intel GenuineIntel
UMC UMC UMC UMC
Cyrix CyrixInstead
AMD AuthenticAMD
NexGen NexGenDriven
Centaur Technology CentaurHalls

Например, для процессоров Intel регистр ЕВХ содержит «Genu» (756E6547h), ЕСХ содержит «ineI» (49656E69h), a EDX — «ntel» (6C65746Eh).
Если ЕАХ = 1, CPUID возвращает в ЕАХ информацию о версии процессора, а в EDX — информацию о поддерживаемых расширениях. Многие понятия в этом описании относятся к работе процессора в защищенном режиме и рассмотрены ниже.
Биты 3 – 0 ЕАХ — Модификация.
Биты 7 – 4 ЕАХ — Модель.
Биты 11 – 8 ЕАХ — Семейство (3 для 386, 4 для 486, 5 для Pentium, 6 для Pentium Pro).
Биты 13 – 12 ЕАХ — Тип (0 — OEM, 1 — Overdrive, 2 — Dual).
Биты 31 – 14 ЕАХ зарезервированы и равны нулю.
Бит 0 EDX — «FPU» Процессор содержит FPU и может выполнять весь набор команд 80387.
Бит 1 EDX — «VME» Процессор поддерживает усовершенствованный режим V86 (флаги VIF и VIP в EFLAGS, биты VME и PVI в CRO).
Бит 2 EDX — «DE» Процессор поддерживает точки останова по вводу/выводу, бит DE в CR0.
Бит 3 EDX — «PSE» Процессор поддерживает страницы до 4 Мб, бит PSE в CR4, модифицированные биты в элементах списков страниц (РDЕ) и таблиц страниц (РТЕ).
Бит 4 EDX — «TSC» Процессор поддерживает команду RDTSC и бит TSC в CR4.
Бит 5 EDX — «MSR» Процессор поддерживает команды RDMSR и WRMSR и машинно-специфичные регистры, совместимые с Pentium.
Бит 6 EDX — «РАЕ» Процессор поддерживает физические адреса больше 32 бит, дополнительный уровень в таблицах трансляции страниц, страницы по 2 Мб и бит РАЕ в CR4. Число бит для физических адресов зависит от модели процессора. Так, Pentium Pro поддерживает 36 бит.
Бит 6 EDX — «РТЕ» (только для Cyrix).
Бит 7 EDX — «МСЕ» Процессор поддерживает бит МСЕ в CR4.
Бит 8 EDX — «СХ8» Процессор поддерживает команду CMPXCHG8B.
Бит 9 EDX — «APIC» Процессор содержит встроенный контроллер прерываний (APIC), и он активирован и доступен.
Бит 9 EDX — «PGE» (только для AMD).
Бит 10 EDX зарезервирован.
Бит 11 EDX — «SEP» Процессор поддерживает быстрые системные вызовы, команды SYSENTER и SYSEXIT (Pentium II).
Бит 12 EDX — «MTRR» Процессор поддерживает машинно-специфичные регистры MTRR.
Бит 13 EDX — «PGE» Процессор поддерживает бит PGE в CR4 и глобальные флаги в PTDE и РТЕ, указывающие элементы TLB, которые принадлежат сразу нескольким задачам.
Бит 14 EDX — «МСА» Процессор поддерживает машинно-специфичный регистр MCG_CAP.
Бит 15 EDX — «CMOV» Процессор поддерживает команды CMOVcc и (если бит 0 EDX установлен) FCMOVcc (Pentium Pro).
Бит 16 EDX — «PAT» Процессор поддерживает таблицу атрибутов страниц.
Биты 17 – 22 зарезервированы.
Бит 23 EDX — «ММХ» Процессор поддерживает набор команд ММХ.
Бит 24 EDX — «FXSR» Процессор поддерживает команды быстрого чтения/записи (ММХ2).
Биты 31 – 25 EDX зарезервированы.
Если ЕАХ = 2, CPUID на процессорах семейства Р6 возвращает в регистрах ЕАХ, ЕВХ, ЕСХ и EDX информацию о кэшах и TLB. Самый младший байт ЕАХ (регистр AL) указывает, сколько раз надо вызвать CPUID с ЕАХ = 2, чтобы получить информацию обо всех кэшах (1 для Pentium Pro и Pentium II). Самый старший бит (бит 31) каждого регистра указывает, содержит ли этот регистр правильную информацию (бит 31 = 0) или он зарезервирован (бит 31 = 1). В первом случае регистр содержит информацию в 1-байтных дескрипторах со следующими значениями:
00h — Пустой дескриптор.
01h — TLB команд, 4-килобайтные страницы, 4-сторонняя ассоциативность, 32 элемента.
02h — TLB команд, 4-мегабайтные страницы, 4-сторонняя ассоциативность, 4 элемента.
03h — TLB данных, 4-килобайтные страницы, 4-сторонняя ассоциативность, 64 элемента.
04h — TLB данных, 4-мегабайтные страницы, 4-сторонняя ассоциативность, 8 элементов.
06h — Кэш команд, 8 Кб, 4-сторонняя ассоциативность, 32 байта в строке.
08h — Кэш команд, 16 Кб, 4-сторонняя ассоциативность, 32 байта в строке.
0Ah — Кэш данных, 8 Кб, 2-сторонняя ассоциативность, 32 байта в строке.
0Ch — Кэш данных, 16 Кб, 2-сторонняя ассоциативность, 32 байта в строке.
41h — Унифицированный кэш, 128 Кб, 4-сторонняя ассоциативность, 32 байта в строке.
42h — Унифицированный кэш, 256 Кб, 4-сторонняя ассоциативность, 32 байта в строке.
43h — Унифицированный кэш, 512 Кб, 4-сторонняя ассоциативность, 32 байта в строке.
44h — Унифицированный кэш, 1 Мб, 4-сторонняя ассоциативность, 32 байта в строке.
Совместимые с Intel процессоры AMD и Cyrix поддерживают вызов «расширенных функций» CPUID со значениями ЕАХ, в которых самый старший бит всегда установлен в 1.
ЕАХ = 80000000h: Возвращает в ЕАХ максимальный номер расширенной функции CPUID, поддерживаемой данным процессором.
ЕАХ = 80000001h: Возвращает в ЕАХ 051Xh для AMD K5 (X — номер модификации) или 061Хh для AMD К6. В EDX эта функция возвращает информацию о поддерживаемых расширениях (указаны только флаги, отличающиеся от CPUID с ЕАХ = 1).
Бит 5 EDX «MSR» — Процессор поддерживает машинно-специфичные регистры, совместимые с К5.
Бит 10 EDX — Процессор поддерживает команды SYSCALL и SYSRET.
Бит 16 EDX — Процессор поддерживает команды FCMOVcc.
Бит 24 EDX — Процессор поддерживает ММХ с расширениями от Cyrix.
Бит 25 EDX — Процессор поддерживает набор команд AMD 3D.
ЕАХ = 80000002h, 80000003h и 80000004h — последовательный вызов CPUID с этими значениями в ЕАХ возвращает в EAX:EBX:ECX:EDX последовательно четыре 16-байтные части строки — имени процессора. Например: «AMD-K5(tm) Processor».
ЕАХ = 80000005h — Команда возвращает информацию о TLB в регистре ЕВХ (старшее слово — TLB данных, младшее слово — TLB команд, старший байт — ассоциативность, младший байт — число элементов), о кэше данных в регистре ЕСХ и о кэше команд в регистре EDX (биты 31 – 24 — размер в килобайтах, биты 23 – 16 — ассоциативность, биты 15 – 8 — число линий на тэг, биты 7 – 0 — число байт на линию.



Ответ отправлен: 19.08.2003, 19:48
Отправитель: Greys


Отвечает Евгений Иванов

Здравствуйте, Madman!


  • 1. CPUID

  • 2. RDTSC и по таймеру замеряешь...




Ответ отправлен: 16.08.2003, 13:01
Отправитель: Евгений Иванов


Отвечает Hangatyr

Доброе время суток, Madman!
Тип процессора можно определить с помощью CPUID, а тактовую частоту - с помощью RDTSC.

Ответ отправлен: 16.08.2003, 06:28
Отправитель: Hangatyr


Отвечает dimka

Доброе время суток, Madman!
В TASM 5.0-> examples->...


Ответ отправлен: 18.08.2003, 11:25
Отправитель: dimka


 Вопрос № 3928

Еще раз здраствуйте!
Как работает DIV когда я делю на word?
Как мне поделить двойное слово (file size) на 510?
File size я записываю через Паскаль в массив через move, а
затем записиваю это в файл



Вопрос отправлен: 16.08.2003, 01:23
Отправитель: Madman (yo-ho@km.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Tigran K. Kalaidjian

Доброе время суток, Madman!
DIV/IDIV источник
делит АХ на источник , если источник - байт,
DX:AX на источник , если источник - слово, и
EDX:EAX на источник , если источник - двойное слово. Значение хранится в AL, AX или EAХ. Источником может быть регистр или значение памяти
Можно также использовать комады fdiv/fidiv FPU

Ответ отправлен: 16.08.2003, 12:29
Отправитель: Tigran K. Kalaidjian


Отвечает Евгений Иванов

Приветствую Вас, Madman!


  • 1. DX:AX / word
    Результат в AX, остаток в DX.

  • 2.

    • FileSize dd ?
      mov ax, [FileSize]
      mov dx, [FileSize+2]
      mov bx, 510
      div bx




    Ответ отправлен: 16.08.2003, 13:03
    Отправитель: Евгений Иванов


    Отвечает [L2]Max

    Доброе время суток, Madman!
    если делитель размером в байт, то делимое должно быть расположено в регистре ax. После операции частное помещается в al, а остаток — в ah;
    если делитель размером в слово, то делимое должно быть расположено в паре регистров dx:ax, причем младшая часть делимого находится в ax. После операции частное помещается в ax, а остаток — в dx;
    если делитель размером в двойное слово, то делимое должно быть расположено в паре регистров edx:eax, причем младшая часть делимого находится в eax. После операции частное помещается в eax, а остаток — в edx.


    Ответ отправлен: 16.08.2003, 19:05
    Отправитель: [L2]Max


    Отвечает Bob Johnson

    Здравствуйте, Madman!
    1. Делит dx:ax на заданный word. Частное помещается в ax, остаток - в dx.
    2. Я бы использовал
    32-разрядные регистры:
    mov eax, [file_size]
    mov ecx, 510
    div ecx
    С 16-ти разрядными надо делить за два раза - вначале делишь старшие 16 разрядов, затем - младшие + остаток от старших.

    * EMan1.5: ---===*** The game we play ***===---


    Ответ отправлен: 16.08.2003, 15:32
    Отправитель: Bob Johnson


    Отвечает Hangatyr

    Приветствую Вас, Madman!
    Помещаешь делимое в dx:ax и делишь. Например так:
    mov ax, filesize
    mov bx, 510
    cwd
    div bx
    Остаток - в dx, частное - в ax. Причем тут паскаль-то?


    Ответ отправлен: 16.08.2003, 05:53
    Отправитель: Hangatyr


    Отвечает dimka

    Здравствуйте, Madman!
    dx:ax


    Ответ отправлен: 18.08.2003, 11:27
    Отправитель: dimka


    Отвечает Greys

    Добрый день, Madman!
    Команда DIV производит целочисленное деление без знака AL, АХ или ЕАХ (в зависимости от размера источника) на источник (регистр или переменная) и помещает результат в AL, АХ или ЕАХ, а остаток — в АН, DX или EDX соответственно.
    >Как работает DIV когда я делю на word?
    >Как мне поделить двойное слово (file size) на 510?
    Смотри выше!


    Ответ отправлен: 19.08.2003, 19:59
    Отправитель: Greys


     Вопрос № 3929

    Слушай, хватит засорять рассылку своими тупыми ответами, зачем лезть если не хрена не знаешь?



    Вопрос отправлен: 16.08.2003, 01:25
    Отправитель: AleXetY (alexety@yandex.ru)

    [Следующий вопрос >>] [Список вопросов]

    Отвечает dimka

    Здравствуйте, AleXetY!
    Ну и дура!!!!


    Ответ отправлен: 18.08.2003, 11:28
    Отправитель: dimka


     Вопрос № 3930

    Уважаемые эксперты как зарегистрировать новый шрифт в системе просто копирование
    файлов шрифтов в каталог FONTS не возымел результата и еще один вопрос можно ли
    узнать [handel] процесса если знаешь только имя этого файла это нужно
    для принудительной выгрузки одной программы
    заранее благодарен



    Вопрос отправлен: 16.08.2003, 08:12
    Отправитель: Vintic

    [Следующий вопрос >>] [Список вопросов]

    Отвечает Tigran K. Kalaidjian

    Доброе время суток, Vintic!
    Курите MSDN, батенька (с).
    The AddFontResource function adds the font resource from the specified file to the Windows font table. The font can subsequently be used for text output by any Windows-based application.
    int AddFontResource(
    LPCTSTR lpszFilename // pointer to font-resource filename
    );

    Parameters
    lpszFilename
    Pointer to a null-terminated character string that contains a valid font file filename. The filename may specify either a .FON font resource file, a .FNT raw bitmap font file, a .TTF raw TrueType file, or a .FOT TrueType resource file.

    Ответ отправлен: 16.08.2003, 20:41
    Отправитель: Tigran K. Kalaidjian


    Отвечает Bob Johnson

    Здравствуйте, Vintic!
    1. Запускаешь проводник, заходишь в каталог Windows\Fonts, после этого в меню "Файл" появляется пункт "Установить шрифт..." - вот его и используешь.
    2. Нужно создать снапшот процессов (
    CreateToolhelp32Snapshot), после чего просмотреть их все и сравнить имя каждого с заданным.

    * EMan1.5: ---===*** The game we play ***===---


    Ответ отправлен: 16.08.2003, 15:33
    Отправитель: Bob Johnson


    Отвечает baldr

    Приветствую Вас, Vintic!
    Копировать файл надо с помощью проводника. Достаточно просто скопировать, а установится он сам.

    Ответ отправлен: 18.08.2003, 11:08
    Отправитель: baldr


     Вопрос № 3931

    Здравствуйте уважаемые эксперты не подскажите где можно скачать WinXP DDK, FSDDK
    в инете кроме ссылок ничего не нашел может плохо искал да и не могли бы подкинуть
    сылок на ресурсы по системному программированию и разработке драйверов можно и
    на буржуйском.
    Да и еще где можно найди исходники вирусов баттранс сламер нимбда и магистр
    заранее благодарен



    Вопрос отправлен: 16.08.2003, 08:15
    Отправитель: _nomad

    [Следующий вопрос >>] [Список вопросов]

    Отвечает Bob Johnson

    Приветствую Вас, _nomad!
    1. Рабочая ссылка на WinXP DDK лежит у меня на странице (http://bobjohnson.nm.ru) (раздел "Файлы").
    2. Там же есть ссылка на ресурс по низкоуровневому программированию.

    * EMan1.5: ---===*** The game we play ***===---


    Ответ отправлен: 16.08.2003, 15:33
    Отправитель: Bob Johnson


    Отвечает Евгений Иванов

    Здорово, _nomad!

    http://windriver.ssarang.net/pds/DDK_XP.ISO



    Ответ отправлен: 16.08.2003, 13:04
    Отправитель: Евгений Иванов


    Отвечает Tigran K. Kalaidjian

    Добрый день, _nomad!
    Тут один наш посетитель обещал - sergeysy@nm.ru
    Инициатива наказуема =)
    Также см. http://windriver.ssarang.net/pds/DDK_XP.ISO

    Ответ отправлен: 16.08.2003, 17:34
    Отправитель: Tigran K. Kalaidjian



    Форма отправки вопроса

    Внимание!
    Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

    (C) 2002-2003 Команда RusFAQ.ru.

     Персональные данные

    Ваше имя:

    Ваш e-mail:

    Опубликовать мой e-mail в рассылке


     Вопрос и дополнение

    Ваш вопрос:


    Приложение (если необходимо):


    Получить ответов:


     Выбор рассылки

    Программисту
    Assembler (39)
    C / C++ (30)
    Perl (3)
    Builder / Delphi (21)
    Pascal (27)
    Basic / VBA (12)
    Java / JavaScript (10)
    PHP (9)
    Криптография (10)
    WinAPI (18)
    Пользователю
    Windows 95/98/Me (47)
    Windows NT/2000/XP (57)
    "Железо" (44)
    Поиск информации (26)
    Администратору
    Windows NT/2000/XP (28)
    Linux / Unix (11)
    Юристу
    Гражданское право (11)
    Семейное право (7)
    Трудовое право (8)
    КоАП (6)

    Отправить вопрос всем экспертам выбранной рассылки.




    Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
    Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
    Профессиональная WEB-Студия B.I.T.


    Яндекс цитирования
    © 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


    http://subscribe.ru/
    E-mail: ask@subscribe.ru
    Отписаться
    Убрать рекламу

    В избранное