اطلاعیه

Collapse
No announcement yet.

برنامه نویسی به زبان اسمبلی

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #76
    پاسخ : برنامه نویسی به زبان اسمبلی

    دقیقا!
    جوابتون جامع و کامل است. دیگه بحثی نیست. موفق باشید.
    جناب طراح؛ منتظر پست های جدید شما میمانم.
    ارادتمند.

    دیدگاه


      #77
      پاسخ : برنامه نویسی به زبان اسمبلی

      برای ذکر یک نمونه عملی در رابطه با مباحث اخیر، به یکی از کاربردهایی که شخصا با آن در صنعت مواجه هستم اشاره می کنم تا مسئله سرعت بالای پردازش بیشتر مصداق عملی پیدا کند.
      در درایورهای سرو موتور AC که دقت چرخش در هر دور 10000 قسمت است و موتور تا 50 دور در ثانیه چرخش دارد، اگر ضریب چرخ دنده الکترونیکی برابر یک باشد، برای ایجاد حداکثر سرعت چرخش همزمان با حداکثر دقت، لازم است 500000 پالس در ثانیه ایجاد شود. در کاربردهای رباتیک و CNC که لازم است تعداد پالس ها دقیق و شمارش شده باشد، به ازای تولید هر پالس یک وقفه ایجاد می شود که معادل 500000 وقفه در ثانیه است. بنابراین به ازای کلاک 16 مگاهرتز، کنترلر مبتنی بر AVR تنها 80 سیکل برای اداره تمام این وقفه ها و سایر موارد نرم افزاری فرصت دارد. تازه این در صورتی حاصل می شود که هر دو لبه کلاک در یک وقفه ایجاد شوند.اگر بتوان ضریب چرخ دنده الکترونیک درایور را مثلا 10 در نظر گرفت، تعداد وقفه لازم به 50000 کاهش می یابد و در بین هر وقفه برای میکروکنترلر 800 سیکل زمان وجود دارد. حال اگر وقفه های دیگری مانند وقفه های ارسال و دریافت سریال و سایر تایمر ها و منابع دیگر هم بصورت همزمان فعال باشند، اداره کلیه موارد فوق تنها توسط یک برنامه اسمبلی کاملا بهینه میسر است و به این طریق می توان با یک AVR ارزان قیمت یک کنترل کننده بسیار گران قیمت طراحی نمود که از طریق روش های برنامه نویسی مانند C و BASIC اجرای آن امری نشدنی خواهد بود.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #78
        پاسخ : برنامه نویسی به زبان اسمبلی

        این خیلی عالیه.
        ما منتظر اعلام یه روز و زمان خاص از طرف شما هستیم...
        الهم عجل لولیک الفرج

        فقط 313 نفر...

        دیدگاه


          #79
          پاسخ : برنامه نویسی به زبان اسمبلی

          نوشته اصلی توسط FAM
          ما منتظر اعلام یه روز و زمان خاص از طرف شما هستیم...
          پاسخ دادن به سوالات بصورت علمی و مستدل معمولا نیازمند زمان کافی برای بررسی ابعاد مختلف صورت مسئله است و نمی توان با روش Chat انتظار جواب گرفتن در یک گفتگوی کوتاه مدت را داشت. شما یا دوستانانتان در ابتدا سوالات خود را مطرح کنید و اگر در مرحله ای نیاز به حضور همزمان در سایت بود، می توان با هماهنگی قبلی آن را به انجام رساند.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #80
            پاسخ : برنامه نویسی به زبان اسمبلی

            با تشکر از شما آقای طراح که اینقدر سخاوتمند هستید در صورت برخورد به مشکل در مورد اسمبلی به همین تاپیک مراجعه میکنم.
            فعلا
            الهم عجل لولیک الفرج

            فقط 313 نفر...

            دیدگاه


              #81
              پاسخ : برنامه نویسی به زبان اسمبلی

              من از ابتدای بحث تا به انتها رو مطالعه کردم و خوشحالم که شما اینقدر در امر برنامه نویسی اسمبلی خبره هستید
              طرحی در سر دارم که خیلی وقته که می خواهم عملی کنم اما بدلیل نداشتن یک هم فکری متصفانه در جا می زنم
              این طرح در واقع میشه گفت کپی شده از .NET ماکرویافته
              کامپایلری برای همه میکروها و برای همه زبانها
              بدین صورت که یک زبان میانی که شبیه زبان اسمبلی تعریف شود و همه زبانها مانند بیسیک و C به این زبان تبدیل شوند و برای هر میکرو نیز یک اسمبلر برای تعریف این زبان میانی به زبان اسمبلی نوشته شود
              بدین صورت با نوشتن یک کتابخانه برای یک میکرو می توانید آن را در برای سایر میکرو ها(تا جایی که مربوط به سخت افزار خاصی نباشد) و سایر زبانها استفاده کرد
              برای زبان میانی هم چندین زبان مختلف اسمبلی مثل AVR ، ARM,8051,PIC و خود x86 رو با هم مقایسه کردم که تفاوت اساسی با هم نداشتن و فقط در سایز دستوراتی که اجرا می کنند (8و16 یا 32) و نو رجیستر با هم اختلاف دارد (مثل در x86 رجیسترهای A,B,C,D کاربرد عمومی دارند، یا در AVR ، هم R0-R31) که این رو هم میشه با استفاده از زبان میانی ماکروسافت که برای .NET نوشته ( این همان زبانی است که تمام زبانهای تحت .NET به آن تبدیل می شود مانند VB.NET و C# یا ...) ، به نام IL یا MSIL تا حدی حل کرد. (البته همین الان بگم قرار نیست همه دستورات این زبان رو باز خوانی واسه میکرو کنیم چون این زبان ، زبان شی گرا است ، که مفاهیم خیلی پیچیده برنامه نویسی داره )
              اچون این کار جوری که باید همه جوانب رو برای میکرو در نظر گرفت کار رو سخت می کنه
              زبان میانی IL بدین شکل کار می کنه که هسته مرکزی اون یک پشته است که شما برای انجام هر کارعملیاتی (مثل عملیات حسابی ، پرش با شرط و ..) نیاز به گذاشت یک سری مقادیر در پشته هستید و Cpu با توجه به این مقادیر و دستور مورد نظر کاری که شما می خواهید رو انجام می دهد
              اگه علاقه مند هستید بیشتر توضیح می دهم و اگر نه بیخودی تایپکتون رو شلوغ نکنم
              هیچ کس و هیچ چیز نمی تونه مانع رسیدنت به آرزوهات بشه مگر خودت

              دیدگاه


                #82
                پاسخ : برنامه نویسی به زبان اسمبلی

                صاحب صلاحیت ترین فردی را که در اعضای فعلی این انجمن برای پاسخگویی به سوال شما می شناسم، جناب reza_agha هستند و درباره آن قسمتی از مطلب که مربوط به اسمبلی AVR و XMEGA باشد می توانم راهنمایی مورد نظر را انجام دهم.اما به نظر می رسد این بحث متناسب با این تاپیک نباشد و احتیاج به تاپیک مستقلی دارد که می توانید نسبت به تشکیل آن در یک انجمن مناسب اقدام کنید.
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #83
                  پاسخ : برنامه نویسی به زبان اسمبلی

                  با تشکر از جناب طراح بابت راهنماییشون
                  یکی از دردسرهایی که هنگام کار با زبان اسمبلی وجود داره استفاده از نوشتن مداوم کدهای اسمبلی است. به طوری که چند خط برنامه را مجبور هستید چندین بار تکرار کنید که این کار هم خسته کننده و هم خوانایی برنامه را بشدت پایین می آورد. برای اینکار می توانید از دستور .Macro که یک راهنما برای اسمبلر می باشد استفاده کنید. (کاری که در کامپایلرهایی مانند کد ویژن انجام می شود)
                  این مثال را عینا از راهنمای Atmel برای شما می آورم
                  .MACRO SUBI16 ; Start macro definition
                  subi @1,low(@0) ; Subtract low byte
                  sbci @2,high(@0) ; Subtract high byte
                  .ENDMACRO ; End macro definition
                  .CSEG ; Start code segment
                  SUBI16 0x1234,r16,r17 ; Sub.0x1234 from r17:r16
                  در این حال شما می توانید در قسمت کد برنامه از دستور SUBI16 استفاده کنید یعنی مثل این می مانند که یک دستور جدید ساخته اید (با استفاده از دیگر دستورات) بدین صورت پارامتر اول به @0 و پارامتر دوم به @1 و پارامتر سوم به @2 در برنامه تان نسبت داده می شود این دستور0x1234,r16,r17 SUBI16 توسط خود اسمبلر به دستور ات
                  subi r16,0x12
                  subi r17,0x34
                  تبدیل می شود. بدین صورت می توانید توابعی را که نیاز دارد مانند جمع دو عدد 32 بیتی یا یک تابع برای نوشتن روی LCD را بدین صورت نوشته و خوانایی برنامه خود را افزایش دهید. ضمنا در اسمبلر avr شما مجاز به داشتن حداکثر 10 پارامتر هستید یعنی @0 تا @9
                  ماکروها می توانند در فایلهای جداگانه ای قرار داشته باشند که به فایل اصلی پیوند زده شده باشند
                  .INCLUDE "macro.inc" ; The included files will not ببخشید در کار آموزشیتون فضولی کردم جناب طراح نمیدون اجازه دارم یا نه اگه نیست ببخشید :mrgreen:
                  هیچ کس و هیچ چیز نمی تونه مانع رسیدنت به آرزوهات بشه مگر خودت

                  دیدگاه


                    #84
                    پاسخ : برنامه نویسی به زبان اسمبلی

                    سلام،
                    وقتی بخواهیم سیستمی رو طراحی کنیم که وسایل جنبی نسبتاً زیادی داره و این وسایل نیازمند رسیدگی بی درنگ (Real-time) هستند اگر بخواهیم به روشهای ابتدایی مثل وقفه ی تایمر، وظایف رو زمانبندی و اجرا کنیم پس از یه مدت برنامه تبدیل میشه به اسپاگتی کد (برنامه ای که خوانا نیست، درک و دیباگ کردنش مشکله، به سادگی قابل تغییر و ارتقا نیست). راه حل این مشکل استفاده از سیستم عامل های بی درنگ یا RTOS است (مانند uc/os-ii، IAR RTOS، FreeRTOS، VxWorks، QnX یا بعضی از توزیع های Real-time کرنل لینوکس). با توجه به اینکه RTOSها تماماً به زبان C یا ++C قابل استفاده هستند متاسفانه برنامه نویس کاملاً اسمبلی نمیتونه از RTOSهای موجود استفاده کنه. به نظر من برای اینکه برنامه هامون به سمت اسپاگتی کد شدن نره بهتره در طراحی سیستم‏های Real-Time فقط روتین های رو که شدیداً محدودیت زمانی دارن (Hard Real-time) و پردازنده فرصت کمی برای رسیدگی داره به عنوان یک Task اسمبلی بنویسیم و در سایر قسمت ها از مزایای RTOSها منتفع بشیم.
                    There is nothing so practical as a good theory. — Kurt Lewin, 1951

                    دیدگاه


                      #85
                      پاسخ : برنامه نویسی به زبان اسمبلی

                      می خوام یه آموزش کلی در باره ی زبان برنامه نویسی AVR به زیان اسمبلی بنویسم(بصورت PDF)
                      دوستان اگه پیشنهاد یا انتقادی در این مورد دارند مطرح کنند. :read:
                      آموزش PIC

                      دیدگاه


                        #86
                        پاسخ : برنامه نویسی به زبان اسمبلی

                        نوشته اصلی توسط sfarm
                        می خوام یه آموزش کلی در باره ی زبان برنامه نویسی AVR به زیان اسمبلی بنویسم(بصورت PDF)
                        دوستان اگه پیشنهاد یا انتقادی در این مورد دارند مطرح کنند. :read:
                        آموزش برنامه نویسی اسمبلی می تواند حداقل شامل دو بخش باشد که بخش اول در مورد روش کار در محیط کامپایلر و بخش دوم و اصلی آن هم در مورد عملکرد دستورات و رجیسترها و ... و مثال های آن باشد. اما یکسری نکات بسیار فنی هم در برنامه نویسی اسمبلی وجود دارد که می توان از آن به "اسمبلی پیشرفته" تعبیر نمود و شرط بیان آن وجود تجربه طولانی در این نوع برنامه نویسی است.
                        اوژن: به معنای افکننده و شکست دهنده است
                        دانایی، توانایی است-Knowledge is POWER
                        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                        دیدگاه


                          #87
                          پاسخ : برنامه نویسی به زبان اسمبلی

                          نوشته اصلی توسط طراح
                          آموزش برنامه نویسی اسمبلی می تواند حداقل شامل دو بخش باشد که بخش اول در مورد روش کار در محیط کامپایلر و بخش دوم و اصلی آن هم در مورد عملکرد دستورات و رجیسترها و ... و مثال های آن باشد. اما یکسری نکات بسیار فنی هم در برنامه نویسی اسمبلی وجود دارد که می توان از آن به "اسمبلی پیشرفته" تعبیر نمود و شرط بیان آن وجود تجربه طولانی در این نوع برنامه نویسی است.
                          چطوره بخش برنامه نویسی مثل help avr studio به چهار بخش تقسیم کنیم
                          قسمت اول :توابع منطقی و محاسباتی قسمت دوم:توابع انشعابی
                          قسمت سوم:توابع انتقال داده قسمت چهارم:توابع کار بر روی بیت ها
                          آموزش PIC

                          دیدگاه


                            #88
                            پاسخ : برنامه نویسی به زبان اسمبلی

                            در پست زیر درباره تقسیم بندی دستورات اسمبلی خانواده AVR توضیح داده شده است:

                            http://www.eca.ir/forum2/index.php?t...1622#msg191622

                            لفظ "توابع" هم معمولا برای دستورات اسمبلی بکار برده نمی شود.
                            اوژن: به معنای افکننده و شکست دهنده است
                            دانایی، توانایی است-Knowledge is POWER
                            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                            دیدگاه


                              #89
                              پاسخ : برنامه نویسی به زبان اسمبلی

                              با سلام خدمت استاد طراح اگه امکان داره این مباحث رو ادامه بدین بی صبرانه منتظریم .
                              نابرده رنج گنج میسر نمی شود مزد آن گرفت جان برادر که کار کرد !

                              دیدگاه


                                #90
                                پاسخ : برنامه نویسی به زبان اسمبلی

                                نوشته اصلی توسط mac_mac_1
                                با سلام خدمت استاد طراح اگه امکان داره این مباحث رو ادامه بدین بی صبرانه منتظریم.
                                با توجه به عدم علاقه اکثر مخاطبان سایت به این مباحث، اگر سوال خاصی برای شما وجود دارد بصورت مشخص آن را بیان کنید تا در فرصت مقتضی به آن پاسخ داده شود.
                                اوژن: به معنای افکننده و شکست دهنده است
                                دانایی، توانایی است-Knowledge is POWER
                                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                                دیدگاه

                                لطفا صبر کنید...
                                X