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