نظرسنجی سایت
آمار بازدید سایت
پیوند ها
فرمت : WORD تعداد صفحه :47
CPU تراشه enCorRe دستور پشتيباني ميكند. همه برنامهها بايد از اين 37 دستور استفاده كنند. سيپرس يك مترجم مجاني ارائه ميدهد كه كدهاي اسمبلي را كه شما مينويسيد به فايلهاي موضوع، كه به منظور برنامهريزي در EPROM تراشه تهيه ميشوند، تبديل ميكند. اگر ترجيح دهيد كه در C برنامهنويسي كنيد، سيپريس يك مفسر C نيز پيشنهاد ميكند.
اگر با برنامهنويسي اسمبلي ميكروكنترلر آشنايي داشته باشيد، برنامهنويسي براي enCoRo نيز مشابه همان است. اما اگر با برنامهنويسي در بيسيك و C آشنا هستيد، بايد بدانيد كه در برنامهنويسي كدهاي اسمبلي بسياري از عملگرهاي زبانهاي سطح بالا موجود نيست در اينجا ديگر حلقههاي While يا for يا انواع مختلف متغيرها وجود ندارد. اما براي تراشهاي مانند enCoRo كه به منظور كارهاي نمايشي و كنترلي غير پيچيده طراحي شده است، استفاده از كدهاي اسمبلي عملي است. براي برنامههاي كوتاه، كه به سرعت اجرا ميشوند احتياجي به خريد مفسر نيست.
اصول برنامهنويسي اسمبلي
برنامهنويسي اسمبلي شامل يك مجموعه از دستورات است كه هر كدام مربوط به كدهاي ماشيني هستند كه تراشه از آنها پشتيباني ميكند. مثلاً دستور iord، كه محل io را ميخواند به كد h29 مربوط است. به جاي به خاطر آوردن h 29، شما ميتوانيد iord را بنويسيد، و مترجم معادل سازي را براي شما انجام خواهد داد. دستور iord همچنين احتياج به يك عملوند دارد كه محل خواندن را مشخص كند. به عنوان مثال 01hiord پورتي با آدرس h 10 را ميخواند.
زبان برنامهنويسي اسمبلي همچنين ميتواند شامل دايركتيو[1] و توضيحات باشد. دايركتيوها دستوراتي هستند كه به جاي اينكه مربوط به CPU باشند، مربوط به مترجم ميباشند. دايركتيوها شما را قادر ميسازند كه محلي از حافظه را مشخص كنيد، متغيرهايي تعريف نماييد. در كل، نقشي كه مترجم در كنار اجراي دستورات مشخص شده بايد ايفا كند را نشان ميدهند. يك نقطه ويرگول ( : )يا مميز دوبل ( // ) يك عبارت توصيفي را مشخص ميكنند كه مترجم از آنها چشمپوشي ميكند.
مترجمي كه توسط سيپرس ارائه ميشود، cyasm.exe قابل اجرا در پنجره داس[2] ميباشد. سيپرس مرجعها و راهنماي استفاده براي كاربراني را تهيه كرده است كه چگونگي استفاده از مترجم را شرح ميدهد.
مترجم از دو مجموعه دستور مشابه براي CPUهاي سري A و سريB پشتيباني ميكند. تراشههاي enCoRo از سري B هستند. تراشههاي قديميتر سيپرس، مانند 63001، از سري A بودند و از همة دستورات بجز بعضي از آنها پشتيباني ميكنند.
كدهاي مترجم
راهنماي كاربران داراي توضيحات كاملي در مورد كد اسمبلي و دايركتيوهاست و در اينجا برخي از جزئيات آن تكرار ميشود. جدول 1-8 خلاصهاي از كدها ميباشد و جدول 2-8 خلاصهاي از دايركتيوها را نشان ميدهد. كدهاي ماشين تراشه به 37 دستور ترجمه شده است.
جدول 1-8: متجرم Cyasm از 37 دستور اسمبلي براي enCoRo پشتيباني ميكند
|
نوع دستور |
دستور |
توضيح |
|
تابعهاي منطقي و رياضي |
ADD |
اضافه كردن بدون نقلي |
|
ADC |
اضافه كردن همراه با نقلي |
|
|
AND |
AND كردن بيتي |
|
|
ASL |
انتقال به چپ منطقي |
|
|
ASR |
انتقال به راست منطقي |
|
|
CMP |
مقايسه |
|
|
CPL |
متمم كردن آكومولاتور |
|
|
DEC |
كاهش |
|
|
INC |
افزايش |
|
|
OR |
OR كردن بيتي |
|
|
RLC |
چرخش به چپ همراه با نقلي |
|
|
RRC |
چرخش به راست همراه با نقلي |
|
|
SUB |
تفريق بدون نقلي |
|
|
SBB |
تفريق همراه با نقلي |
|
|
XOR |
OXR بيتي |
|
|
پرشهاي برنامه و كنترلي |
GALL |
فراخواني تابع |
|
HALT |
اجراي ايست |
|
|
RETI |
بازگشت از وقفه |
|
|
JACC |
پرش آكومولاتور |
|
|
JC |
پرش در صورتي كه نقلي يك باشد |
|
|
JMP |
پرش |
|
|
JNC |
پرش در صورتي كه نقلي صفر باشد |
|
|
JNZ |
پرش اگر صفر نباشد |
|
|
JZ |
پرش اگر صفر باشد |
|
|
RET |
بازگشت |
|
|
XPAGE |
صفحه حافظه |
ادامه جدول 1-8: مترجم Cyasm از 37 دستور اسمبلي براي enCoRo پشتيباني ميكند
|
نوع دستور |
دستور |
توضيح |
|
انتقال داده
|
INDEX |
خواندن جدول |
|
IORD |
خواندن از I/O |
|
|
IOWR |
نوشتن بر I/O |
|
|
IOWX |
مشخص كردن نوشتن I/O |
|
|
MOV |
انتقال |
|
|
POP |
انتقال داده از پشته به آكومولاتور |
|
|
PUSH |
انتقال داده از آكومولاتور به پشته |
|
|
SWAP |
SWAP |
|
|
بقيه |
DI |
غير فعال كردن وقفهها |
|
EI |
فعال كردن وقفهها |
|
|
NOP |
بدون عمل |
اين دستورات، تابعهاي اصلي رياضي و منطقي، پرسشهاي برنامه و كپي دادهها از رجيسترها، پورتها و RAM را انجام ميدهند، دو بيت پرچ نقلي[3] و صفر اطلاعات بيشتري را ارائه ميدهند. مانند اينكه نتيجه دستور add داراي سرريز[4] بوده است يا خير يا اينكه نتيجه صفر شده است يا نه.
تراشه از سه حالت آدرس دهي پشتيباني ميكند كه چگونگي استفاده از عملوند را براي دستور مشخص ميكند. همه دستورات از هر سه حالت آدرس دهي پشتيباني نميكنند.
در آدرس دهي سريع، دستورات از مقدار عملوند مستقيماً استفاده ميكنند. اين دستور از آدرس دهي سريع براي جمع كردن h 60 با مقدار آكومولاتور استفاده ميكند.
Add A/ 60h
در آدرس دهي مستقيم، دستور با عملوند شبيه به آدرس رفتار ميكند و از مقداري كه در آن آدرس ذخيره شده استفاده مينمايد. اين دستور از آدرس دهي مستقيم براي جمع كردن مقداري كه در آدرس h60 از RAM نوشته شده با محتويات آكومولاتور استفاده ميكند.
Add A/ [60h]
در آدرس دهي شاخصي، دستور از دادهاي استفاده ميكند كه در آدرس حاصل از افزودنه يك مقدار به رجيسترX قرار گرفته است. آدرس دهي شاخصي براي كپي كردن يك بلاك از داده مفيد ميباشد. رجيستر X آدرس آغاز بلاك را در خود ذخيره مينمايد. كد مقداري را به محتواي رجيستر X اضافه ميكند تا آدرس بايتي كه ميخواهد كپي شود را به دست آورد. با افزايش اين مقدار در هركپي، كد ميتواند يك بلاك داده را كپي كند.
استفاده از مترجم
مترجم يك برنامه تحت داس ميباشد. اين دستور:
cyasm test.asm
فايل test.asm را اسمبل ميكند.
مترجم سه فايل ايجاد ميكند:
test.asm كه كدهاي اسمبل شدهاي براي استفاده در كيت ارتقا هستند، شما ميتوانيد از اين فايل براي بارگذاري كدها از كامپيوتر بهRAM برد ارتقا استفاده كنيد.
[1]- Directive
[2]- Dos
[3]- carry
[4]-Overflow