Другие языки программирования и технологии
Нужен срочно код на ассемблере 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"
Вот вам красный крест на белом фоне:

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"
Вот вам красный крест на белом фоне:

калашникова почитай и сам нарисуешь
Александр Ершов
если дашь ссылку, буду очень признателен)
Похожие вопросы
- как превратить синий рисунок на белом фоне в черный рисунок на белом фоне. Через фотошоп. Опишите алгоритм, пожалуйста
- Помогите, нужен код на ассемблере. Вывод меньшего из введенных чисел
- Как в вордпресс изменить цвет шрифта в комментариях. ? У меня белый на белом фоне, как сделать чёрный, где эта настройка?
- Почему скомпилированный код на Ассемблер занимает меньше места чем на C, а на C меньше чем на C++?
- имеется логотип на белом фоне. как убрать белый фон но при этом оставить сам логотип? тоисть сделать фон прозрачным надо
- нужна помощь в изучении ассемблера
- Можете помочь дополнить код в ассемблере. Что-то не получается до конца сделать.
- помогите построить алгоритм и программный код в ассемблере
- Нужен исходный код...
- Нужна программа на языке ассемблер, вычисляющую значение переменной R.