b>; послідовності символів LARGE,  p>
; що є ім'ям операції, що оголошує  p>
; наступний за нею операнд 32-розрядних,  p>
; присвоюється ім'я L  p>
  IDM_QUIT equ 100  b>  p>
  IDM_ABOUT equ 101  b>  p>
  MF_ENABLED equ 0  b>  p>
  MF_POPUP equ 10h  b>  p>
  MF_OWNERDRAW equ 100h  b>  p>
   b> ; Опції Win32 API, які використовуються програмою  b>  p>
   b>  extrn BeginPaint: PROC  b>  p>
  extrn CreateWindowExA: PROC  b>  p>
  extrn DefWindowProcA: PROC  b>  p>
  extrn DispatchMessageA: PROC  b>  p>
  extrn EndPaint: PROC  b>  p>
  extrn ExitProcess: PROC  b>  p>
  extrn GetMessageA: PROC  b>  p>
  extrn GetModuleHandleA: PROC  b>  p>
  extrn LoadCursorA: PROC  b>  p>
  extrn LoadIconA: PROC  b>  p>
  extrn RegisterClassA: PROC  b>  p>
  extrn PostQuitMessage: PROC  b>  p>
  extrn ShowWindow: PROC  b>  p>
  extrn TranslateMessage: PROC  b>  p>
  extrn UpdateWindow: PROC  b>  p>
  extrn CreateMenu: PROC  b>  p>
  extrn MessageBoxA: PROC  b>  p>
  extrn AppendMenuA: PROC  b>  p>
  extrn DrawMenuBar: PROC  b>  p>
  extrn CreatePopupMenu: PROC  b>  p>
   b> . data  b>; перевизначених ім'я, що означає початок сегмента  p>
   b>; даних  p>
  newhwnd dd 0  b>  p>
   b>  lppaint PAINTSTRUCT > b>  p>
  msg MSGSTRUCT > b>  p>
  wc WNDCLASS > b>  p>
  hInst dd 0  b>  p>
  fl dw 0  b>  p>
  szTitleName db ' b>  Це  b>   b>  наше  b>   b>  вікно  b >  ', 0  b>  p>
  szClassName db 'ASMCLASS32', 0  b>  p>
   b>  szHello db 'Hello!', 0  b>  p>
  szAppName db 'Повідомлення', 0  b>  p>
   b>  hMenu dd 0  b>  p>
  hsubmenu dd 0  b>  p>
  item1 db ' b>  Меню  b> ', 0  b>  p>
  item2 db ' b>  Вихід  b> ', 0  b>  p>
   b>  item3 db 'Повернення', 0  b>  p>
 . code  b>; перевизначених ім'я, що означає початок  p>
