NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 5045 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 3 از 3

موضوع: اسمبلی

  1. #1
    کاربر علاقه مند morteza01 آواتار ها
    تاریخ عضویت
    Dec 2009
    نوشته ها
    56
    تشکر
    43
    تشکر شده 31 بار در 19 پست

    پیش فرض اسمبلی

    سلام
    من تازه دارم اسمبلی برای avr یاد می گیرم و یه اشکالی دارم که توی برنامه زیر:
    ldi r16,25

    jmp b
    ldi r18,255
    out 0x17,r18
    out 0x18,r18


    b:
    ldi r21,79
    ret

    end:
    rjmp end
    ;end
    که معنای خاصی نداره ولی به عنوان مثال اوردم که چرا وقتی به دستور ret می رسه ، برنامه دوباره از خط اول (0x0000) شروع می شه؟ و بر نامه رو چطور تغییر بدیم تا با رسیدن به ret ، برنامه از خط ldi r18,255 ادامه یدا کنه؟

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    دستورات پرش (jmp) بازگشت ندارن . اون دستورات مربوط به "زیر برنامه" هست که بازگشت (ret) دارن.
    علت اینکه به 0 بر میگرده هم اینه که استک خالیه (دستور jmp پروگرم کانتر رو تو استک ذخیره نمیکنه)
    برای حل این مشکل یا از دستورات زیر برنامه استفاده کیند (به جای jmp ) یا اینکه به جای ret یه دستور پرش بگذارید.

  4. #3
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    با سلام

    البته برنامه شما همون طور كه اشاره كردين معنا و مفهوم خاصي رو نداره ولي براي موردي كه ذكر كرديم بايد برنامه تون رو به صورت زير تغيير بدين


    کد:
    ldi r16,25
    
     jmp b
    
    L1:   ldi r18,255
          out 0x17,r18
          out 0x18,r18
    
    
    b:   ldi r21,79
         jmp L1
    
    sjmp $
    
    end
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •