تور لحظه آخری
امروز : یکشنبه ، 1 مهر 1403    احادیث و روایات:  امام موسی کاظم (ع):بهترین عبادت بعد از شناختن خداوند،‌ انتظار فرج و گشایش است.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

تریدینگ ویو

لمینت دندان

لیست قیمت گوشی شیائومی

صرافی ارکی چنج

صرافی rkchange

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

طراحی کاتالوگ فوری

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

وکیل کرج

خرید تیشرت مردانه

وام لوازم خانگی

نتایج انتخابات ریاست جمهوری

خرید ابزار دقیق

خرید ریبون

موسسه خیریه

خرید سی پی کالاف

واردات از چین

دستگاه تصفیه آب صنعتی

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

خرید نهال سیب سبز

قیمت پنجره دوجداره

بازسازی ساختمان

طراحی سایت تهران سایت

دیوار سبز

irspeedy

درج اگهی ویژه

ماشین سازان

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

شات آف ولو

تله بخار

شیر برقی گاز

شیر برقی گاز

خرید کتاب رمان انگلیسی

زانوبند زاپیامکس

بهترین کف کاذب چوبی

پاد یکبار مصرف

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

بلیط هواپیما

 






آمار وبسایت

 تعداد کل بازدیدها : 1817664639




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

سوال -