; сегменту коду  p>
  start:  b>  p>
   b>  push L 0  b>  p>
  call GetModuleHandleA  b>  p>
   b>  mov [hInst], eax  b>  p>
 ; ініціалізація структури WndClass  b>  p>
   b>  p>
   b>  mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW +  b>  p>
  CS_GLOBALCLASS  b>  p>
  mov [wc.clsLpfnWndProc], offset WndProc  b>  p>
  mov [wc.clsCbClsExtra], 0  b>  p>
  mov [wc.clsCbWndExtra], 0  b>  p>
  mov eax, [hInst]  b>  p>
  mov [wc.clsHInstance], eax  b>  p>
  push L IDI_APPLICATION  b>  p>
  push L 0  b>  p>
  call LoadIconA  b>  p>
  mov [wc.clsHIcon], eax  b>  p>
  push L IDC_ARROW  b>  p>
  push L 0  b>  p>
  call LoadCursorA  b>  p>
  mov [wc.clsHCursor], eax  b>  p>
  mov [wc.clsHbrBackground], COLOR_WINDOW + 1  b>  p>
  mov dword ptr [wc.clsLpszMenuName], 0  b>  p>
  mov dword ptr [wc.clsLpszClassName], offset szClassName  b>  p>
  push offset wc  b>  p>
  call RegisterClassA  b>  p>
  call CreateMenu  b>  p>
  mov [hMenu], eax  b>  p>
  push L 0; lpParam  b>  p>
  push [hInst]; hInstance  b>  p>
  push [hMenu]; menu  b>  p>
  push L 0; parent hwnd  b>  p>
  push L CW_USEDEFAULT; height  b>  p>
  push L CW_USEDEFAULT; width  b>  p>
  push L CW_USEDEFAULT; y  b>  p>
  push L CW_USEDEFAULT; x  b>  p>
  push L WS_OVERLAPPEDWINDOW; Style  b>  p>
  push offset szTitleName; Title string  b>  p>
  push offset szClassName; Class name  b>  p>
  push L 0; extra style  b>  p>
  call CreateWindowExA  b>  p>
  mov [newhwnd], eax  b>  p>
  call CreatePopupMenu  b>  p>
  mov [hsubmenu], eax  b>  p>
  push offset item2  b>  p>
  push L IDM_QUIT  b>  p>
  push 0  b>  p>
  push eax  b>  p>
  call AppendMenuA  b>  p>
  push offset item3  b>  p>
  push L IDM_ABOUT  b>  p>
  push 0  b>  p>
  push [hsubmenu]; eax  b>  p>
  call AppendMenuA  b>  p>
  push offset item1  b>  p>
  push [hsubmenu]  b>  p>
  push MF_POPUP  b>  p>
  push [hMenu]  b>  p>
  call AppendMenuA  b>  p>
  nop  b>  p>
  push L SW_SHOWNORMAL  b>  p>
  push [newhwnd]  b>  p>
  call ShowWindow  b>  p>
  push [newhwnd]  b>  p>
  call UpdateWindow  b>  p>
  push [newhwnd]  b>  p>
  call DrawMenuBar  b>  p>
  msg_loop:  b>  p>
  push L 0  b>  p>
  push L 0  b>  p>
  push L 0  b>  p>
  push offset msg  b>  p>
  call GetMessageA  b>  p>
  cmp ax, 0  b>  p>
  je end_loop  b>  p>
  push offset msg  b>  p>
  call TranslateMessage  b>  p>
  push offset msg  b>  p>
  call DispatchMessageA  b>  p>
  jmp msg_loop  b>  p>
  end_loop:  b>  p>
  push [msg.msWPARAM]  b>  p>
  call ExitProcess  b>  p>
  ;---- b>  Віконна  b>   b>  процедура  b>  ---- b> 
  WndProc proc uses ebx edi esi, hwnd: DWORD, wmsg: DWORD,  b>  p>
  wparam: DWORD, lparam: DWORD  b>  p>
  LOCAL hDC: DWORD  b>  p>
  cmp [wmsg], WM_DESTROY  b>  p>
  je wmdestroy  b>  p>
  cmp [wmsg], WM_SIZE  b>  p>
  je wmsize  b>  p>
  cmp [wmsg], WM_CREATE  b>  p>
  je wmcreate  b>  p>
  cmp [wmsg], WM_PAINT  b>  p>
  je wmpaint  b>  p>
  ;************************************** b> 
  cmp [wmsg], WM_COMMAND  b>  p>
  je wmcommand  b>  p>
  ;************************************** b> 
  jmp defwndproc  b>  p>
  wmcommand:  b>  p>
  mov eax, lparam  b>  p>
  cmp ax, 0  b>  p>
  jne m1  b>  p>
  mov eax, wparam  b>  p>
  cmp ax, IDM_ABOUT  b>  p>
  jne m2  b>  p>
  call MessageBoxA, 0, offset szHello, offset szAppName, MB_OK  b>  p>
  jmp m1  b>  p>
  m2: cmp ax, IDM_QUIT  b>  p>
  jne m1  b>  p>
  push 0  b>  p>
  call PostQuitMessage  b>  p>
  m1: mov eax, 0  b>  p>
  jmp finish  b>  p>
  wmcreate:  b>  p>
  mov eax, 0  b>  p>
  jmp finish  b>  p>
  defwndproc:  b>  p>
  push [lparam]  b>  p>
  push [wparam]  b>  p>
  push [wmsg]  b>  p>
  push [hwnd]  b>  p>
  call DefWindowProcA  b>  p>
  jmp finish  b>  p>
  wmdestroy:  b>  p>
  push L 0  b>  p>
  call PostQuitMessage  b>  p>
  mov eax, 0  b>  p>
  jmp finish  b>  p>
  wmsize:  b>  p>
  mov eax, 0  b>  p>
  jmp finish  b>  p>
  wmpaint:  b>  p>
  push offset lppaint  b>  p>
  push [hwnd]  b>  p>
  call BeginPaint  b>  p>
  mov [hDC], eax  b>  p>
  push offset lppaint  b>  p>
  push [hwnd]  b>  p>
  call EndPaint  b>  p>
  mov eax, 0  b>  p>
  jmp finish  b>  p>
  finish:  b>  p>
  ret  b>  p>
  WndProc endp  b>  p>
  ;--------------------------------- b>  p>
  public WndProc  b>  p>
  end start;  b> кінець програми  p>
  p>
  p>
 Рис1. Вікно програми  p>
 Висновок  p>
 Моя задача полягала в створенні програми   b> без файлу опису ресурсів за допомогою функцій CreateMenu і CreatePopupMenu.
Ця програма не виконує ніякої корисної роботи і служить для демонстрації деяких можливостей системи в організації інтерфейсу користувача.  P>
 Бібліографічний список  p>
 Зубков С.В. Assembler. Для DOS Windows і Unix. М.: ДМК, 1999  p>
 Пустоваров В.І. Асемблер. Програмування та аналіз коректності машинних програм.  P>
 Застосування TURBO ASSEMBLER для програмування ПЕОМ. Частина 1, 2.: Методичні вказівки до лабораторного
практикуму з дисципліни: "Системне програмне забезпечення»/Укладач В. П. Кулюкін. Екатеринбург: изд. ІПК УГТУ, 2000.  P>