مروري كوتاه بر برنامه‌ نويسي اسمبلي

این مورد را ارزیابی کنید
(0 رای‌ها)

اسمبلی سری 5000 :

شركت TI‌ در نرم‌افزار CCS امكان نوشتن همزمان برنامه‌هاي C و اسمبلي را فراهم نموده است. براي نوشتن يك برنامه اسمبلي بايد برنامه را در يك فايل با پسوند asm ( مثلا init.asm ) نوشت و سپس اين فايل را به پروژه اضافه نمود. نوشتن بخشي از برنامه به صورت اسمبلي ،‌ در خيلي از پروژه‌ها مي‌تواند كاربردهاي خاص خود را داشته باشد. در اين فصل به شكل مقدماتي تنها با اصول نوشتن برنامه‌هاي اسمبلي آشنا خواهيد شد و جهت آشنايي عميق‌تر، مراجع برنامه نويسي اسمبلي معرفي مي‌گردند.

 

 

1) مقدمه

      شركت TI‌ در نرم‌افزار CCS امكان نوشتن همزمان برنامه‌هاي C و اسمبلي را فراهم نموده است. براي نوشتن يك برنامه اسمبلي بايد برنامه را در يك فايل با پسوند asm ( مثلا init.asm ) نوشت و سپس اين فايل را به پروژه اضافه نمود. نوشتن بخشي از برنامه به صورت اسمبلي ،‌ در خيلي از پروژه‌ها مي‌تواند كاربردهاي خاص خود را داشته باشد. در اين فصل به شكل مقدماتي تنها با اصول نوشتن برنامه‌هاي اسمبلي آشنا خواهيد شد و جهت آشنايي عميق‌تر، مراجع برنامه نويسي اسمبلي معرفي مي‌گردند.

      به اين دليل كه جزئيات برنامه‌نويسي اسمبلي در پردازنده‌هاي TI‌با هم فرق مي‌كند پس از بررسي كليات، پردازنده‌هاي سري  55XX  را انتخاب نموده و چند برنامه ساده اسمبلي براي اين خانواده نوشته مي‌شود. در اين فصل هدف آشنايي مختصر با برنامه‌نويسي اسمبلي براي پردازنده‌هاي TI‌مي‌باشد. اما چون ساختار دستورالعملها در بين خانواده هاي مختلف با هم متفاوت است بايد براي توضيح دقيق، هر خانواده به شكل جداگانه بررسي گردد.

 

2) معرفي رجيسترهاي داخلي

      رجيسترهاي مهم درون پردازنده‌هاي TI را مي‌توان به دو دسته كلي تقسيم نمود: 1-رجيسترهاي محاسباتي. 2- رجيسترهاي آدرس‌دهي.

 

2-1) رجيسترهاي محاسباتي

      مهم‌ترين رجيستر محاسباتي Accumulator مي‌باشد كه با نام مخفف ACC در برنامه‌نويسي مورد استفاده قرار مي‌گيرد. اين رجيستر براي محاسبات رياضي مانند جمع و ضرب مورد استفاده قرار مي‌گيرد. ACC‌در پردازنده‌هاي مختلف طول متفاوتي دارد و از 32 بيت تا 64 بيت متغير است. در بعضي از پردازنده‌ها كه چند عدد ACC دارند براي دسترسي به اين رجيسترها از كلماتي مانند AC0 يا AC1 يا ... استفاده مي‌گردد.

      يك رجيستر محاسباتي مهم ديگر T رجيستر مي‌باشد كه در بعضي از پردازنده‌ها، بيشتر براي ضرب استفاده مي‌گردد.

 

2-2) رجيسترهاي آدرس دهي

      سه روش از مهم‌ترين روشهاي آدرس‌دهي در پردازنده‌هاي DSP عبارتند از:

                   1- روش آدرس‌دهي مستقيم[1].

                  2-روش آدرس‌دهي غير مستقيم[2].

                  3- روش آدرس‌دهي مطلق[3].

 

