اطلاعیه

Collapse
No announcement yet.

چند سوال اسمبلی

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

    چند سوال اسمبلی

    سلام من هر کدی رو تو کد ویژن کامپایل میکنم دستورات زیر هم به اسمبلی نوشته میشه
    کد:
    __RESET:
        CLI
        CLR  R30
        OUT  EECR,R30
    
    ;INTERRUPT VECTORS ARE PLACED
    ;AT THE START OF FLASH
        LDI  R31,1
        OUT  MCUCR,R31
        OUT  MCUCR,R30
    
    ;CLEAR R2-R14
        LDI  R24,(14-2)+1
        LDI  R26,2
        CLR  R27
    __CLEAR_REG:
        ST   X+,R30
        DEC  R24
        BRNE __CLEAR_REG
    
    ;CLEAR SRAM
        LDI  R24,LOW(__CLEAR_SRAM_SIZE)
        LDI  R25,HIGH(__CLEAR_SRAM_SIZE)
        LDI  R26,__SRAM_START
    __CLEAR_SRAM:
        ST   X+,R30
        SBIW R24,1
        BRNE __CLEAR_SRAM
    حالا سوالم اینه که چرا رجیستر های r2 تا r14 و sram باید پاک بشند مگه با ریست شدن حتمآ تمامی حافظه sram و رجیسترهای کاربردی ریست(صفر) نمیشن؟
    حالا اگر هم قراره پاک بشه چرا از r2 تا r14 پاک میشه و همه 32 رجیستر کاربردی صفر نمیشه؟
    و سوال دیگه هم اینکه این چند خط زیر برای اینه که بردار ریست از ابتدای حافظه فلش شروع بشه؟ مگه به صورت پیش فرض همین نیست؟
    کد:
    __RESET:
        CLI
        CLR  R30
        OUT  EECR,R30
    
    ;INTERRUPT VECTORS ARE PLACED
    ;AT THE START OF FLASH
        LDI  R31,1
        OUT  MCUCR,R31
        OUT  MCUCR,R30
    یه سوال کلی هم اینکه اگر کلآ این کد ها رو قرار ندیم مشکلی پیش میاد؟
    ممنون از پاسخگوییتون

    کسی نیست کمک کنه؟
    جدیدترین ویرایش توسط اشکان غفارزاده; ۲۱:۲۸ ۱۳۹۵/۰۵/۱۷.
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir


    #2
    پاسخ : چند سوال اسمبلی

    مهندس جان
    بچه ها زیاد به اسمبلی تمایلی نشون نمی دن ولی فکر کنم شما با شبیه سازی این کد تویه مثلا Atmel Studio بتونی جواب بعضی سوالات رو بدست بیاری.

    دیدگاه


      #3
      پاسخ : چند سوال اسمبلی

      ممنون روح الامین جان،ولی سوال من یه جورایی ساختاریه،میدونم این دستورات چیکار میکنند اما میخوام بدونم چرا هر بار بعد ریست باید sram به صورت نرم افزاری پاک بشه،مگه با ریست شدن sram حتماً پاک نمیشه؟ چرا پس براش دستور پاک کردن نوشته میشه؟
      [آموزشی] کنترل رله با پیامک توسط sim800l
      [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
      [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
      [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
      صفحه اینستاگرام : ecdco_ir

      دیدگاه


        #4
        پاسخ : چند سوال اسمبلی

        فکر نکنم خونه های SRAM بعد از ریست پاک بشن و احتمالا آخرین مقدارشونو حفظ میکنن و کدویژن احتمالا برای صفر کردن متغیرهای global (که مقدار اولیه پیشفرضشون صفره) کل SRMA رو بعد از هر ریست صفر میکنه
        البته همونطور که گفتم احتمالا محتوای SRMA بعد از ریست ثابت میمونه و صفر نمیشه که برای مطمئن شدن میشه یه برنامه اسمبلی برای این آزمایش نوشت

        دیدگاه

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