الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بعض الاسئلة 32 بت

بدأه اشليان في 15 سبتمبر 2009 · 2 رد · 928 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

أنا شفت كود في موضوع الأستاذ أحمد الغريب

وعندي بعض الاشياء مافهمتها

الكود:

اقتباس
;===============================================================================

;START

;===============================================================================

.486

.model flat, stdcall

option casemap: none

includelib c:\masm32\lib\kernel32.lib

includelib c:\masm32\lib\user32.lib

include c:\masm32\include\kernel32.inc

include c:\masm32\include\user32.inc

include c:\masm32\include\windows.inc

include resorces\skeleton.inc

WinMain PROTO STDCALL :DWORD, :DWORD, :DWORD, :DWORD

WndProc PROTO STDCALL :DWORD, :DWORD, :DWORD, :DWORD

;===============================================================================

;DATA

;===============================================================================

.data

AppName db "النواه",0

ClassName db "نواة الاسمبلى",0

.data?

hInstance dd ?

hMenu dd ?

;===============================================================================

;CODE

;===============================================================================

.code

start:

invoke GetModuleHandle, NULL

mov hInstance, eax

invoke WinMain, hInstance, NULL, NULL, SW_SHOWNORMAL

invoke ExitProcess,eax

;-----------------------------------------------------------------

; WinMain

;-----------------------------------------------------------------

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD

LOCAL wc:WNDCLASSEX

LOCAL msg:MSG

LOCAL hwnd:HWND

mov wc.cbSize,SIZEOF WNDCLASSEX

mov wc.style, CS_HREDRAW or CS_VREDRAW

mov wc.lpfnWndProc, OFFSET WndProc

mov wc.cbClsExtra,NULL

mov wc.cbWndExtra,NULL

push hInstance

pop wc.hInstance

mov wc.hbrBackground,COLOR_WINDOW

mov wc.lpszMenuName, NULL

mov wc.lpszClassName,OFFSET ClassName

mov wc.hIcon, 0

mov wc.hIconSm, 0

invoke LoadCursor,NULL,IDC_ARROW

mov wc.hCursor,eax

invoke RegisterClassEx, addr wc

invoke LoadMenu, hInstance, MAINMENU;load menu

mov hMenu, eax ;store handle

INVOKE CreateWindowEx,WS_EX_LAYOUTRTL,ADDR ClassName,ADDR AppName,\

WS_OVERLAPPEDWINDOW-WS_MAXIMIZEBOX-WS_SIZEBOX,\

CW_USEDEFAULT, CW_USEDEFAULT,258,350,NULL,hMenu,\

hInst,NULL

mov hwnd,eax

invoke ShowWindow, hwnd, CmdShow

invoke UpdateWindow, hwnd

.WHILE TRUE

invoke GetMessage, ADDR msg,NULL,0,0

.BREAK .IF (!eax)

invoke TranslateMessage, ADDR msg

invoke DispatchMessage, ADDR msg

.ENDW

mov eax,msg.wParam

ret

WinMain endp

;-----------------------------------------------------------------

; Window procedure

;-----------------------------------------------------------------

WndProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD

mov eax, uMsg

.IF eax==WM_DESTROY

invoke PostQuitMessage, NULL

.ELSE

invoke DefWindowProc,hWnd,uMsg,wParam,lParam

ret

.ENDIF

ret

WndProc endp

end start

هل إذا اردت تعريف متغير بدون قيمة ابتدائية

أن أعرف مقطع هكذا:

.data?

مالمقصود بهذه

LOCAL wc:WNDCLASSEX

LOCAL msg:MSG

LOCAL hwnd:HWND

وجزاكم الله ألف خير

#2

local variable أي سيتم حجز مكانه في الـstack .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3

سؤال ثاني !!

كيف يمكنني أن أقوم بتعريف متغير من نوع تركيبة

يعني متغير من نوع WNDCLASSEX

هل هذا التعريف صحيح؟؟

win WNDCLASSEX ?

مواضيع مشابهة