2-2-1) روش آدرس‌دهي مستقيم

      روش آدرس‌دهي مستقيم روشي است كه در آن آدرس حافظه مورد نظر، به طور مستقيم در دستورالعمل ذكر مي‌شود. اين روش در بسياري از پردازنده‌هاي معمولي استفاده مي‌گردد، اما در پردازنده‌هاي DSP‌ساخت TI‌ نام‌گذاري روشها كمي متفاوت بوده است. در نام‌گذاري روشهاي آدرس‌دهي اينگونه مرسوم است كه هرگاه عددي به عنوان آدرس در دستورالعمل ذكر شود ، در آن صورت ، آدرس‌دهي از نوع مستقيم مي‌باشد. روشي كه در ادامه مي‌آيد توسط TI به عنوان آدرس‌دهي مستقيم نام گرفته است. در مقابل هرگاه از رجيسترها براي آدرس‌دهي استفاده شود روش آدرس‌دهي غير مستقيم خواهد بود.

      در DSPها حافظه‌ها به تعدادي صفحه دلخواه تقسيم مي‌شوند. مثلا در سري 54XX كل فضاي حافظه( كه معادل 64 كيلو word است ) به 9 2  صفحه 128 تايي تقسيم مي‌شود. براي دسترسي به يك حافظه در هر صفحه، ابتدا بايد شماره آن صفحه در يك رجيستر9 بيتي به نام DP‌( Data Page Pointer ) قرار داده شود سپس در دستور العمل ، مستقيما عدد صفر تا 127 به عنوان 7 بيت پايين آدرس استفاده شود. در اين حالت DP به عنوان 9 بيت بالا و عدد درون دستور به عنوان 7 بيت پايين آدرس استفاده مي‌گردد. اما در سري 55XX شكل استفاده از DP كمي عوض شده است. در اين سري ابتدا آدرس يك بخش از حافظه در رجيستر DP (يا دقيق‌تر XDP که 23 بیت است) ريخته مي‌شود و سپس عدد 7 بيتي كه در دستور العمل استفاده مي‌شود به عنوان يك آفست استفاده مي‌گرددیعنی این عدد 7 بیتی به مقدار قبلی اضافه می شود.

 

اين روش آدرس‌دهي در سري‌هاي مختلف وجود دارد اما فقط شكل كلي آن كمي تغيير مي‌كند.

      يك شكل ديگر آدرس‌دهي مستقيم، استفاده از رجيستر SP يا Stack Pointer مي‌باشد. در اين روش نيز مانند DP رجيستر SP كه براي حافظه stack يا پشته استفاده مي‌گردد به كار برده مي‌شود.

 

2-2-2)  روش آدرس دهي غير مستقيم

      در اكثر پردازنده‌هاي TI تعدادي رجيستر به نام AR يا Auxiliary Register وجود دارد كه براي آدرس دهي استفاده مي‌گردند.تعداد اين رجيسترها معمولا 8 عدد است و استفاده از آنها نيز بسيار ساده است. فقط كافي است ابتدا آدرس حافظه مورد نظر، در يكي از رجيسترهاي AR كپي شود و سپس از آن رجيستر براي آدرس‌دهي استفاده گردد.

      چون تعداد ARها 8 عدد مي‌باشد براي دسترسي به هركدام از رجيسترهاي AR از نام آنها به همراه شماره رجيستر استفاده مي‌گردد. مثلا AR5 براي ششمين رجيستر AR‌، و AR0 براي اولين رجيستر AR .

 

2-2-3) روش آدرس‌دهي مطلق

در اين روش آدرس حافظه مورد نظر مستقيما در دستورالعمل ذكر مي‌شود.


[1] - Direct Addressing Mode

[2] - Indirect  Addressing  Mode

[3] - Absolute  Addressing  Mode

 

آخرین ویرایش در دوشنبه, 16 فروردين 1395 ساعت 12:24
محتوای بیشتر در این بخش: « آموزش کار با نرم افزار CCS نسخه 3.3

1 نظر

  • پیوند نظر جواد یکشنبه, 03 بهمن 1395 ساعت 13:38 ارسال شده توسط جواد

    با سلام و عرض خسته نباشيد
    من توي نرم افزارccs3.3 ميخوام يك برنامه اسمبلي ساده بنويسم و نتيجه اون رو به صورت شبيه سازي مشاهده كنم پردازنده اي براي شبيه سازي استفاده ميكنم tms320c6713 هست اما نميدونم دستورالعمل هاش و رجيستر هايي كه بايد استفاده كنم چي هست توي اين پردازنده وهمچنين نميدونم اول كه نرم افزار رو باز ميكنم كجا بايد اسمبلي بنويسم و چطور بايد نتيجه رو ببينم چون با زبان c فقط كار كردم اگه يك يا چند مثال رو گام به گام از اول باز كردن نرم افزار تا نتيجه واسم همراه با عكس توضيح بديد يا منبع در اين رابطه در اختيارم بزاريد ممنون ميشم خيلي لازم دارم
    با تشكر

    -----
    دوست عزیز در حال حاضر چنین فایلی رو موجود نداریم
    برای شروع یک فایل با پسوند asm بزارید و همانند فایل c با اون رفتار کنید همچنین برای شروع کار با اسمبلی هر خانواده فایل instruction set اون خانواده مطالعه کنید

    گزارش

نظر دادن

ضمن قدر دانی از نظر شما دوست محترم، نظرات و سئوالات شما تا حداکثر 3 روز کاری بررسی و سپس در سایت قرار خواهد گرفت. شما برای دریافت پاسخ سریع به سئوالات خود می توانید از طریق ایمیل یا تلفن با ما تماس حاصل فرمائید. با سپاس- مدیریت سایت