Π‘Π°ΠΊΠ°Π»Π°Π²Ρ€
Π”ΠΈΠΏΠ»ΠΎΠΌΠ½Ρ‹Π΅ ΠΈ курсовыС Π½Π° Π·Π°ΠΊΠ°Π·

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния Π½Π° языкС Assembler

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Include masm32includewindows. inc include masm32includeuser32. inc include masm32includekernel32. inc include masm32includegdi32. inc include masm32includecomdlg32. inc include masm32includeshell32. inc includelib masm32libuser32. lib includelib masm32libkernel32. lib includelib masm32libgdi32. lib includelib masm32libcomdlg32. lib includelib masm32libshell32. lib. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ АссСмблСр… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния Π½Π° языкС Assembler (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Assembler

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ АссСмблСр ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для управлСния Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΎΠΌ систСмного Π±Π»ΠΎΠΊΠ°. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ установку частоты ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… сигналов.

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для управлСния систСмным Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΎΠΌ.

2. Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½Π½ΠΎΠΌΡƒ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1.

Рисунок 1 — Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠŸΡ€ΠΈ запускС, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прорисовываСт Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ, срабатываСт функция GetDlgItemInt, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ значСния ΠΈΠ· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ eax. Π˜ΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

— hDlg — дСскриптор Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ€Π³Π°Π½ управлСния;

— nIDDlgItem — устанавливаСт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΡ€Π³Π°Π½Π° управлСния, тСкст ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½;

— lpTranslated — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сбоя (ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ обозначаСтся — ИБВИНА (TRUE), сбой обозначаСтся ΠΊΠ°ΠΊ Π›ΠžΠ–Π¬ (FALSE)), Ссли этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ПУБВО (NULL), функция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΡƒΡΠΏΠ΅Ρ…Π΅ ΠΈΠ»ΠΈ сбоС;

— bSigned — устанавливаСт, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ функция Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ тСкст Π½Π° Π·Π½Π°ΠΊ минус ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа со Π·Π½Π°ΠΊΠΎΠΌ, Ссли ΠΎΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ этот минус (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ИБВИНА (TRUE) устанавливаСт, Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ сдСлано, Π›ΠžΠ–Π¬ (FALSE), — Ρ‡Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ).

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСдаётся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ mov ΠΈΠ· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π° eax Π² Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Для управлСния Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΎΠΌ систСмного Π±Π»ΠΎΠΊΠ° (Π±ΠΈΠΏΠ΅Ρ€ΠΎΠΌ), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ библиотСчная функция beep. Данная функция ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

— dwFreq — частота Π·Π²ΡƒΠΊΠ° Π² Π³Π΅Ρ€Ρ†Π°Ρ…, допустимый Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ — ΠΎΡ‚ 37 Π΄ΠΎ 32 767 Π“Ρ†;

— dwDuration — ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π²ΡƒΠΊΠ° Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…;

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ установку частоты ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Edit с ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ES_NUMBER, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄ символов, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ Ρ†ΠΈΡ„Ρ€. Для хранСния ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π±Ρ‹Π»ΠΈ созданы Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ freq_var ΠΈ dur_var (частота ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ соотвСтсвСнно) с Ρ‚ΠΈΠΏΠΎΠΌ dd (dword). Для проигрывания Π·Π²ΡƒΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° play с Π½Π°Π΄ΠΏΠΈΡΡŒΡŽ «Π’оспроизвСсти».

3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ прилоТСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Рисунок 2 — Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ значСния частоты Π·Π²ΡƒΠΊΠ° Π² Π²Π΅Ρ€Ρ…Π½Π΅Π΅ ΠΏΠΎΠ»Π΅, Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ — Π² Π½ΠΈΠΆΠ½Π΅Π΅. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π’оспроизвСсти», ΠΈΠ· ΡΠΈΡΡ‚Π΅ΠΌΠ΅Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ° (ΠΈΠ»ΠΈ Π·Π²ΡƒΠΊΠΎΠ³ΠΎ устройства ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π² ΡΠ»ΡƒΡ‡Π°Π΅ систСмы Windows 7) Π±ΡƒΠ΄Π΅Ρ‚ Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠ½ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ частоты, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΡ€ΠΈ установкС частоты мСньшС 35 Π“Ρ† ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ 19 ΠΊΠ“Ρ† Π·Π²ΡƒΠΊ ΡΠ»Ρ‹ΡˆΠ΅Π½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·-Π·Π° особСнностСй чСловСчСского слуха.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

1. IDE MASM Builder [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. — Π Π΅ΠΆΠΈΠΌ доступа: http://www.digitaction.com/index.php/products/masm-builder-integrated-development-environment-for-masm32.html.

2. Beep function (Windows) [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. — Π Π΅ΠΆΠΈΠΌ доступа: http://msdn.microsoft.com/en-us/library/windows/desktop/ms679277% 28v=vs.85% 29. aspx, свободный.

3 GetDlgItemInt (Windows) [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. — Π Π΅ΠΆΠΈΠΌ доступа: http://msdn.microsoft.com/en-us/library/windows/desktop/ms645485% 28v=vs.85% 29. aspx, свободный.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

model flat, stdcall option casemap: none

include masm32includewindows. inc include masm32includeuser32. inc include masm32includekernel32. inc include masm32includegdi32. inc include masm32includecomdlg32. inc include masm32includeshell32. inc includelib masm32libuser32. lib includelib masm32libkernel32. lib includelib masm32libgdi32. lib includelib masm32libcomdlg32. lib includelib masm32libshell32. lib

includelib masm32procscontrolsbaumanets. lib WinMain proto: DWORD:DWORD:DWORD:DWORD

RGB macro red, green, blue

xor eax, eax

mov ah, blue

shl eax, 8

mov ah, green

mov al, red

endm

szText MACRO Name, Text: VARARG

LOCAL lbl

jmp lbl

Name db Text, 0

lbl:

ENDM

const

playID equ 5

durID equ 4

Label2ID equ 3

freqID equ 2

Label1ID equ 1

data?

hFontN HWND?

hwndplay HWND?

hwnddur HWND?

hwndLabel2 HWND?

hwndfreq HWND?

hwndLabel1 HWND?

hInstance HINSTANCE?

CommandLine LPSTR?

data

lf LOGFONT <>

Textplay db «Π’оспроизвСсти», 0

Textdur db «0», 0

TextLabel2 db «Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, мсСк», 0

Textfreq db «0», 0

TextLabel1 db «Π§Π°ΡΡ‚ΠΎΡ‚Π°, Π“Ρ†», 0

szFontName db «MS Sans Serif», 0

;_______________

ClassName db «mbuilder», 0

BtnClName

db «button», 0

StatClName

db «static», 0

EditClName

db «edit», 0

LboxClName

db «listbox», 0

CboxClName

db «combobox», 0

ReditClName

db «richedit», 0

RichEditLib

db «riched32.dll», 0

FormCaption

db «Π—Π²ΡƒΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€», 0

;_______________

freq_var

dd 0

dur_var

dd 0

code

start:

invoke

GetModuleHandle, NULL

mov

hInstance, eax

invoke

GetCommandLine

invoke

WinMain, hInstance, NULL, CommandLine, SW_SHOWDEFAULT

invoke

ExitProcess, eax

WinMain proc

hInst:HINSTANCE, hPrevInst: HINSTANCE, CmdLine: LPSTR, CmdShow: DWORD

LOCAL wc

:WNDCLASSEX

LOCAL msg

:MSG

LOCAL hwnd

:HWND

mov

wc.cbSize, SIZEOF WNDCLASSEX

mov

wc.style, CS_BYTEALIGNCLIENT

mov

wc.lpfnWndProc, offset WndProc

mov

wc.cbClsExtra, NULL

mov

wc.cbWndExtra, NULL

push hInst

pop

wc.hInstance

mov

wc.hbrBackground, COLOR_BTNFACE+1

mov

wc.lpszClassName, OFFSET ClassName

invoke

LoadIcon, NULL, IDI_APPLICATION

mov

wc.hIcon, eax

mov

wc.hIconSm, eax

invoke

LoadCursor, NULL, IDC_ARROW

mov

wc.hCursor, eax

invoke

RegisterClassEx, addr wc

invoke CreateWindowEx, 0, ADDR ClassName, ADDR

FormCaption, WS_SYSMENU or WS_SIZEBOX, 209,89,255,130,0,0, hInst, 0

mov

hwnd, eax

INVOKE

ShowWindow, hwnd, SW_SHOWNORMAL

INVOKE

UpdateWindow, hwnd

WHILE TRUE

invoke

GetMessage, ADDR msg, 0,0,0

BREAK.IF (! eax)

invoke

TranslateMessage, ADDR msg

invoke

DispatchMessage, ADDR msg

ENDW

mov

eax, msg. wParam

ret

WinMain endp

WndProc proc hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM

IF uMsg == WM_DESTROY

invoke

PostQuitMessage, NULL

ELSEIF uMsg == WM_CREATE

invoke CreateWindowEx, 0, ADDR BtnClName, ADDR Textplay, WS_CHILD or BS_DEFPUSHBUTTON or WS_VISIBLE, 0,72,243,25, hWnd, playID, hInstance, 0

mov

hwndplay, eax

invoke CreateWindowEx, WS_EX_CLIENTEDGE, ADDR EditClName, ADDR

Textdur, WS_CHILD or ES_LEFT or ES_AUTOHSCROLL or ES_NUMBER or

WS_VISIBLE, 120,40,121,22, hWnd, durID, hInstance, 0

mov

hwnddur, eax

invoke CreateWindowEx, WS_EX_LEFT, ADDR StatClName, ADDR

TextLabel2, WS_CHILD or SS_LEFT or SS_NOTIFY or

WS_VISIBLE, 8,40,109,18, hWnd, Label2ID, hInstance, 0

mov

hwndLabel2, eax

invoke CreateWindowEx, WS_EX_CLIENTEDGE, ADDR EditClName, ADDR

Textfreq, WS_CHILD or ES_LEFT or ES_AUTOHSCROLL or ES_NUMBER or

WS_VISIBLE, 120,8,121,22, hWnd, freqID, hInstance, 0

mov

hwndfreq, eax

invoke CreateWindowEx, WS_EX_LEFT, ADDR StatClName, ADDR

TextLabel1, WS_CHILD or SS_LEFT or SS_NOTIFY or

WS_VISIBLE, 8,8,64,18, hWnd, Label1ID, hInstance, 0

mov

hwndLabel1, eax

invoke

lstrcpy, addr lf. lfFaceName, addr szFontName

mov

lf.lfWeight, 500

mov

lf.lfHeight, — 11

invoke

CreateFontIndirect, addr lf

mov

hFontN, eax

invoke

SendMessage, hwnddur, WM_SETFONT, hFontN, 1

invoke

SendMessage, hwndfreq, WM_SETFONT, hFontN, 1

invoke

SendMessage, hwndLabel2, WM_SETFONT, hFontN, 1

invoke

SendMessage, hwndLabel1, WM_SETFONT, hFontN, 1

invoke

SendMessage, hwndplay, WM_SETFONT, hFontN, 1

ELSEIF uMsg == WM_COMMAND

mov

eax, wParam

IF lParam≠ 0

IF ax == playID

shr eax, 16

IF ax == BN_CLICKED

invoke

GetDlgItemInt, hWnd, freqID, 0,1

mov freq_var, eax

invoke

GetDlgItemInt, hWnd, durID, 0,1

mov dur_var, eax

invoke Beep, freq_var, dur_var

ENDIF

ENDIF

ENDIF

ELSE

invoke

DefWindowProc, hWnd, uMsg, wParam, lParam

ret

ENDIF

xor

eax, eax

ret

WndProc endp

end start

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