![]() |
Часики [ASM]
Народ, что-то мне пришла в голову бредовая идея.. сделать простейшие часики на asm'е... Написать самой. для практики.. а то как собака - вроде и понимаешь, а сделать ничего не можешь. надо это исправлять. погуглила.. нашла для процессора .486p - понятно, что это не то... Можно конечно переделать.. но я не вникала особо в архитектуру. Точнее не настолько, чтобы самой грамотно сделать. Так что напортачу 100% Может кто-нибудь обьяснить по какому вообще ПРИНЦИПУ все это строится? всмсыле не сам код, а порядок и по какой вообще логике идет все это. а то сижу тут, часа 3 голову ломаю..
Просто думаю, что код и сама смогу составить.. А вот ЧТО ИМЕННО там надо делать, можно поподробней плз? А тупо копировать код не хотелось бы. Важен сам принцип.. Кто сможет помочь? ПС: сначала дельные мысли, потом флудите и стебитесь сколько хотите.. Мне пофиг.. ППС: хотя бы в кодинге не оффтопьте.. как людей прошу.. |
самый простой вариант получать время винапи функцией GetLocalTime(), тебе понадобится структура SYSTEMTIME(переменные wHour, wMinute, wSecond).
Код:
SYSTEMTIME sm; |
хмм. как я не догадалась. а то мудрила чето с прерываниями.. с таймерами.. а на деле.. хмм. надо будет разобраться.
ПС: просила же код не давать)) так неинтересно будет)) |
Ну начни для начала не с асма а с си. Примени там эту апишку, а потом, когда поймешь, что почем, напиши и на асме!
|
Alexsize, я прошу именно на асме. то есть я на СИ не знаю ничего ВООБЩЕ. и в данный момент, мне интересней асм.. можно было вообще на пхп сделать и не заморачиваться. а в чем тогда вся прелесть? на асме я итак напишу, без С
|
Alexsize, тебе не всеравно? Интересует ее асм, пусть пишет на нем, а ложные выдумки, что асм сложнее С оставьте при себе.
|
Цитата:
To Shnurovka: клац |
Хм...как одно из решений:
1. Напиши на си(не важно, использешь ты апи или нет). 2. Отруби оптимизацию в компиляторе и линковщике. 3. Дизассемблируй что получилось - и посмотри....если знаешь основы ассемблера - все поймешь! ЗЫЖ Не ругай по почкам плз :) |
biophreak, кажется я ясно написала, что на С я НЕ ПИШУ. ))) пинать само собой не буду)) потому что без всякого стеба дал совет.. Что уже прогресс.. На ачате-то
кароч я поняла все. на днях займусь. а то чет слишком устала... ПС: если у кого есть еще дельные предложения безо всяких там С и т.д, то постите - мне интересно сделать разными способами.. Не помешает в любом случае.. Alexsize, да, я вижу программу-часы. но она под дос.. а учить лучше что-то одно. Но все равно спасибо.. |
Насчет принципа - имхо все просто!
скелет программы(типа модели, заголовков, либ - пропускаем :)) 1. Создаешь "цикл" (хотя как такового понятия цикл в асме нет, но все же :)) 2. Принтишь время. (вызываешь ту же WinAPI ф-ию для показа времени) 4. Делешь задержку в 1с 5. Выполняешь пункт 2, очищая экран(если надо - возвращаешься в ту позицию, где прошлый раз принтили время) =) Вроде так...это для консоли... Советую писать на fasm - ИМХО наиболее удобный из ассемблеров! В нем есть прототипы почти всех WinAPI ф-ий... |
biophreak, я и на масм не жалуюсь вроде..
|
Просто плюс fasma в том что на нем удобно писать макросы - очень помогает при дальнейшей работе...
ЗЫЖ И убедился на себе, что майкрософтовский оптимизатор - вещь совершенно не нужная и, извините, дурная :)) ЗЗЫЖ А убедился - когда мне надо было с TASM на MASM перенести код - код перенес, он работал, но работал неправильно(то-ли в масме другие представления о регистрах, толи хз) - забил на идею, перенес на фасм - все заработало с минимальными изменениями :)) |
Цитата:
Начинать кодить на асме надо без использования макросов,чтобы понять принцип... |
Согласен...и с первым утверждением и со вторым :)
АСМ от меня далеко...я предпочитаю языки более высокого уровня...да и не надо как то было! :) ЗЫЖ Вообще как-то к продукции мелкомягких отношусь с недоверием... ЗЗЫЖ Надо учиться кодить без макросов, но - согласись с ними удобнее, особенно если проект большой :) |
особенно тем, кто кодить-то особо не умеет =\
мдее. типа меня.. НО учиться никогда не поздно.. честно говоря, пока что меня все устраивает. перейти можно будет и потом... если потребуется |
fasm, C .... masm32! ;)
этого должно хватить c:\masm32\EXAMPLE8\JACTS\ |
Shnurovka > см. в MSDN функцию SetTimer и сообщение WM_TIMER...
|
хек не понимаю... Девчонка интересуется... и что?? =?
или тяга к знаниям уже не в моде? уважайте чужие интересы... =/ ибо если она девушка значит у нее нет конструктивно-кодерского мышления?!! не стоит так... ибо еще не известно... Шну может знать больше чем некоторые мемберы ачата... а вообще шну msdn.com, rsdn.ru, wasm.ru |
насчет доков - forum.vingrad.ru
и не только по асму :) |
Shnurovka, KEZ, inv, Alexsize - выяснения отношений в ПМ. В следующий раз модераторы, которые оффтопят, получат минус - в основном это касается Alexsize.
Надеюсь, я ясно выражаюсь. По теме - нафига таймеры использовать, GetLocalTime/Sleep вполне пойдет. |
Цитата:
|
Имхо это не универсально) хотя хз. вообщемто без разницы.. просто не долюблюваю эти таймеры почемуто хз)
|
> Shnurovka, KEZ, inv, Alexsize - выяснения отношений в ПМ. В следующий раз модераторы, которые оффтопят, получат минус - в основном это касается Alexsize.
о, грит типа понтанулся как следует так чего ты сегодня мне говорил около супермаркета, обдолбавшись растворителем? : D |
Грит из ГНК, ему можно лишний раз ширнуться :)
|
Цитата:
А говорил я тебе про Pe формат :p Ладно, заканчиваем оффтопить) |
Цитата:
Смотрим здесь часики... |
напиши с использованием системного таймера в плоть до учета микросекунд, добавь будильник при помощи системного динамика, длина волны и период выщитываются в 2 цикла
|
Жжошь... ыы.. мне б такой сначала написать)) уже начала кстати
in process..................... |
ипусь, ипусь..
Мля... я уже сколько долблюсь.. наверное мало знаю..
Вот код выкладываю. сильно не ржать, он очень и очень кривой... Посмотрите. Кому не лень может кто подскажет и доработает сам.. Если уж у меня не выйдет... Код:
.TITLE 4ase (.ASM)ПС: синтаксис масма |
Цитата:
SYSTEMTIME Ксати эта структура уже определена хутчем,так что заново описывать думаю не стоит в своих прогах... И еще я чет не понял,че делает .data в сегменте кода? О_о Качни себе Chrome IDE на васме есть и создай window program (assembler) и посмотри как оформлен проект ;) Для данных, значения которых не определы изначально,а определяются воремя исполнения программы используй сегмент .data? Код:
.data?GetLocalTime PROTO Эт зачем Функция стандартная для винда и прототип не нужен... Код:
invoke RegisterClassEx, addr wchttp://wasm.ru/article.php?article=1001003 почитай...урок как раз на твою тему ;) |
GoreMaster, о, спасибо. ЧЕт я невнимательная какая-то...
Так... окно дописано полностью.. осталось часы отобразить там... не думала, что это будет так для меня сложно.. |
А ты создай в окне editbox и там часы отображай
и для смены времени используй тамеры,как сказал NetMan. Just 4 help: вот пример программы: _http://rapidshare.com/files/51191471/clock.exe и её исходник: _http://rapidshare.com/files/51191428/clock.asm |
Ro$k-0, НЕЕТ!!! хыы... я столько писала эту муть.. и уже осталось часики отобразить, что идея с эдитбоксом мне кажется не очень хорошей.. )))
|
Пиши аналоговые часы со сменой скинов, а-то ежесекундный вывод текста на пустое окно ИМХО слишком просто( сплошные АПИ и никакого Ассемблерного кода ;) ), заодно математический сопроцессор освоишь)))
Система не сложная, всего 5 слоёв и 3 буфера. Каждый час выводишь на буфер1 подложку и часовою стрелку под определённым углом(с использованием GDI+ или своим алгоритмом), каждую минуту выводишь на буфер2 буфер1 и минутную стрелку под соответствующим углом, а каждую секунду выводишь на буфер3 буфер2, секундную стрелку и верхнее стекло и выводишь его на окно через UpdateLayeredWindow Я как-то делал такое, если использовать картинки PNG( с Alpha-каналом ) получается очень даже неплохо правда GDI+ отедает 10% процессорного времени, а сторонние алгоритмы вставлять не хотелось, как вариант, для стрелок можно использовать векторную графику, тогда будет работать намного быстрее. Просто в твоём варианте, разницы почти нет на каком языке пишешь, всё-равно просто передаёшь аргументы из одной АПИ в другую :/ |
ну всё,C кодеры отпадают:)
я просто написал прогу на си и перевел на асм (сплошные АПИ и никакого Ассемблерного кода)-ты прав 2hidden,ты предложил что-то по типу: http://www.wasm.ru/src/3/Aclock.zip |
Цитата:
|
Да вы ребят извращенцы=\
|
мля... я с теми трахаться даже особо не стала.. у меня почему-то компилятор даже инклюдить ничего не хочет... =\ что очень и очень странно.. Мде.. просто пишет что-то типа:
Код:
\masm32\include\windows.inc(115) : error A2004: symbol type conflict : boolПоходу я взяла просто достаточно шаблонную ф-цию с диалоговыми окнами.. и переписала.. просто под себя.. выложила все тут ПС: я писала все это не сама, а просто ПЕРЕПИСАЛА код немного и все.. адаптировала под данный процессор... а те.. я уже хз блин... псц заебалась.. В общем, ловите трояшку.. ) /me пошла кушать мороженое.. Добавлено: Говорили же мне не с этого начинать) а фига ли я кого послушала)) мде.. зря.. |
| Время: 23:27 |