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

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 569
от 10.10.2006, 23:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 349, Экспертов: 33
В номере:Вопросов: 2, Ответов: 9


Вопрос № 57811: В меня такая проблема я читаю книгу (П.НОРТОН ПРОГРАММНО-АППАРАТНАЯ ОРГАНИЗАЦИЯ КОМПЬЮТЕРА IBM PC 1984). Так эта книга очень устарела. Посоветуйте кто может и знает книгу по свежие. Я сам учу ассемблер....
Вопрос № 57832: Здравствуйте ! Как можно узнать и вывести на экран время выполнения участка программы от 1 до 2 ?...

Вопрос № 57.811
В меня такая проблема я читаю книгу (П.НОРТОН ПРОГРАММНО-АППАРАТНАЯ ОРГАНИЗАЦИЯ КОМПЬЮТЕРА IBM PC 1984). Так эта книга очень устарела. Посоветуйте кто может и знает книгу по свежие. Я сам учу ассемблер.
Отправлен: 05.10.2006, 15:53
Вопрос задал: Linrofl (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: mix_mix
Здравствуйте, Linrofl!
Рекомендую "Аппаратные средства IBM PC" Михаила Гука 2003г.
Книжка очень полезная и занимательная, в общем рекомендую.
Ответ отправил: mix_mix (статус: 8-ой класс)
Ответ отправлен: 05.10.2006, 17:50

Отвечает: Олег Владимирович
Здравствуйте, Linrofl!

Сам изучал асму по книге "Микропроцессоры Intel: архитектура, программирование, интерфейсы." Выпуск 2005г.

Оч. хорошее описание асмы, рассказывается также об аппаратных особенностях процессоров, о периферийных устройствах.

Удачи!
---------
Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: 4-ый класс)
Ответ отправлен: 05.10.2006, 18:39

Отвечает: Николай Орлов
Здравствуйте, Linrofl!
Для ДОС могу посоветовать рассылку уважаемого Калашникова(Kalashnikoff.ru), книгу Юрова -Ассемблер. Для win32
wasm.ru - рекоммендую, довольно много информации.
А так же Зубков Ассемблер для DOS,WINDOWS,UNIX. Объяснение не ахти(на мой взляд), но можно использовать как
справочник для ДОС.
С уважением,ENS.

---------
Если нет выхода ищу вход.
Ответ отправил: Николай Орлов (статус: 5-ый класс)
Ответ отправлен: 05.10.2006, 20:02

Отвечает: Луковкин Николай Иванович
Здравствуйте, Linrofl!
Советую Вам (если решили изучать Ассемблер) преобрести очень хороший самоучитель А.Крупник "Ассемблер", в которой автор подробно учит как писать программы(особенно в среде Windows), с последующим исследованием их в отладчике (0llyDbg,AFD Pro)!В этой книге автор подробно объясняет, как необходимо установить компилятор MASM, с последующей настройкой, для того чтобы он мог функционировать на Вашем ПК!
Заказать книгу через почту можете на сайте ozon.ru
---------
Главным критерием эффективности того или иного пути может служить лишь то, достиг или нет крекер конечного результата!!!
Ответ отправил: Луковкин Николай Иванович (статус: 2-ой класс)
Ответ отправлен: 05.10.2006, 23:11


Вопрос № 57.832
Здравствуйте ! Как можно узнать и вывести на экран время выполнения участка программы от 1 до 2 ?

Приложение:

Отправлен: 05.10.2006, 20:22
Вопрос задал: Whiteman (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Вiктор
Здравствуйте, Whiteman!
Узнайте время прохождения точки 1 и время прохождения точки 2, и найдите разницу.
например, для виндовс (с использованием GetTickCount):
1:
call GetTickCount
mov time1, eax
...
2: call GetTickCount
sub eax, time1
mov time1,eax
Теперь в еах должно быть время выполнения участка между (1) и (2) в милисекундах.
(это конечно если я ничего не напутал)
Но это не подходит для очень коротких участков, т.к. насколько я знаю, GetTickCount не слишком точная функция, она выдаёт время рывками.

Для ДОС можно использовать досовские команды получения времени или относительного времени (я не помню их). Но сама идея та же: запоминаем момент времени при прохождении точки 1, затем вычетаем это значение из значения времени в момент прохождения точки 2.
---------
можно ли считать баги двигателем прогресса, если учесть, что они заставляют улучшать программы?
Ответ отправил: Вiктор (статус: 6-ой класс)
Ответ отправлен: 05.10.2006, 21:16

Отвечает: Wild_one
Здравствуйте, Whiteman!
Я бы не советовал использовать GetTickCount. Дело в том, что винда - многозадачная ОС и наш процесс может быть прерван. Лучше использовать процедуры:

BOOL GetThreadTimes( HANDLE hThread, PFILETIME pftCreationTime, PFILETIMt pftExitTime, PFILETIME pftKernelTime, PFIIFTIME pftUserTime);

BOOL GetProcessTimes( HANDLE hProcess, PFILETIHE pftCreationTime, PFILETIME pftExitTime, PFILETIME pftKernelTime, PFILETIME pftUserTime);
GetThreadTimes не годится для высокоточного измерения временных интервалов — для этого в Windows предусмотрено двe специальные функции:

BOOL QueryPerformanceFrequency(LARGE_INTEGER* pliFrequency);
BOOL QueryPerformanceCounler(LARGE_INTEGER* pliCount);
Подробнее у Джеффри Рихтера
"Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows"
Ответ отправил: Wild_one (статус: 5-ый класс)
Ответ отправлен: 05.10.2006, 23:03

Отвечает: Jekyll
Здравствуйте, Whiteman!

самый простой способ поставить перед 1 timeGetTime и после 2, разницу выводить.
Ответ отправил: Jekyll (статус: 2-ой класс)
Ответ отправлен: 06.10.2006, 00:07

Отвечает: ADSota
Здравствуйте, Whiteman!

1:
db 0fh,31h ;rdtsc - получить число тактов в edx:eax
push edx
push eax
...
2:
db 0fh,31h ;rdtsc - получить число тактов в edx:eax
pop ebx
sub eax,ebx
pop ebx
sbb edx,ebx
mov ebx,FREQ;поделить на частоту процессора
div ebx;в EAX - время в секундах

---------
Открыть глаза навстречу солнцу
Ответ отправил: ADSota (статус: Специалист)
Ответ отправлен: 06.10.2006, 08:50

Отвечает: Николай Орлов
Здравствуйте, Whiteman!
Можно посчитать количество тактов(а зная частоту процессора узнать время,
если частота процессора 1Mhz, то в секунду он выполнит 1миллион тактов).
Об этом очень подробно написано у Агнера Фога "Оптимизация для процессоров семейства Pentium: 30. Тестирование скорости ".
Только потом следует вставить процедуру вывода десятичных чисел, но это уже совсем другая мстория.
С уважением,ENS.


---------
Если нет выхода ищу вход.
Ответ отправил: Николай Орлов (статус: 5-ый класс)
Ответ отправлен: 06.10.2006, 20:00


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное