PDA

View Full Version : آموزش: High Level Language یا همون HLA



salmanbnd
پنج شنبه 28 مرداد 1389, 10:29 صبح
سلام دوستان
یکی از اسمبلرهایی که کار کردن باهاش می تونه خیلی لذت بخش باشه و از اسمش هم پیداست که سطح بالاست HLA یا High Level Language هست
دوتا لینکی که فکر می کنم می تونه مفید باشه اینجا قرار میدم:
http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/index.html
http://www.movsd.com/index.htm
اگه کسی در این باره مطلب آموزشی داره، ممنون میشم قرار بده (ترجیحا فارسی)

salmanbnd
یک شنبه 31 مرداد 1389, 12:08 عصر
سلام
من هنوز امیدوارم که یکی بیاد کمکم کنه:قلب::خجالت::لبخند:

xman_1365_x
پنج شنبه 04 شهریور 1389, 22:31 عصر
سلام
با اين اسمبلر كار نكردم دارم دانلود مي كنم ببينم چطورياست:لبخندساده:

salmanbnd
پنج شنبه 04 شهریور 1389, 23:31 عصر
سلام دوست عزیز
ممنون که سر زدی
منتظر می مونم ببینیم نتایج کارات چی میشه:لبخندساده:

salmanbnd
یک شنبه 14 شهریور 1389, 05:31 صبح
سلام
کسی نیست کمکم کنه؟:ناراحت::افسرده:

xman_1365_x
یک شنبه 14 شهریور 1389, 14:42 عصر
سلام
کسی نیست کمکم کنه؟:ناراحت::افسرده:

من نگاه كلي كردم
آموزشش هم در همون سايتي كه خودتون گفتين هست!
اسمبلر جالبي داره چون براي مكينتاش،لينوكس و ويندوز يا سيستم عامل ديگه اسمبل مي كنه در يك محيط(با شبيه سازي و سازگاري با اسمبلر هاي معروف مثل tasm,masm,fasm)
اما هاي لول بودنش مثل masm هست كه بيشتر ماكرو نويسي هست.
توي يك اديتور بنويسينو باهاش اسمبل كنيد. انشاالله وقت شه مطالعه مي كنم
حالا مشكلتون چيه باهاش؟
براي آشنايي با دستوراتش هم اين دستور رو در cmd وارد كنين
C:\hla\hla.exe

كد نمونه:


program helloworld;
#linker( "comdlg32.lib" )
#linker( "comctl32.lib" )
?compileAll := true;
?@NoDisplay := true;
?@NoStackAlign := true;
#includeOnce( "stdlib.hhf" )
#includeOnce( "howl.hhf" )

const
applicationName := "Hello World";
formX := w.CW_USEDEFAULT; // Let Windows position this guy
formY := w.CW_USEDEFAULT;
formW := 600;
formH := 600;

static
align( 4 );
bkgBrush_g :dword;
bkgColor_g :dword;


// Form declaration.
// We've got an empty form with no widgets, so this is fairly trivial:

wForm( mainAppWindow );
endwForm

// Must include the following macro invocation to emit the code that the
// wForm macro generated:
mainAppWindow_implementation();


// The following gets called immediately after the main application
// window is created. It must be provided, even if it does nothing.

method mainAppWindow_t.onCreate;
begin onCreate;
end onCreate;




///////////////////////////////////////////////////////////////////////////////
//
//
// The following is mostly boilerplate code for all apps (about the only thing
// you would change is the size of the main app's form)
//
//
///////////////////////////////////////////////////////////////////////////////
//
// When the main application window closes, we need to terminate the
// application. This overridden method handles that situation. Notice the
// override declaration for onClose in the wForm declaration given earlier.
// Without that, mainAppWindow_t would default to using the wVisual_t.onClose
// method (which does nothing).

method mainAppWindow_t.onClose;
begin onClose;

// Tell the winmain main program that it's time to terminate.
// Note that this message will (ultimately) cause the appTerminate
// procedure to be called.

w.PostQuitMessage( 0 );


end onClose;




// When the application begins execution, the following procedure
// is called. This procedure must create the main
// application window in order to kick off the execution of the
// GUI application:

procedure appStart;
begin appStart;
push( esi );

// Create the main application window:

w.GetSysColor( w.COLOR_MENU );
mov( eax, bkgColor_g );
w.CreateSolidBrush( eax );
mov( eax, bkgBrush_g );
mainAppWindow.create_mainAppWindow
(
applicationName, // Window title
w.WS_EX_CONTROLPARENT, // Need this to support TAB control selection
w.WS_OVERLAPPEDWINDOW, // Style
NULL, // No parent window
formX, // x-coordinate for window.
formY, // y-coordinate for window.
formW, // Width
formH, // Height
bkgColor_g, // Background color
true // Make visible on creation
);
mov( esi, pmainAppWindow ); // Save pointer to main window object.
pop( esi );
end appStart;

// appTerminate-
//
// Called when the application is quitting, giving the app a chance
// to clean up after itself.
//
// Note that this is called *after* the mainAppWindow_t.onClose method
// executes (indeed, mainAppWindow_t.onClose, by posting the quit message,
// is what actually causes the program to begin terminating, which leads
// to the execution of this procedure).
procedure appTerminate;
begin appTerminate;

// Clean up the main application's form.
// Note that this will recursively clean up all the widgets on the form.

mainAppWindow.destroy();
w.DeleteObject( bkgBrush_g );

end appTerminate;

// appException-
//
// Gives the application the opportunity to clean up before
// aborting when an unhandled exception comes along:
procedure appException( theException:dword in eax );
begin appException;
raise( eax );
end appException;

// The main program for a HOWL application must simply
// call the HowlMainApp procedure.
begin helloworld;
HowlMainApp();

end helloworld;

salmanbnd
یک شنبه 14 شهریور 1389, 20:55 عصر
سلام
ممنون دوست عزیز
سوال زیاد دارم در این مورد
بررسی می کنم بهت خبر میدم
واقعا ممنون