اطلاعیه

Collapse
No announcement yet.

نحوه ی آدرس دهی به هر بایت از حافظه و بهم پیوستن چند بایت به هم (؟)

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

    نحوه ی آدرس دهی به هر بایت از حافظه و بهم پیوستن چند بایت به هم (؟)

    دوستان میدونیم که هر هشت بیت یه بایت هست و هر بای دارای یه آدرس برای دسترسی به هشت بیت اطلاعات .حالا اگه این هشت بیت رجیستر باشه که یه اسمی براش میزارن مثلا EEDR که باز منظور همون آدرس هست.
    حالا بر همین دانسته من میخام تو رجیستر هشت بیتی EEDR که برای EEPROM میکرو هست اطلاعاتی بنویسم :

    همونطور که از تصویر مشخصه - من میتونم یه داده هشت بیتی باینری EEDR = 0b11111111 روی این بایت بنویسم که نهایت میشه عدد 255 .
    و در بعد هم میتونم اینو فراخانی کنم که عدد 255 به من میده. خوب تا اینجا مشکلی نبود . ولی داستان از اونجا شروع میشه که من بخوام عدد بیشتر از 255 رو ذخیره کنم - حالا همین دلیلی بود که من این تاپیک و شروع کردم -
    حالا مثلا INT نیاز به 4 بایت حافظه نیاز داره - در صورتی که آدرس ها همشون نهایت به یه بایت که هشت بیت هست اشاره میکنن - من چطور باید 4 بایت حافظه رو بهم ربط بدم که بیت صفر از بایت اولم کم ارزشترین (LSB) کمترین مقدار رو بگیره و بیت هفتم از بایت چهارم بیاد پر ارزشترین مقدار(MSB) رو بگیره؟؟یا به ظاهر من چطور باید این 4 بایت که میشن 32 بیت رو مثل این بهم بچسبونم؟؟



    , و چطور باید خونه های این بایت ها رو بخونم و بفهمم آیا INT بوده یا چیز دیگه ای ؟؟

    و سوال دیگه اینکه این خونه ها آدرس دارن خوب مثلا میگیم تو آدرس 1000 بنویس - خوب آدرس ها که تو حافظه نوشته نیست - آیا سی پی یو میآد هزارتا از بایت هارو میشماره تا برسه به آدرس هزار یا داستان یچی دیگست؟؟


    ممنونم.
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    #2
    پاسخ : نحوه ی آدرس دهی به هر بایت از حافظه و بهم پیوستن چند بایت به هم (؟)

    سلام
    میکرو که شما دارین در موردش میگین یک میکرو هشت بیتی هست یعنی ما همیشه به یک بایت از حافظه میتونیم دسترسی داشته باشیم
    بنابر این مدیریت هر داده بیشتر از یک بایت به عهده ماست اگر با زبان اسمبلی بنویسیم . مثلا یک داده 32 بیتی به چهار بایت تقسیم و در حافظه قرار میگیره و همیشه این چهار بایت در تمام کامپایلر ها به ترتیب در حافظه قرار میگیره و اسمبلی نویس هم همین کارو میکنن که مدیریت راحت تر باشه. مثلا اگر بایت اول در ادرس 100 باشه بایت اخر در ادرس 103 هست. کامپایلرها این کار را به صورت اتوماتیک انجام میدن و مدیریت میکنن و خودشان به خاطر میسپارند که چه کرده اند.
    برای دسترسی به یک خانه رم که میشه یک بایت در هر کجا که باشد فرقی نداره اینجوره که ما یا کامپایلر ادرس ان را در یک ریجستر قرار میدهیم و سی پی یو خودش مستقیم میره سر اون ادرس و مقدار ان را در یک ریجستر دیگر به ما تحویل میده و شمارشی در کار نیست . (((وقتی میگم ما منظورم اسمبلی است وقتی میگم کامپایلر منظور یک زبان سطح بالاست))
    جدیدترین ویرایش توسط kamy007; ۲۰:۴۵ ۱۳۹۶/۰۷/۰۳.

    دیدگاه


      #3
      پاسخ : نحوه ی آدرس دهی به هر بایت از حافظه و بهم پیوستن چند بایت به هم (؟)

      سلام این کتابخونه رو براتون میزارم شاید به کارتون بیاد. برای ارسال یک متغیر اینتجر شما باید آنرا به بایت تبدیل کنید و ارسال کنید برای مثال x=0x23a5, int x رو به این صورت روی حافظه می نویسیم. EEPROM_write(address, x>>8); که بایت پرارزش ماست و بعد هم بایت کم ارزش رو ارسال می کنیم EEPROM_write(address, x) و برای خواندن هم اگر متغیردریافتی ما اینتجر باشد ابتدا بایت پرارزش را از آدرس مورد نظر دریافت می کنیم مثلا char byte;وbyte=EEPROM_read(address) و x= byte<<8 و بعد از آن بایت کم ارزش را می خوانیم. byte=EEPROM_read(address), و
      x|= byte به این صورت متغیر اینتجر ما بدست میاد.
      جدیدترین ویرایش توسط m:mousa; ۲۰:۵۰ ۱۳۹۶/۰۷/۰۳.

      دیدگاه


        #4
        پاسخ : نحوه ی آدرس دهی به هر بایت از حافظه و بهم پیوستن چند بایت به هم (؟)

        ممنون دوستان.
        حالا این تازه دو بایت بوده که قرار بود یجا دخیره و فراخانی بشه.
        برفرض اگه یه هارد داشتیم و خاستیم یه فیلم که تشکیلی شده از از میلیون ها بایت . اونوقت اونارو چجوری ذخیره میکنن؟؟
        و چطور میخونن!! چطور اینهمه بایت قاطی نمیشه و مشکلی براش پیش نمیآد؟!!
        یا مثلا ما یه رم میکرو وصل میکنیم به میکرو اونو چطوریه!!!

        لینکی چیزی ندارین که بیام اینارو بفهمم که چزور کار میکنن؟!!!
        به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
        (پيش به سوي هدف)

        دیدگاه

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