اطلاعیه

Collapse
No announcement yet.

فراخوانی متغیرهای C در کد اسمبلی؟ (کدویژن)

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

    فراخوانی متغیرهای C در کد اسمبلی؟ (کدویژن)

    سلام. برای استفاده از متغیرهای تعریف شده در زبان C (کامپایلر کدویژن) در قسمتی از برنامه که بصورت اسمبلی نوشته شده باید چیکار کرد؟ مثلا یه متغیر دارم بصورت char ch;
    و یه روتین دارم که با اسمبلی و بصورت
    #asm
    ;my routin codes come here
    #endasm
    نوشته شده و میخوام داخل این روتین از همون متغیر ch استفاده کنم.

    #2
    پاسخ : فراخوانی متغیرهای C در کد اسمبلی؟ (کدویژن)

    امیدوارم بدونید که تو اسمبلی چیز به عنوان متغیر وجود نداره و همش فرضه
    یعنی این متغیر یک جای حافظه هست نه بیشتر برای میکرو
    پس باید پیدا کنید که متغیرتون کجای حافظه توسط کامپایلر تعیین میشه بعد مستقیما از همونجا بخونید یا بنوسید
    فکر کنم همینطوری تو رم ذخیره بشه ولی اینکه کجاشه من نمیدونم

    دیدگاه


      #3
      پاسخ : فراخوانی متغیرهای C در کد اسمبلی؟ (کدویژن)

      راهی که فعلا پیدا کردم اینه :
      ابتدا موقع تعریف متغیر (عمومی) موقعیتش رو هم مشخص میکنم مثلا char ch @0x80; که متغیر ch رو در محل 0x80 از حافظه SRAM قرار میده.
      حالا توی کد اسمبلی مثلا با دستور lds r23,0x80 اون متغیر رو داخل رجیستر r23 میارم و استفاده میکنم.
      دو تا نکته رو هم باید توجه داشته باشیم
      1- فقط هنگام تعریف متغیر عمومی میشه مکانش رو هم مشخص کرد.
      2- طبق اطلاعات codevision user manual فقط میشه از رجیسترهای r0,r1,r22,r23,r24,r25,r26,r27,r30,r31 در کد اسمبلی خودمون بدون نگرانی از استفاده اون رجیسترها توسط کامپایلر استفاده کنیم

      دیدگاه

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