Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||