PDA

View Full Version : تفاوت بین اسمبلی تحت ویندوز و تحت داس



maleknasab
دوشنبه 29 دی 1382, 16:14 عصر
آیا بین اسمبلی تحت ویندوز و تحت داس تفا وت وجود دارد ؟و اگر وجود دارد چه کتاب یا منبعی
برای یاد کیری تحت ویندز سراغ دارید.

Best Programmer
دوشنبه 29 دی 1382, 16:32 عصر
بله بسیار تفاوت وجود دارد . البته اگر مبحث Flat Memory و چند سخنی که در این فورم داشتم بیشتر تفاوت را جواهی دید. ایجا 1 مثال برایت می آورم.


.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

.data
ClassName db "SimpleWinClass",0
AppName db "Our First Window",0

.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: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+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 RegisterClassEx, 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
.IF uMsg==WM_DESTROY
invoke PostQuitMessage,NULL
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start

Best Programmer
دوشنبه 29 دی 1382, 16:40 عصر
البته کتاب حتی اینگلیسی هم کم وجود داره و اصلا Free وجود ندارد. البته کتاب Art of Assembly هست ولی به نظر من اصلا وقت خود را با این کتاب طولانی تلف نکن. چوی اصلا اسمبلی یاد نداده بلکه HLA یاد داده.
اگر خدا عمری دهد و توانی در حال ترجمه و تالیف 1 کتاب حدودا 1000 صفحه ایی هستم ولی چون کنکور دارم به کندی پیش میرود. تنها تا به حال 500 صفحه کار تمام شده.
من تنها کتابی که دیدم در ان حدود 5-6 صفحه اسمبلی تحت Windows 3.1 یاد داده بود کتاب Advanced Assembly هست. جلدش هم زرد هست. اثر Peter Norton .

Inprise
چهارشنبه 01 بهمن 1382, 08:07 صبح
دوست عزیز ، مدیریت حافظه ( و بالتبع نوع برخورد با انواع پایه ) در ویندوز و داس متفاوت هستند که باعث میشه اسمبلرهای تحت ویندوز و داس قدری متفاوت عمل کنند . در همین بخش مبحثی با عنوان تعدادی لینک مفید هست که اونجا چند راهنمای مجمل درباره اسمبلرهای ویندوزی پیدا میکنی .

خوش باشی

maleknasab
چهارشنبه 01 بهمن 1382, 18:22 عصر
ممنون از راهنمایهای دوستان