اطلاعیه

Collapse
No announcement yet.

ضرب 16 بیتی

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

    ضرب 16 بیتی

    :redface: :redface:
    ادمهای خوب تو eca خیلی پیدا میشه

    #2
    پاسخ : ضرب 16 بیتی

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

    دیدگاه


      #3
      پاسخ : ضرب 16 بیتی

      تشکر.
      ادمهای خوب تو eca خیلی پیدا میشه

      دیدگاه


        #4
        پاسخ : ضرب 16 بیتی

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

        دیدگاه


          #5
          پاسخ : ضرب 16 بیتی

          منظورتون رو متوجه نمیشم.مگر مقداری که در r3 r0 r1 r2 هست 8 بیتی خب منم بطور متوال بر 10 تقسیم کردم
          باید r0,r1 را تفسیم بر 8 کنم

          و r2,r3 را هم تقسیم بر8
          ادمهای خوب تو eca خیلی پیدا میشه

          دیدگاه


            #6
            پاسخ : ضرب 16 بیتی

            در برنامه ای که متن آن را قرار دادید، r0 تا r3 بصورت مستقل از هم نمایش داده می شوند و به همین دلیل است که در هنگام نمایش، معادل هر بایت آن را بصورت مجزا مشاهده می کنید. اما مجموع این 4 بایت تشکیل یک عدد واحد را می دهند که برای نمایش کل عدد باید تمام آنها با هم در محاسبات شرکت داده شوند. لازمه این امر دسترسی به یک روتین تقسیم 32 بیت به 8 بیت (یا 16 بیت) است که در فایل ضمیمه ای که در پست زیر قرار داده شده، یک روتین تقسیم 32 بر 16 بیت بصورت بدون علامت وجود دارد و می توانید از آن استفاده کنید:

            http://www.eca.ir/forum2/index.php?t...2942#msg292942
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              #7
              پاسخ : ضرب 16 بیتی

              اما من چیزی جز ضرب وتقسیم ومکمل ندیدم :angry: :angry: :angry:
              ادمهای خوب تو eca خیلی پیدا میشه

              دیدگاه


                #8
                پاسخ : ضرب 16 بیتی

                برای انجام منظور مورد نظر شما (با توجه به تصحیحی که در پست اول تاپیک انجام داده اید و اصل صورت مسئله را بیان کرده اید) و به دلیل اینکه حاصل تقسیم 300 بر 255 یک عدد با اعشار زیاد است و حتی در صورت ضرب وتقسیم مورد نظر، باز هم نتیجه دقیقی بدست نمی آید، روش دیگری به غیر از ضرب و تقسیم پیشنهاد می شود و آن استفاده از Lookup Table است. در واقع شما 256 عدد مجزا در خروجی ADC دارید که به ازای هر یک از این اعداد می خواهید اعداد معادلی را روی LCD نمایش دهید. بنابراین می توانید این اعداد را از طریق DB (که منظور Define Byte است) موقع پروگرام شدن در Flash میکروکنترلر قرار دهید و در هنگام اجرای برنامه آنها را از حافظه بخوانید و روی LCD نمایش دهید. در همین رابطه به توضیح دستورات اسمبلی MOVC A,@A+DPTR و MOVC A,@A+PC مراجعه کنید.
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #9
                  پاسخ : ضرب 16 بیتی

                  ایول استاد . :applause:گرفتم تا حالا این کارو رو انجام نداده بودم .با این دستوری که گفتید یه چیزای به یادم اومد .صدرصد مشکلم حل شد. :wow:
                  ادمهای خوب تو eca خیلی پیدا میشه

                  دیدگاه

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