Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [ASSEMBLER] Задаем вопросы (для новичков) (https://forum.antichat.xyz/showthread.php?t=70421)

desTiny 21.01.2009 13:41

Цитата:

Сообщение от Hellsp@wn
RadASM :)

ага.

http://www.wasm.ru/article.php?article=ide

Ergoproxy 23.01.2009 16:57

Notepad++ and Wasm32 и больше нех ненадо=)

vikseriq 29.01.2009 21:37

Ergoproxy , истинно! отдаю свой голос за Notepad++ и winASM от мелкомягких. мой выбор.

mixkorshun 02.02.2009 18:47

Source Insight и ASM Editor
1ый тяжеловесный редактор не только для асма(платный)
2ой бесплатный с подсветкой синтаксиса и добавлением своих keyword'ов. Главное - простота в освоении

0verbreaK 03.02.2009 00:09

Notepad++ и winASM

Girsoft 04.02.2009 11:37

набрал код на масме:
(директивы масма стараюсь сильно не использовать, приближенно к чистому ассемблеру)
Цитата:

.386p

.MODEL FLAT, STDCALL
; -------------------------------------------------------------------------
EXTERN MessageBoxA@16:near
EXTERN CreateWindowExA@48:near
EXTERN DefWindowProcA@16:near
EXTERN DispatchMessageA@4:near
EXTERN ExitProcess@4:near
EXTERN GetMessageA@16:near
EXTERN GetModuleHandleA@4:near
EXTERN PostQuitMessage@4:near
EXTERN RegisterClassA@4:near
EXTERN ShowWindow@8:near
EXTERN TranslateMessage@4:near
EXTERN UpdateWindow@4:near
EXTERN LoadCursorA@8:NEAR
EXTERN LoadIconA@8:NEAR

includelib lib\kernel32.lib
includelib lib\user32.lib

wndclass struc
classstyle dd ?
clwndproc dd ?
clscextra dd ?
clwndextra dd ?
clshinstance dd ?
clshicon dd ?
clshcursor dd ?
clbground dd ?
clmenuname dd ?
clname dd ?
wndclass ends

msgs struc
mshwnd dd ?
msmessage dd ?
mswparam dd ?
mslparam dd ?
mstime dd ?
mspt dd ?
msgs ends

.data
classname db 'ASMCLASS32',0
titlename db 'win win win hehehe',0
hinst dd 0
wc wndclass <?>
nhwnd dd 0
msg msgs <?>
cap db 'message!',0
textmess db 'r button!',0
textmess2 db 'CREATE!!!!',0

; -------------------------------------------------------------------------
.code
START:
push 0
call GetModuleHandleA@4
mov [hinst],eax

mov [wc.classstyle],4003h
mov [wc.clwndproc],offset wndproc
mov [wc.clscextra],0
mov [wc.clwndextra],0
mov eax,[hinst]
mov [wc.clshinstance],eax

push 32512
push 0
call LoadIconA@8

mov wc.clshicon,eax

push 32512
push 0
call LoadCursorA@8

mov wc.clshcursor,eax

mov wc.clbground,5
mov wc.clmenuname,0
mov wc.clname,offset classname
push offset wc
call RegisterClassA@4

push 0
push [hinst]
push 0
push 0
push 80000000h
push 80000000h
push 80000000h
push 80000000h
push 0CF0000h
push offset titlename
push offset classname
push 0
call CreateWindowExA@48

mov [nhwnd],eax

push 1
push [nhwnd]
call ShowWindow@8

push [nhwnd]
call UpdateWindow@4

msg_loop:
push 0
push 0
push 0
push offset msg
call GetMessageA@16
cmp ax,0
jz end_loop
push offset msg
call TranslateMessage@4
push offset msg
call DispatchMessageA@4
jmp msg_loop
end_loop:
push 0
call ExitProcess@4
; -------------------------------------------------------------------------
wndproc proc
push ebp
mov ebp,esp
push ebx
push esi
push edi

cmp dword ptr [ebp+0Ch],2h
jz wmdestroy

cmp dword ptr [ebp+0Ch],1h
jz wmcreate

cmp dword ptr [ebp+0Ch],204
jz wmrbutton

push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+08h]
call DefWindowProcA@16
mov eax,0
jmp finish

wmcreate:
push offset cap
push offset textmess2
call mess
mov eax,0
jmp finish
wmrbutton:
push offset cap
push offset textmess
call mess
mov eax,0
jmp finish
wmdestroy:
push 0
call PostQuitMessage@4
mov eax,0
finish:
pop edi
pop esi
pop ebx
pop ebp
ret 16
wndproc endp




mess proc
push ebp
mov ebp,esp
push 0
push dword ptr [ebp+12]
push dword ptr [ebp+8]
push 0
call MessageBoxA@16
mov esp,ebp
pop ebx
ret 8
mess endp

END START
Он всего-то и делает, что создаёт окно, ну и пара обработок сообщений. Но вот проблема - функция сознания окна CreateWindowExA постоянно в ЕАХ возвращает 0, то бишь происходит ошибка - смотрел в отладчике. Не хочет создавать окно... В чём моя ошибка? Почему код не работатет? Всем Спасибо за ответы! ++++

Огромная просьба не давать ссылки на рабочие примеры. У меня они есть, но почему-то они работают, а мой код - нет... даже незнаю почему - в отладчике почти 1 в 1 ....

Rag 08.02.2009 00:48

Подскажите пожалуйста алгоритм, который
сможет убрать все нули в буфере
base64 не предлагать, запостил сюда
потому как делать хочу на асме...

o3,14um 08.02.2009 08:00

можешь попробовать везде byte+1, а на выходе byte-1. Да много разных способов. И чем base64 не покатил?

0x0c0de 08.02.2009 11:28

2Girsoft в wndproc

Код:

push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+08h]
call DefWindowProcA@16
jmp finish

вот так надо. mov eax,0 уберите после DefWindowProcA.

Rag 08.02.2009 12:40

o3,14um, byte+1 \-1
тогда FF->00 а шанс что FF встретится довольно велик

Цитата:

чем base64 не покатил?
http://wasm.ru/forum/viewtopic.php?id=31088


Время: 21:46