واضح آرشیو وب فارسی:سایت ریسک: سوال m_asadpoor 10 تير 1389, 19:28سلام دوستان من یک قطعه کد اسمبلی دانلود کردم ولی نمی تونم کامل بفهمم که این کد چی کار می کنه .کسی هست که بتونه به من کمک کنه؟ .386 .model flat,stdcall option casemap:none WinMain proto :DWORD,:DWORD,:DWORD,:DWORD include masm32includewindows.inc include masm32includeuser32.inc include masm32includekernel32.inc include masm32includegdi32.inc includelib masm32libuser32.lib includelib masm32libkernel32.lib includelib masm32libgdi32.lib .data ClassName db "SimpleWinClass",0 AppName db "Our First Window",0 char WPARAM 20h .data? hInstance HINSTANCE ? CommandLine LPSTR ? .code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR, CmdShow:DWORD LOCAL wc:WNDCLAS*** LOCAL msg:MSG LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLAS*** mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, OFFSET WndProc mov wc.cbCl***tra,NULL mov wc.cbWndExtra,NULL push hInst pop wc.hInstance mov wc.hbrBackground,COLOR_WINDOW+1 mov wc.lpszMenuName,NULL mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax invoke RegisterClas***, addr wc INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NUL L, hInst,NULL mov hwnd,eax INVOKE ShowWindow, hwnd,SW_SHOWNORMAL 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 WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM LOCAL hdc:HDC LOCAL ps:PAINTSTRUCT .IF uMsg==WM_DESTROY invoke PostQuitMessage,NULL .ELSEIF uMsg==WM_CHAR push wParam pop char invoke InvalidateRect, hWnd,NULL,TRUE .ELSEIF uMsg==WM_PAINT invoke BeginPaint,hWnd, ADDR ps mov hdc,eax invoke TextOut,hdc,0,0,ADDR char,1 invoke EndPaint,hWnd, ADDR ps .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp end start the_king 10 تير 1389, 22:06سلام دوستان من یک قطعه کد اسمبلی دانلود کردم ولی نمی تونم کامل بفهمم که این کد چی کار می کنه .کسی هست که بتونه به من کمک کنه؟ یک مثال ساده از ابتدایی ترین ساختار یک برنامه ای است که بتونه در ویندوز اجرا بشه، یعنی نشون داده که یک کدی که بتونه یک برنامه تحت ویندوز شامل یک پنجره رو نشون بده، حداقل باید شامل چه محتویاتی باشه. مشخصات مدل حافظه، قرارگیری پارامتر های توابع در پشته و حساسیت نسبت به بزرگی و کوچکی حروف (مثل C / ++C) .386 .model flat,stdcall option casemap:none قبل از اینکه تعاریفی مثل HINSTANCE که برای اسمبلی ناآشنا هستند معرفی شوند، تابع فراخوان برنامه های تحت ویندوز (WinMain) که مشابه main در برنامه های ++C است، با تعریف آشنای DWORD تعریف میشه WinMain proto :DWORD,:DWORD,:DWORD,:DWORD کامپایل کردن و اتصال یکسری تعاریف و توابع API اساسی ویندوز برای اسمبلی include masm32includewindows.inc include masm32includeuser32.inc include masm32includekernel32.inc include masm32includegdi32.inc includelib masm32libuser32.lib includelib masm32libkernel32.lib includelib masm32libgdi32.lib مشخص کردن اسم برای کلاس پنجره اصلی برنامه و نام خود برنامه و یک کاراکتر فاصله با کد ASCII برابر 20h .data ClassName db "SimpleWinClass",0 AppName db "Our First Window",0 char WPARAM 20h کد شناسایی برنامه در حال اجرا و پارامتر های سطر فرمان آن در hInstance و CommandLine قرار خواهند گرفت .data? hInstance HINSTANCE ? CommandLine LPSTR ? مقدمات آنکه یک برنامه تحت ویندوز بتواند اجرا شود، شامل دریافت کد شناسایی برنامه و سطر فرمان آن و اجرا کردن تابع اصلی برنامه (WinMain) و زمانی که اجرایش تمام شد، اجرا کردن ExitProcess برای خاتمه برنامه. .code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT invoke ExitProcess,eax ابتدایی ترین کارهایی که در نهایت منجر به نمایش یک پنجره ساده می شوند در اینجا هستند. ریزه کاری های زیادی مثل مشخص کردن ویژگی های پنجره، رنگ زمینه، آیکون برنامه، ظاهر مکان نمای ماوس (Cursor) معرفی تابعی که رخداد ها (Events) پنجره نمایش داده شده را مدیریت کند و ... WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR, CmdShow:DWORD LOCAL wc:WNDCLAS*** LOCAL msg:MSG LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLAS*** mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, OFFSET WndProc mov wc.cbCl***tra,NULL mov wc.cbWndExtra,NULL push hInst pop wc.hInstance mov wc.hbrBackground,COLOR_WINDOW+1 mov wc.lpszMenuName,NULL mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax invoke RegisterClas***, addr wc INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NUL L, hInst,NULL mov hwnd,eax INVOKE ShowWindow, hwnd,SW_SHOWNORMAL 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 اصل موضوع این است که حداقل رخداد های اساسی پنجره مثل ایجاد شدن، نابود شدن، نمایش (ترسیم) مدیریت شوند. از قلم افتادن هر کدام از این موارد منجر به عدم پاسخگویی صحیح پنجره می شود. تابع WndProc این مدیریت را انجام می دهد. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM LOCAL hdc:HDC LOCAL ps:PAINTSTRUCT .IF uMsg==WM_DESTROY invoke PostQuitMessage,NULL .ELSEIF uMsg==WM_CHAR push wParam pop char invoke InvalidateRect, hWnd,NULL,TRUE .ELSEIF uMsg==WM_PAINT invoke BeginPaint,hWnd, ADDR ps mov hdc,eax invoke TextOut,hdc,0,0,ADDR char,1 invoke EndPaint,hWnd, ADDR ps .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp end start گویا ساده ترین کاری که در نمایش پنجره انجام شده، نمایش یک کاراکتر فاصله است که طبیعتا تاثیر ظاهری خاصی ندارد. توابعی مثل InvalidateRect و BeginPaint و TextOut و ... جزو توابع متعارف API ویندوز هستند که تقریبا هیچ برنامه ای را نخواهید یافت که آنها را بکار نبرده باشد. m_asadpoor 11 تير 1389, 18:58واقعاً متشکرم.کمک بزرگی کردید.موفق و پایدار باشید سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 596]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن