اطلاعیه

Collapse
No announcement yet.

سوال از اسمبلی avr

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

    سوال از اسمبلی avr

    سلام دوستان
    سوال : برنامه ضرب دو عدد 18.8125 و 23.125
    که 18.8125 را در رجیستر R20,R21 و 23.125 را در رجیستر R22,R23 قرار می دهیم
    CLR R2
    LDI R20,$68
    LDI R21,$09
    LDI R22,$90
    LDI R23,$0B
    FMULS R23,R21
    MOVW R19:R18,R1:R0
    FMUL R22,R20
    ADC R18,R2
    MOVW R17:R16,R1:R0
    FMULSU R23,R20
    SBC R19, R2
    ADD R17,R0
    ADC R18,R1
    ADC R19,R2
    FMULSU R1,R22
    SBC R19,R2
    ADD R17,R0
    ADC R18,R21
    ADC R19, R2
    چرا در خط 6 از FMULSاستفاده شده است ؟ چرا از MUL استفاده نکرده است؟یا از FMUL ؟


    متشکرم

    #2
    پاسخ : سوال از اسمبلی avr

    درود
    خوب هر دستور کاربرد خودش رو داره، اگر اشتباه نکنم FMULS برای ضرب دو عدد علامت دار اعشاری به کار میره، در حالی که MUL برای ضرب دو عدد صحیح بدون علامت و FMUL برای ضرب دو عدد اعشاری بدون علامت به کار میره، اگر این دستورات رو در جای مناسب استفاده نکنیم محاسبات اشتباه انجام میشه.
    از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
    هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
    اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
    اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
    شاد و موفق باشید

    دیدگاه


      #3
      پاسخ : سوال از اسمبلی avr

      سلام دوستان

      در R21 , R23 قسمت اعداد صحیح می باشد چرا از MUL استفاده نشده؟

      دیدگاه


        #4
        پاسخ : سوال از اسمبلی avr

        فکر میکنم بهترین کار این باشه که شما این برنامه رو به برنامه نسبتا کاملی که قابل اسمبل شدن باشه تبدیل کنی و با AVR Studio اون رو اسمبل کنی، بعد توسط شبیه سازش برنامه رو خط به خطر اجرا کنی و ببینی که دقیقا این رجیسترها در این حالت چطور مقدار دهی میشند و اگر دستروات دیگه بگذارید چطور مقدار دهی میشند، اینجوری هم قسمتهای مبهم کار این برنامه رو بهتر متوجه میشید هم اینکه ایرادات احتمالی که در اثر اشتباه نوشتن این کدهای نسبتا مشابه ممکن هست به وجود بیاد رو متوجه میشید، من هم طبق عادتی که به دستورات AVR داشتم موقع برنامه نویسی اسمبلی PIC سری 16 توی محاسبات اینچنینی گیج شده بودم اما بعد که برنامه رو نوشتم و خط به خط توی محیط شبیه ساز عملکردش رو مشاهده کردم خوب متوجه شدم و مشکل حل شد. متاسفانه خودم این روز ها درگیر هستم و وقت آزادی به اون صورت ندارم اما اگر فرصت شد خودم هم اینکار رو میکنم که اگر احیانا شما تا اون موقع متوجه نشده بودی بتونم درست توضیح بدم.
        خدمت برنامه نویسان اسمبلی ارادت داریم :smile:
        موفق باشی
        از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
        هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
        اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
        اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
        شاد و موفق باشید

        دیدگاه

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