Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с использованиСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Turbo Assembler

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅pшСния — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎp ΠΊΡƒpсоpΠ°; 0 — Ссли ΠΊΡƒpсоp Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½; Π½Π΅ ΠΎΠΏpΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, Ссли pСсуpс Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся pСсуpсом ΠΊΡƒpсоpΠ°. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ стандаpΡ‚Π½ΡƒΡŽ ΠΎΠ±pΠ°Π±ΠΎΡ‚ΠΊΡƒ сообщСний для сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ явно Π½Π΅ ΠΎΠ±pΠ°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏpΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ указания ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΡƒ /Π’.П. ΠšΡƒΠ»ΡŽΠΊΠΈΠ½. Π•ΠΊΠ°Ρ‚Π΅Ρ€ΠΈΠ½Π±ΡƒΡ€Π³: ΠΈΠ·Π΄. ИПК Π£Π“Π’Π£, 2004. — 40с. Калашников О. А. АссСмблСр? Π­Ρ‚ΠΎ просто… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с использованиСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Turbo Assembler (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
    • ИсслСдованиС WinAPI Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
    • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
    • БиблиографичСский список
    • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ

ЦСлью Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π·Π½Π°Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «Π‘истСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС», Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡ‹Ρ‚Π° создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Turbo Assembler.

Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΆΠ΅ прСимущСством языка ассСмблСра, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΠ·Ρ‹ΠΊΠΎΠ² Ρ‚ΠΈΠΏΠ° Pascal ΠΈΠ»ΠΈ C, являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ искусный программист, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, способСн Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅, Ρ‡Π΅ΠΌ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ трансляторами с ΡΠ·Ρ‹ΠΊΠΎΠ² программирования высокого уровня. Π’. Π΅. для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ использованиС мСньшСго количСства ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Однако, Π² ΡΠΈΠ»Ρƒ своСй машинной ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ («Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ» уровня) Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΡΠ·Ρ‹ΠΊΠ°ΠΌΠΈ программирования высокого уровня слоТнСС Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΠ½Π° состоит ΠΈΠ· ΡΠ»ΠΈΡˆΠΊΠΎΠΌ «ΠΌΠ΅Π»ΠΊΠΈΡ…» элСмСнтов — ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, соотвСтствСнно ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°, растСт Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ, Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ внСсСния ошибок. Π’ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни возрастаСт ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ совмСстной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ИсслСдованиС WinAPI Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Ѐункция LoadIcon

Π—Π°Π³pΡƒΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ pСсуpс ΠΏΠΈΠΊΡ‚ΠΎΠ³pΠ°ΠΌΠΌΡ‹.

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅pшСния — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎp ΠΏΠΈΠΊΡ‚ΠΎΠ³pΠ°ΠΌΠΌΡ‹; 0 — Π² ΠΏpΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС.

Ѐункция LoadCursor

Π—Π°Π³pΡƒΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ pСсуpс ΠΊΡƒpсоpΠ°.

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅pшСния — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎp ΠΊΡƒpсоpΠ°; 0 — Ссли ΠΊΡƒpсоp Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½; Π½Π΅ ΠΎΠΏpΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, Ссли pСсуpс Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся pСсуpсом ΠΊΡƒpсоpΠ°.

Ѐункция RegisterClassEx

РСгистpΠΈpΡƒΠ΅Ρ‚ класс ΠΎΠΊΠ½Π°, Π°Ρ‚pΠΈΠ±ΡƒΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎpΠΎΠ³ΠΎ ΠΎΠΏpΠ΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΠ°pΠ°ΠΌΠ΅Ρ‚pΠΎΠΌ WndClassEx, для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования. Класс ΠΎΠΊΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ pСгистpΠΈpΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ pΠ°Π·.

Ѐункция ShowWindow

ΠžΡ‚ΠΎΠ±pΠ°ΠΆΠ°Π΅Ρ‚ ΠΈΠ»ΠΈ ΠΏpячСт ΠΎΠΊΠ½ΠΎ ΠΎΠ±pΠ°Π·ΠΎΠΌ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°pΠ°ΠΌΠ΅Ρ‚pΠΎΠΌ CmdShow.

Ѐункция GetMessage

Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ сообщСниС, Π² pΠ°ΠΌΠΊΠ°Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ„ΠΈΠ»ΡŒΡ‚pΠ°Ρ†ΠΈΠΈ, ΠΈΠ· ΠΎΡ‡Π΅pΠ΅Π΄ΠΈ сообщСний ΠΏpΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠžΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ΡƒΠΏpΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄pΡƒΠ³ΠΈΠΌ ΠΏpΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ, Ссли сообщСний Π½Π΅Ρ‚ ΠΈΠ»ΠΈ Ссли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ сообщСниСм являСтся wm_Paint ΠΈΠ»ΠΈ wm_Timer.

Ѐункция DefWindowProc

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ стандаpΡ‚Π½ΡƒΡŽ ΠΎΠ±pΠ°Π±ΠΎΡ‚ΠΊΡƒ сообщСний для сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ явно Π½Π΅ ΠΎΠ±pΠ°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏpΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ.

Π’ΠΎΠ·Π²pΠ°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±pΠ°Π±ΠΎΡ‚ΠΊΠΈ сообщСния.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ…ΠΎΠ΄Π΅ выполнСния Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ практичСскиС Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Win32 API. Π‘Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΌ языкС АссСмблСр Π² EXE-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Turbo Assembler, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π°Ρ трСбованиям задания: данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° осущСствляСт Π²Ρ‹Π²ΠΎΠ΄ сообщСния ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π² ΡΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.

БиблиографичСский список

1. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ указания ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΡƒ /Π’.П. ΠšΡƒΠ»ΡŽΠΊΠΈΠ½. Π•ΠΊΠ°Ρ‚Π΅Ρ€ΠΈΠ½Π±ΡƒΡ€Π³: ΠΈΠ·Π΄. ИПК Π£Π“Π’Π£, 2004. — 40с.

2. Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «Π‘истСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС» / Уфимск. гос. Π°Π²ΠΈΠ°Ρ†. Ρ‚Π΅Ρ…Π½. ΡƒΠ½-Ρ‚. Бост.: О. Π”. ЛянцСв. — Π£Ρ„Π°, 2008. — 57 с.

3. Калашников О. А. АссСмблСр? Π­Ρ‚ΠΎ просто! Учимся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. БПб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2006. — 384 с.: ΠΈΠ».

4. АбСль П. АссСмблСр. Π―Π·Ρ‹ΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для IBM PC / ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πš.: Π’Π΅ΠΊ+, М.: ЭНВРОП, 2005. — 736 с.

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

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, А — Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

.586

. model flat, stdcall

extern GetModuleHandleA: near

extern LoadIconA: near

extern LoadCursorA: near

extern RegisterClassA: near

extern CreateWindowExA: near

extern GetMessageA: near

extern ShowWindow: near

extern UpdateWindow: near

extern TranslateMessage: near

extern DispatchMessageA: near

extern ExitProcess: near

extern DefWindowProcA: near

extern PostQuitMessage: near

extern BeginPaint: near

extern EndPaint: near

extern TextOutA: near

extern SetBkColor: near

extern InvalidateRect: near

includelib user32. lib

includelib kernel32. lib

includelib gdi32. lib

include windows. inc

style equ CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS

_Data segment

hWnd dd 0

msg MSG

wc WNDCLASS

pnt PAINTSTRUCT

hInst dd 0

TitleName db 'ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 1', 0

ClassName db 'Class32', 0

char WPARAM 20h

clear db ' ', 0

hdc dd 0

_Data ends

_Code segment

Start:

push 0

call GetModuleHandleA

mov [hInst], eax

mov [wc. style], style

mov [wc. lpfnWndProc], offset WndProc

mov [wc. cbClsExtra], 0

mov [wc. cbWndExtra], 0

mov eax, [hInst]

mov [wc. hInstance], eax

push IDI_APPLICATION

push 0

call LoadIconA

mov [wc. hIcon], eax

push IDC_CROSS

push 0

call LoadCursorA

mov [wc. hCursor], eax

mov [wc. hbrBackground], 0

mov dword ptr [wc. lpszMenuName], 0

mov dword ptr [wc. lpszClassName], offset ClassName

push offset wc

call RegisterClassA

push 0

push [hInst]

push 0

push 0

push 400

push 400

push 100

push 100

push WS_OVERLAPPEDWINDOW

push offset TitleName

push offset ClassName

push 0

call CreateWindowExA

cmp eax, 0

jz _err

mov [hWnd], eax

push SW_SHOWNORMAL

push [hWnd]

call ShowWindow

push [hWnd]

call UpdateWindow

msg_loop:

push 0

push 0

push 0

push offset msg

call GetMessageA

cmp eax, 0

je end_loop

push offset msg

call TranslateMessage

push offset msg

call DispatchMessageA

jmp msg_loop

end_loop:

push [msg. wParam]

call ExitProcess

_err:

jmp end_loop

WndProc proc

push ebp

mov ebp, esp

push ebx

push esi

push edi

cmp dword ptr [ebp+0ch], WM_DESTROY

je wmdestroy

cmp dword ptr [ebp+0ch], WM_CREATE

je wmcreate

cmp dword ptr [ebp+0ch], WM_PAINT

je wmpaint

cmp dword ptr [ebp+0ch], WM_CHAR

je wmchar

jmp defwndproc

wmchar:

push dword ptr [ebp+10h]

pop char

push TRUE

push NULL

push dword ptr [ebp+08h]

call InvalidateRect

wmpaint:

push offset pnt

push dword ptr [ebp+08h]

call BeginPaint

mov hdc, eax

push 5

push offset clear

push 100

push 100

push hdc

call TextOutA

push 1

push offset char

push 100

push 100

push hdc

call TextOutA

push offset pnt

push eax

call EndPaint

mov eax, 0

jmp finish

wmcreate:

mov eax, 0

jmp finish

defwndproc:

push dword ptr [ebp+14h]

push dword ptr [ebp+10h]

push dword ptr [ebp+0ch]

push dword ptr [ebp+08h]

call DefWindowProcA

jmp finish

wmdestroy:

push 0

call PostQuitMessage

mov eax, 0

finish:

pop edi

pop esi

pop ebx

pop ebp

ret 16

WndProc endp

lenstr proc

push ebp

mov ebp, esp

push esi

mov esi, dword ptr [ebp+8]

xor ebx, ebx

lbl1:

cmp byte ptr [esi], 0

jz lbl2

inc ebx

inc esi

jmp lbl1

lbl2:

pop esi

pop ebp

ret 4

lenstr endp

_Code ends

end Start

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