legion_of_doom bunu yazdı: ----------------------------- Allura bunu yazdı: -----------------------------
böle bi eğitim setine can kurban eyvallah asm önemlidir boşverin vbyi asm rlz -----------------------------
bana piyasada asm ile yapılmş büyük çaplı bir program gösterir misin? Ben sana vb de gösterebilrim! Asm yi öğrenen adamlar program yazmak için öğrenmzler. mikroişlemci programalama yada crackingte kullanılır genellikle. Onun dışında bir form koyup bir buton koyum bir mesaj verdirmek için onlarca kod yazıyorsun. Burada program yazmak akıl harcı değil. Zaten alt seviyeli bir dil, yani programıcı dostu değil :) donanım programlama yapabilirsin onla da bu iş profların işi zaten.. ----------------------------- Tüm işletim sistemlerinin boot manager ve loader ları, birçok ileri seviye virüs, çok büyük projelerin bazı modülleri (örneğin nero'nun dma erişimi modülü), assembly ile yazılır. Visual basic ve assembly aynı kulvarda değil dostum, karşılaştırma yapman yanlış, bir reserve engineer assembly bilmese program kırabilir mi, o çok sevdiğin programların, crack ini keygenini patch ini assembly e borçlusun. Bu yüzden kimseyi soğutmaya hakkın yok. Ben de Asm ile windows programları yazılmasından hoşlanmıyorum, çünkü her işi windows apileri yapıyor ve apiler zaten C ile yazılmış kodlar olduğu için assembly nin kullanım amacı olan hız, C nin önüne zaten geçemiyor, zaten assembly ile windows programları yapılmamasının sebebi bu, ancak sandığın gibi bir button tıklamak için yüzlerce kod yazılmıyor, C ile hemen hemen aynı kodlar yazılıyor, button nesnesi tanımlanıyor, gerekli apilerle iş yürütülüyor. C ile yazılmış ve Asm ile yazılmış aynı windows programını aşağıda koyuyorum, siz karar verin.... //////////////////////////////////////////////////////// C İLE YAZILMIŞ #include
long APIENTRY MainWndProc(HWND, UINT, UINT, LONG);
char ClassName[]="Window Class"; char AppName[]="Application" ;
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { HWND hwnd; WNDCLASSEX wc; MSG msg;
int girdi;
wc.cbSize = sizeof(WNDCLASSEX) ; wc.style = CS_HREDRAW|CS_VREDRAW ; wc.lpfnWndProc = (WNDPROC)MainWndProc; wc.cbClsExtra = NULL; wc.cbWndExtra = NULL; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL,IDI_APPLICATION) ; wc.hCursor = LoadCursor (NULL,IDC_ARROW); wc.hbrBackground = COLOR_BTNFACE; wc.lpszMenuName = NULL; wc.lpszClassName = ClassName; wc.hIconSm = wc.hIcon ;
RegisterClassEx(&wc);
hwnd = CreateWindowEx(NULL, ClassName, AppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow (hwnd,SW_SHOW); UpdateWindow (hwnd);
while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam);
}
long APIENTRY MainWndProc( HWND hWnd, // window handle UINT message, // type of message UINT wParam, // additional information LONG lParam) // additional information { if (message==WM_DESTROY) { PostQuitMessage (NULL); } else { return (DefWindowProc(hWnd, message, wParam, lParam)); } return; } ////////////////////////////////////////////////////////////////////////// ASSEMBLY İLE YAZILMIŞ.. .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib WinMain proto :DWORD,:DWORD,:DWORD,:DWORD .data ClassName db "Window Class",0 AppName db "Application",0 .data? hwnd HWND ? girdi LPSTR ? .code start: invoke GetModuleHandle,NULL mov hwnd,eax invoke GetCommandLine mov girdi,eax; invoke WinMain,hwnd,0,girdi,SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG 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 hInst pop wc.hInstance invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax mov wc.hbrBackground,COLOR_BTNFACE mov wc.lpszMenuName, NULL; mov wc.lpszClassName,OFFSET ClassName invoke RegisterClassEx,ADDR wc invoke CreateWindowEx,NULL,ADDR ClassName,\ ADDR AppName, WS_OVERLAPPEDWINDOW,\ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,\ CW_USEDEFAULT, NULL, NULL, hwnd , NULL mov hwnd,eax invoke ShowWindow,hwnd,CmdShow invoke UpdateWindow,hwnd tamamla: invoke GetMessage,ADDR msg,NULL,0,0 or eax,eax je yolla invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg jmp tamamla yolla: mov eax,msg.wParam ret WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
@@: cmp uMsg,WM_DESTROY jne @F invoke PostQuitMessage,NULL xor eax,eax ret
@@: invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret
WndProc endp End start /////////////////////////////////////////////////////////////////////////////// Kodlar Pulsar'a aittir... |