Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Александр0907
0 / 0 / 1
Регистрация: 15.05.2011
Сообщений: 25
#1

Показывать время со звуком: количество сигналов зависит от времени

22.05.2012, 14:29. Просмотров 1022. Ответов 7
Метки нет (Все метки)

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

Текст программы:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
include 'WIN32AX.INC'
.data                           ;сегмент данных
szDisplayName DB "Часы", 0    
hWnd DD 0                      
hInst DD 0
szClassName DB "WinClock_Class", 0
                            ; переменные для элемента "Button"
ButtonClassName DB "BUTTON", 0
ButtonText DB "Выход", 0
hwndButton DD 0
                            ; переменные для элемента "Static"
LabelClassName DB "STATIC", 0
LabelText DB " "     ; " 00:00:00 "
Hour DB "00"
DB ":"
Min DB "00"
DB ":"
Sec DB "00"
DB " ",0
hwndLabel DD 0
msg MSG
wc WNDCLASS
STime SYSTEMTIME ; идентификаторы элементов управления
ButtonID EQU 1;
LabelID EQU 2;
TimerID EQU 3
.code                            ;сегмент кода
start:
push NULL
call dword ptr GetModuleHandle
mov [hInst], EAX
 
; ------------ заполнение структуры WNDCLASS требуемыми параметрами---------------
mov [wc.style], CS_HREDRAW or CS_VREDRAW
mov [wc.lpfnWndProc], WndProc     ;установить [wc.lpfnWndProc]=WndProc
mov [wc.cbClsExtra], NULL         ;установить [wc.cbClsExtra]= NULL
mov [wc.cbWndExtra], NULL         ;установить [wc.cbWndExtra]= NULL
push [hInst]                      ;поместить в стек [hInst]
pop [wc.hInstance]            ;взять из стека [wc.hInstance]
mov [wc.hbrBackground], COLOR_BTNFACE+1   ;установить [wc.hbrBackground]=COLOR_BTNFACE+1
mov [wc.lpszMenuName], NULL             ;установить [wc.lpszMenuName]=NULL
mov [wc.lpszClassName], szClassName     ;установить                           [wc.lpszClassName]=szClassName 
push IDI_APPLICATION            ;поместить в стек IDI_APPLICATION
push NULL                   ;поместить в стек NULL
call dword ptr LoadIcon         ;функция загрузки заданного значка (пиктограммы) из исполняемого  (.EXE) файла, связанного с экземпляром приложения. 
 
mov [wc.hIcon], EAX         ;установить [wc.hIcon]=EAX
push IDC_ARROW              ;поместить в стек IDC_ARROW 
push NULL                   ;поместить в стек NULL
call dword ptr LoadCursor       ;функция загружающая указанный курсор из исполняемого (.EXE) файла, связанного с экземпляром приложения. 
 
mov [wc.hCursor], EAX           ;установить [wc.hCursor]=EAX
lea EAX, [wc]               ;загрузка исполнительного адреса
push EAX                        ;поместить в стек EAX
call dword ptr RegisterClass
 
 
 
; -------------------------- создать окно зарегистрированного класса-----------------------------
push NULL
push [hInst]
push NULL
push NULL
push 200                        ; высота окна
push 300                        ; ширина окна
push 100                        ; координата Y
push 100                        ; координата X
push WS_DLGFRAME + WS_SYSMENU + WS_MINIMIZEBOX
push szDisplayName
push szClassName
push WS_EX_OVERLAPPEDWINDOW
call dword ptr CreateWindowEx
mov [hWnd], EAX
push SW_SHOWNORMAL
push [hWnd]
call dword ptr ShowWindow
push [hWnd]
call dword ptr UpdateWindow
 
; --------------------------------- цикл обработки сообщений----------------------------------------
StartLoop:
push 0
push 0
push NULL
lea EAX, [msg]
push EAX
call dword ptr GetMessage
cmp EAX, 0
je ExitLoop
lea EAX, [msg]
push EAX
call dword ptr TranslateMessage
lea EAX, [msg]
push EAX
call dword ptr DispatchMessage
jmp StartLoop
ExitLoop:
mov EAX, [msg.wParam]
push EAX
call dword ptr ExitProcess
 
; ------------------------ оконная процедура приложения ------------------------------------------
proc WndProc hWin, uMsg, wParam, lParam
cmp [uMsg], WM_CREATE
je WMCreate
cmp [uMsg], WM_COMMAND
je WMCommand
cmp [uMsg], WM_TIMER
je WMTimer
cmp [uMsg], WM_DESTROY
je WMDestroy
jmp WMOver
WMCreate:
 
; --------------------- создать окно зарегистрированного класса Button-------------------------
push NULL
push [hInst]
push ButtonID
push [hWin]
push 30                        ; высота окна
push 60                        ; ширина окна
push 100                       ; координата Y
push 120                       ; координата X
push WS_CHILD + WS_VISIBLE + BS_DEFPUSHBUTTON
push ButtonText
push ButtonClassName
push NULL
call dword ptr CreateWindowEx
mov [hwndButton], EAX
push EAX
call dword ptr SetFocus
 
