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

تبلیغات

تبلیغات متنی

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

صرافی rkchange

سایبان ماشین

دزدگیر منزل

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

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

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

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

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

آراد برندینگ

خرید یخچال خارجی

موسسه خیریه

واردات از چین

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

ناب مووی

دانلود فیلم

بانک کتاب

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

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

irspeedy

درج اگهی ویژه

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

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

قیمت فرش

درب فریم لس

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

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

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

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

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

خرید فالوور

بهترین وکیل کرج

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

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

نگهداری از سالمند شبانه روزی در منزل

بی متال زیمنس

ساختمان پزشکان

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

خرید نهال سیب

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

 






آمار وبسایت

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




هواشناسی

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

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
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]
[تعداد بازديد از اين مطلب: 598]

bt

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







-


گوناگون

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


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