اطلاعیه

Collapse
No announcement yet.

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

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

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

    سلام دوستان





    باید برای مداری که عکسشو گذاشتم برنامه ای بنویسم که بوسیله سویچهایی که به پورت B وصله یه عدد 8 بیتی بدیم به میکرو ( عدد اول ) بعد یه بار کلیدی که به بیت چهارم پورت A وصله رو فشار میدیم و بعد عدد دوم رو به همون شکل میدیم میفرستیم به میکرو. بعد دوباره با فشار دادن همون کلید نسبت به برزگی, کوچکی و مساوی بودن عدد ها یکی از Led ها روشن بشه.


    حالا مشکل اینجاست که بزرگی و کوچکی عددها رو چطوری تشخیص بدم؟

    مثلا تو زبان سی میشد با یه if شرط A<B رو تست کرد و نسبت به اون یه کاری کرد ولی تو اسمبلی گیر کردم.

    اگه ممکنه کمکم کنین.

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

    کد زیر کد اسمبلی تولید شده توسط کامپایلر CCS برای این کار هست.
    بعضی وقتها که نمیدونید چطوری یه چیزی رو تو اسمبلی بنویسید میتونید از یه کامپایلر سی کمک بگیرید.
    کد:
    .................... int8 a; 
    .................... int8 b; 
    .................... if (a>b) 
    01D2: BCF  STATUS.RP0
    01D3: MOVF  a,W
    01D4: SUBWF b,W
    01D5: BTFSC STATUS.C
    01D6: GOTO  1D8
    .................... {a=0;} 
    01D7: CLRF  a
    در ضمن اون مدارتون هم فقط تو پروتیوس شاید کار کنه. اونم تازه شاید!

    دیدگاه


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

      سلام
      خوشحالم که می بینم هنوز هم اسمبلی طرفدار داره
      من که خودم تمامی پروژه ها رو با اسمبلی انجام می دم و هیچ مشکلی هم ندارم و بسیار بسیار بیشتر از C لذت می برم از کد نویسی
      برای مقایسه بزرگتری هم می تونی از دستور آماده (Compare F Skip If Greater) استفاده کنی یا اینکه اول a رو از b کم کنی و بعد بیت کری رو چک کنی
      و در نتیجه بزرگتر رو تشخیص بدی
      به همین راحتی
      فروش يک عدد سيم کارت با شماره 09126005897

      دیدگاه


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

        نوشته اصلی توسط zouyousefain
        سلام
        خوشحالم که می بینم هنوز هم اسمبلی طرفدار داره
        من که خودم تمامی پروژه ها رو با اسمبلی انجام می دم و هیچ مشکلی هم ندارم و بسیار بسیار بیشتر از C لذت می برم از کد نویسی
        برای مقایسه بزرگتری هم می تونی از دستور آماده (Compare F Skip If Greater) استفاده کنی یا اینکه اول a رو از b کم کنی و بعد بیت کری رو چک کنی
        و در نتیجه بزرگتر رو تشخیص بدی
        به همین راحتی
        از راهنماییتون ممنونم.

        تو این انجمن که نتونستم کمک بگیرم و فقط مسخره کردن. البته خدا رو شکر با کمک کاربرای این انجمن تونستم به جواب برسم.

        دیدگاه


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

          با چه نرم افزاری باید نوشت اسمبلی را در پی ای سی

          دیدگاه


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

            نوشته اصلی توسط بنیامین خلیلی
            با چه نرم افزاری باید نوشت اسمبلی را در پی ای سی
            برای کد نویسی از ادیتور ساده ویندوز هم میتونی استفاده کنی. کافیه پسوند فایل رو از txt به asm تغییر بدی.

            برای کامپایل هم از برنامه MPASM که همراه MPLAB نصب میشه استفاده کن.

            از اینجا میتونی آخرین ورژن MPLAB رو ( البته آخرین ورژن قبل از سری MPLAB X ) دانلود کنی.

            دیدگاه


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

              این نرم افزار فقط اسمبلی می تونیم بنویسیم سی نمی شه

              دیدگاه


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

                نوشته اصلی توسط simakarimi
                از راهنماییتون ممنونم.

                تو این انجمن که نتونستم کمک بگیرم و فقط مسخره کردن. البته خدا رو شکر با کمک کاربرای این انجمن تونستم به جواب برسم.
                دوست عزیز سلام.
                شما کجا سوال پرسیدین که مسخره کردن؟ هرکی مسخره کرده، گزارش بدین تا مسئولان سایت خدمتش رسیدگی کنن.
                مورد بعدی اینه که یه خرده بد وقتی اومدین انجمن....بیشتر بچه ها مشغول امتحانات هستن....
                و نهایتا هم اینکه خدا رو شکر که جواب گرفتین.

                دیدگاه


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

                  نوشته اصلی توسط شاهرخ مستقیمی
                  دوست عزیز سلام.
                  شما کجا سوال پرسیدین که مسخره کردن؟ هرکی مسخره کرده، گزارش بدین تا مسئولان سایت خدمتش رسیدگی کنن.
                  مورد بعدی اینه که یه خرده بد وقتی اومدین انجمن....بیشتر بچه ها مشغول امتحانات هستن....
                  و نهایتا هم اینکه خدا رو شکر که جواب گرفتین.
                  توی این سایت نبوده

                  دیدگاه


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

                    نوشته اصلی توسط freedom_truth

                    در ضمن اون مدارتون هم فقط تو پروتیوس شاید کار کنه. اونم تازه شاید!

                    نوشته اصلی توسط شاهرخ مستقیمی
                    دوست عزیز سلام.
                    شما کجا سوال پرسیدین که مسخره کردن؟ هرکی مسخره کرده، گزارش بدین تا مسئولان سایت خدمتش رسیدگی کنن.

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

                    به هر حال گذشت و من از این به بعد سعی میکنم توی انجمن دیگه فعالیت کنم. هم کاربراش با ادب تر هستن هم اطلاعاتشون بالاس و به سوالا خوب جواب میدن.

                    دیدگاه


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

                      نوشته اصلی توسط freedom_truth
                      کد زیر کد اسمبلی تولید شده توسط کامپایلر CCS برای این کار هست.
                      بعضی وقتها که نمیدونید چطوری یه چیزی رو تو اسمبلی بنویسید میتونید از یه کامپایلر سی کمک بگیرید.
                      کد:
                      .................... int8 a; 
                      .................... int8 b; 
                      .................... if (a>b) 
                      01D2: BCF  STATUS.RP0
                      01D3: MOVF  a,W
                      01D4: SUBWF b,W
                      01D5: BTFSC STATUS.C
                      01D6: GOTO  1D8
                      .................... {a=0;} 
                      01D7: CLRF  a
                      در ضمن اون مدارتون هم فقط تو پروتیوس شاید کار کنه. اونم تازه شاید!
                      اولا شما چرا نیمه ی خالیه لیوان رو میبینین؟؟تو این ارسال شما راهنمایی نشدین؟ فقط تمسخر بوده؟؟

                      نوشته اصلی توسط شاهرخ مستقیمی
                      شما کجا سوال پرسیدین که مسخره کردن؟ هرکی مسخره کرده، گزارش بدین تا مسئولان سایت خدمتش رسیدگی کنن.
                      نوشته اصلی توسط simakarimi
                      البته باید مدیرا همه ارسالهارو بخونن و خودشون رسیدگی کنن.
                      یعنی من حتی متوجه نشدم که پست دوستمون رو شما به دید تمسخر نگاه میکنین!! وگرنه تک تک ارسالها رو میخونم.(کل این انجمن PIC به جز حدود 4-5 صفحه که تازه ارسال شده و فرصت نکردم، همه ش رو باز بینی کردم و این بازبینی جمعا حدود 1ماه وقت برده. خیلی راحت به خودتون اجازه ی قضاوت میدین)

                      بعدش هم، یه خرده خیلی حساس شدین.یه دونه سوال پرسیدین، یه حرفی هم زده شده که مخاطب حتی شما نبودین! طراح اون مدار بوده. خیلی به دل نگیرین. حالا اگه هم خیلی ناراحت شدین....فرقی به حال انجمن ECA با سابقه ی بیش از 9 سال فعالیت و این همه کاربر نمیکنه.
                      به هر حال....
                      هرکجا هستین،موفق باشین. :job:

                      دیدگاه


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

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

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

                        ضمنا یه جا یکی بهم این کد رو داد ولی هیچی ازش نفهمیدم:
                        کد:
                          .................... int8 a;
                          .................... int8 b;
                          .................... if (a>b)
                          01D2: BCF  STATUS.RP0
                          01D3: MOVF  a,W
                          01D4: SUBWF b,W
                          01D5: BTFSC STATUS.C
                          01D6: GOTO  1D8
                          .................... {a=0;}
                          01D7: CLRF  a
                        در مورد این کدها هم بگم که یا خواسته باهاتون شوخی کنه یا هم چیزی بارش نیست و با نوشتن دو سه تا دستور خواسته بگه منم هستم. اهمیت ندین و وقتتون رو هم با اینطور آدما به هدر ندین.
                        هیچی دیگه... ما شدیم "اینطور آدما" دیگه ... خیلی خب. :smile:

                        دیدگاه


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

                          ایول. چه عجب دیدیم یکی از اسمبلی استفاده میکنه. باید ۲ تا عدد از همم کم کنید. به این صورت که اولین عدد بریزید توی وورک رجیستر و بعد توسط دستور subwf مقذار وورک رجیستر از فایل رجیستر کم کنید و بعذ توسط ذستور btfss status,c تشخیص بدید که عدد منفی هست یا مثبت . اگر منفی بودش کری صفر میشه و اگر مثبت بود کری یک میشه.
                          طب اسلامی

                          دیدگاه

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