![]() |
|
![]() ![]() ![]() |
|
NECsoft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 24.6.2007 Репутация: нет Всего: нет |
здравствуйте...
как на ассемблере сделать перемещение точки по экрану с заданным интервалом времени??? пересмотрел кучу статей и примеров, в первых описание давалось очень расплывчато, а примеры попадались весьма не простого характера =) очень прошу показать простой пример программы с пояснением ключивых моментов... _______________ заранее спасибо |
|||
|
||||
AndNot |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 28.2.2008 Репутация: нет Всего: нет |
Вот, посмотри в аттаче. Пример простой, разберешься. Принцип работы следующий. Вначале перенастраиваем таймер на нужную частоту, вызывая SetClockRate, которая задает таймеру новый делитель частоты. Т.е. если делитель равен 7FFFh, то таймер будет генерировать прерывания с частотой 1193180/7FFFh = 36.4 Герц. Можешь поэксперементировать, сам делитель прописан в константе TICK_DIVIDER. Естественно нужно установить свой обработчик прерываний таймера. В нем мы просто инкрементируем некую переменную, по значению которой основная программа и узнает, когда можно начинать отрисовку нового кадра. В програмке этой переменной является FrameReady. В общем я коментов поставил, разберешся. Если что непонятно будет - спрашивай.
Присоединённый файл ( Кол-во скачиваний: 14 ) ![]() |
|||
|
||||
NECsoft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 24.6.2007 Репутация: нет Всего: нет |
спасибо за ссылочку, хотя конечно придеться с ней повозиться =)))) (с ассемблером только начинаю общаться)
пока разбирался с кодом попался мне на глаза один очень полезный примерчик, единственно чего здесь не хватает, это работы с таймером, тогда в идеале бы получилась моя ситуация =))))
|
|||
|
||||
NECsoft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 24.6.2007 Репутация: нет Всего: нет |
добрый день...
на данный момент реализовал такой код, передвижение точки из края в край, за определенный промежуток времени =))) меняя к примеру mov cx,100 в delay proc можно добиться различных результатов... но рассуждая дальше я столкнулся с новыми проблемами: планируеться при нажатии клавиши включать таймер, в это время картинка, состоящая где то из 60 пикселей, начинает плавное движение =)))) - как в таком случае (во время движения картинки) получить код клавиши от клавиатуры, так что бы из за прерывания не стопорился таймер =((( - что касаеться графики то, дело в том что как я понял можно рисовать в асме двумя путями: 1) mov ah,0ch ;вывод точки mov al,14 ;цвет пикселя в данном случае легко работать с ОДНИМ пикселем, передвигать его используя регистры CX,DX... но как быть в случае если я хочу передвигать картинку состоящую к примеру из 20 точек ??? а в последствии искать с ней пересечения, те она должна строиться из какой то одной переменной... 2) move byte ptr es:bx,(номер цвета пикселя) в данном случае перемещение точки представляет собой сплошной гемор, особенно что касается движения по вертикали =((( зато вот картинку любую можно слепить за пару минут... как быть в такой ситуации ???
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |