Игровая программа, таймер и генерация звука |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
Игровая программа, таймер и генерация звука |
Rocket |
22.05.2009 16:43
Сообщение
#21
|
Знаток Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Спасибо, буду разбираться! volvo, Вы не могли бы посмотреть мой вопрос о random'е в этой теме за 15.05.2009 16:49 ? |
volvo |
22.05.2009 17:54
Сообщение
#22
|
Гость |
Почему я? Кто привел тебе этот код, тот пускай и смотрит, почему код не работает. Все на самом деле гораздо проще делается. Я тебе уже привел ссылку на работающий код. Если тот код тебе не нравится - то (с учетом того, что координаты у тебя все равно однобайтовые, в пределах от 0 до 80) можешь попробовать вот эту процедуру:
RS dw 0Получи в одной программе несколько чисел: call random, и убедись, что они все разные, и ни одно не превышает 80. Но вот при разных запусках все последовательности будут одинаковыми, потому что RS не изменяется, он при старте программы всегда один и тот же. Чтобы получить разные последовательности - занеси в RS при старте значение системного таймера... |
Rocket |
22.05.2009 18:38
Сообщение
#23
|
Знаток Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Чтобы получить разные последовательности - занеси в RS при старте значение системного таймера... Заношу в RS секунды и милисекунды системного времени:
Теперь всё время печатается 36 четыре раза. Хотя RS разное каждый раз. Такой же результат был и сначала. Что сейчас не так? |
volvo |
22.05.2009 19:05
Сообщение
#24
|
Гость |
Цитата Такой же результат был и сначала. То есть, у тебя не отрабатывает вот это (переименовать в *.ASM):rand2.pas ( 1.03 килобайт ) Кол-во скачиваний: 362 вот с таким результатом: ? Ну, тогда я не знаю, что у тебя творится... Добавлено через 17 мин. P.S. Соответственно, rand3.pas ( 1.09 килобайт ) Кол-во скачиваний: 391 выдает F:\Asm30>rand3 |
Rocket |
22.05.2009 21:21
Сообщение
#25
|
Знаток Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
|
Rocket |
22.05.2009 22:02
Сообщение
#26
|
Знаток Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Почему я? Кто привел тебе этот код, тот пускай и смотрит, почему код не работает. Все на самом деле гораздо проще делается. Я тебе уже привел ссылку на работающий код. Если тот код тебе не нравится - то (с учетом того, что координаты у тебя все равно однобайтовые, в пределах от 0 до 80) можешь попробовать вот эту процедуру: RS dw 0Получи в одной программе несколько чисел: call random, и убедись, что они все разные, и ни одно не превышает 80. Но вот при разных запусках все последовательности будут одинаковыми, потому что RS не изменяется, он при старте программы всегда один и тот же. Чтобы получить разные последовательности - занеси в RS при старте значение системного таймера... volvo, случайное число помещается в ax, то есть word, а как к byte'ам привести? я что-то запамятовал |
volvo |
23.05.2009 0:16
Сообщение
#27
|
Гость |
Цитата случайное число помещается в ax, то есть word, а как к byte'ам привести? AL взять и использовать, вот и байт тебе... |
TarasBer |
23.05.2009 19:35
Сообщение
#28
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Почему я? Кто привел тебе этот код, тот пускай и смотрит, почему код не работает. Не знаю, у меня всё работает. Возможно, при переводе из Паскаля в Асм есть ещё какие-то тонкости. -------------------- |
Текстовая версия | 29.04.2024 0:23 |