Другие языки программирования и технологии

Нужен срочно код на ассемблере FASM для рисования красного креста на белом фоне!

Мне абсолютно все равно, каким будет этот крест! Даже если это будет буква Х на белом фоне. Просто нужен срочно простенький код, который мне это нарисует. Да даже если это не крест будет, а какой-нибудь треугольник - тоже замечательно. Чем больше комментариев там будет, тем лучше!
format PE GUI 4.0
entry N177745394
include "win32a.inc"
include "api/kernel32.inc"
include "api/user32.inc"
include "api/gdi32.inc"

sizeof.wc equ hWnd - wc

section ".bss" data readable writeable
  wc WNDCLASSEX
  hWnd rd 1
  msg MSG
  hdc rd 1
  ClientRect RECT
  CrossRect RECT
  CrossRgn rd 1
  hBrush rd 1

section ".code" code readable executable
N177745394:
    mov [wc.cbSize], sizeof.wc
    mov [wc.style], CS_HREDRAW or CS_VREDRAW or CS_OWNDC
    mov [wc.lpfnWndProc], WndProc
    mov [wc.cbClsExtra], NULL
    mov [wc.cbWndExtra], NULL
    invoke GetModuleHandle, 0
    mov [wc.hInstance], eax
    invoke LoadIcon, 0, IDI_APPLICATION
    mov [wc.hIcon], eax
    invoke LoadCursor, 0, IDC_ARROW
    mov [wc.hCursor], eax
    invoke CreateSolidBrush, 0FFFFFFh
    mov [wc.hbrBackground], eax
    mov [wc.lpszMenuName], NULL
    mov [wc.lpszClassName], WndClass
    mov [wc.hIconSm], NULL

    invoke RegisterClassEx, wc
    invoke CreateWindowEx, 0, WndClass, WndCaption,\
      WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,\
      200, 100, 0, 0, [wc.hInstance], 0
    mov [hWnd], eax
    invoke ShowWindow, [hWnd], SW_SHOWNORMAL

MainLoop:
    invoke GetMessage, msg, NULL, 0, 0
    test eax, eax
    jz .Exit
    invoke TranslateMessage, msg
    invoke DispatchMessage, msg
    jmp MainLoop
.Exit:
    invoke ExitProcess, NULL

proc WndProc stdcall uses ebx esi edi,\
      Wnd :dword, Msg :dword, wParam :dword, lParam :dword
    cmp [Msg], WM_DESTROY
    je .Destroy
    cmp [Msg], WM_PAINT
    jne .DefWndProc
    invoke GetDC, [hWnd]
    mov [hdc], eax
    invoke GetClientRect, [hWnd], ClientRect
    mov eax, [ClientRect.right]
    sub eax, [ClientRect.left]
    sub eax, 10
    shr eax, 1
    mov [CrossRect.left], eax
    add eax, 10
    mov [CrossRect.right], eax
    mov eax, [ClientRect.top]
    mov [CrossRect.top], eax
    mov eax, [ClientRect.bottom]
    mov [CrossRect.bottom], eax
    invoke CreateRectRgnIndirect, CrossRect
    mov [CrossRgn], eax
    invoke CreateSolidBrush, 0FFh
    mov [hBrush], eax
    invoke FillRgn, [hdc], [CrossRgn], [hBrush]
    mov eax, [ClientRect.left]
    mov [CrossRect.left], eax
    mov eax, [ClientRect.right]
    mov [CrossRect.right], eax
    mov eax, [ClientRect.bottom]
    sub eax, [ClientRect.top]
    sub eax, 10
    shr eax, 1
    mov [CrossRect.top], eax
    add eax, 10
    mov [CrossRect.bottom], eax
    invoke CreateRectRgnIndirect, CrossRect
    mov [CrossRgn], eax
    invoke FillRgn, [hdc], [CrossRgn], [hBrush]
.DefWndProc:
    invoke DefWindowProc, [Wnd], [Msg], [wParam], [lParam]
    jmp .Finish
.Destroy:
    invoke PostQuitMessage, 0
    xor eax, eax
.Finish:
    ret
    endp

section ".data" data readable
  WndClass db "Cross", 0
  WndCaption db "177745394", 0

section ".idata" import data readable
  library kernel32, "kernel32.dll",\
    user32, "user32.dll",\
    gdi32, "gdi32.dll"

Вот вам красный крест на белом фоне:

Никита Волганов
Никита Волганов
51 590
Лучший ответ
калашникова почитай и сам нарисуешь
Александр Ершов если дашь ссылку, буду очень признателен)