; -------------------- создать окно зарегистрированного класса Label---------------------------
push NULL
push [hInst]
push LabelID
push [hWin]
push 20                       ; высота окна
push 90                       ; ширина окна
push 50                       ; координата Y
push 105                      ; координата X
push WS_CHILD + WS_VISIBLE + WS_BORDER + ES_CENTER + ES_AUTOHSCROLL
push LabelText
push LabelClassName
push NULL
call dword ptr CreateWindowEx
mov [hwndLabel], EAX
; ----- создать Timer, период - 1000 мс
push TmProc
push 1000
push TimerID
push [hWin]
call dword ptr SetTimer
call RefreshTime
xor EAX, EAX
ret
WMCommand:
mov EAX, [wParam]
cmp [lParam], 0
je ExitWMC
cmp AX, ButtonID
jne ExitWMC
shr EAX,16
cmp AX, BN_CLICKED
jne ExitWMC
push NULL
call dword ptr PostQuitMessage
xor EAX, EAX
ExitWMC:
ret
WMTimer:
call RefreshTime
xor EAX, EAX
ret
WMDestroy:
push NULL
call dword ptr PostQuitMessage
xor EAX, EAX
ret
WMOver:
push [lParam]
push [wParam]
push [uMsg]
push [hWin]
call dword ptr DefWindowProc
ret
endp
 
; ----------------- процедура обработки события WM_TIMER ----------------------------------
proc TmProc hWin, uMsg, wParam, lParam
call RefreshTime
ret
endp
 
; --------------------------------------- обновить время ------------------------------------------------
RefreshTime:
push    STime
call dword ptr GetLocalTime    ; вызов функции GetLocalTime
mov  ax,[STime.wHour]             ; установить ax=[STime.wHour]
call Int2Str                      ; вызов функции Int2Str
mov  word[Hour],cx            ; установить word[Hour]=cx
mov  ax,[STime.wMinute]        ; установить ax=[STime.wMinute]
call Int2Str                      ; вызов функции Int2Str
mov  word[Min],cx             ; установить word[Min]=cx
mov  ax,[STime.wSecond]        ; установить ax=[STime.wSecond]
call Int2Str                      ; вызов функции Int2Str
mov  word[Sec],cx             ; установить word[Sec]=cx
push LabelText                ; поместить в стек LabelText
push [hwndLabel]                  ; поместить в стек [hwndLabel]
call dword ptr SetWindowText   ; вызов функции GetLocalTime
ret
 
 
; ------------------------------- int(ax) -> строка ASCII(cx) ------------------------------------------
Int2Str:                               ;Начало подпрограммы
 
aam     ;коррекция ASCII-формата после     умножения    
mov cx,ax                    ;установить сx=ax
add cx,3030h                 ; коды символа
xchg    ch,cl                    ;перестановка операндов
ret
.end start
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 14:29
Ответы с готовыми решениями:

Зависит ли температура от времени?
В одинаковых условиях, стакан воды быстро остывает или ведро с водой? Это...

Дискретизация сигналов во времени
2. Построить периодическую функцию δT (t) =∑ δ(t – n*T). Суммирование...

Показывать текущее время в приложении
Есть строка с кодом: DateTime now = new DateTime(); now = DateTime.Now;...

Показывать MessageBox через заданные промежутки времени
Приветь всем, как можно в Visual studio 2012 через указанному время таймера...

Как создать на форме таблицу с определенным количеством строк, а количество столбцов зависит от количество записей в таблице БД.
Здравствуйте. Я разрабатываю приложение составление расписание занятий в ВУЗе....

7
Mikl___
Автор FAQ
11670 / 5995 / 536
Регистрация: 11.11.2010
Сообщений: 10,989
22.05.2012, 14:38 #2
Лучший ответ Сообщение было отмечено как решение

Решение

а почему сразу не передать функции wprintf часы, минуты и секунды? Зачем маструбировать с Int2Str? Умилил комментарий
call dword ptr SetWindowText ; вызов функции GetLocalTime
А для воспроизведения звука используй функции PlaySound для проигрывания wav-файла (можно записать бой кремлевских курантов) или MessageBeep для подачи коротких гудков
3
Александр0907
0 / 0 / 1
Регистрация: 15.05.2011
Сообщений: 25
22.05.2012, 18:40  [ТС] #3
я не представляю вообще как это сделать, а звук должен издавать системник простейшие,
0
programmisto
92 / 137 / 0
Регистрация: 15.04.2012
Сообщений: 1,032
23.05.2012, 06:14 #4
Александр0907, таймера порта тебе в помощь.
0
Troll_Face
603 / 403 / 8
Регистрация: 26.04.2012
Сообщений: 2,070
23.05.2012, 08:47 #5
Цитата Сообщение от programmisto Посмотреть сообщение
таймера порта
может все-таки порт таймера?? и я где-то слышал что мастдайка не разрешает ходить в порт обычным приложениям...
0
programmisto
92 / 137 / 0
Регистрация: 15.04.2012
Сообщений: 1,032
23.05.2012, 10:42 #6
Fatal Error, можно залезть в 0 кольцо.
0
vital792
1997 / 1269 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
23.05.2012, 11:02 #7
Цитата Сообщение от programmisto Посмотреть сообщение
Fatal Error, можно залезть в 0 кольцо.
Лезть на уровень ядра чтобы пропищать динамиком? Лучше сделать так

Цитата Сообщение от Mikl___ Посмотреть сообщение
или MessageBeep для подачи коротких гудков
Решение ведь уже озвучено.
0
Troll_Face
603 / 403 / 8
Регистрация: 26.04.2012
Сообщений: 2,070
23.05.2012, 12:25 #8
Цитата Сообщение от programmisto Посмотреть сообщение
можно залезть в 0 кольцо.
ну ты гений
0
23.05.2012, 12:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2012, 12:25

MS Access 2010: от каких факторов зависит время выполнения запроса?
Как уменьшить время выполнения запросов? Может быть железо поменять на более...

Функция псевдошума, которая зависит от параметра т (время), как записать?
Добрый день. Говорю сразу, я с программированием и математикой не сильно дружу...

Определить, как число клиентов зависит от времени обслуживания и перемещения между банкоматами.
Ребята, помогите. Не знаю как сделать это задание! 7 банкоматов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru