Atmel Studio 6 Survey

مباحثی درباره خانواده AVR و برنامه نویسی به زبان C آنها

Atmel Studio 6 Survey

مباحثی درباره خانواده AVR و برنامه نویسی به زبان C آنها

نحوه خواندن فایل هگز اینتل

بعد از کمپایل کردن برنامه، یک فایل با پسوند hex ساخته می شود که آن را درون حافظه میکرو تزریق می کنیم. 

این فایل دارای حداقل 3 سطر است.

مثال: برنامه زیر: 

.include"m32def.inc"
.ORG 0
LDI R29,$99
LDI R29,$99
LDI R29,$99
LDI R29,$99
LDI R29,$99
LDI R29,$99
LDI R29,$99
LDI R29,$99
 

 

یک برنامه ساده است که برنامه آغاز شده و یک دستور هشت بار تکرار شده است. ترجمه به زبان ماشین آن چنین خواهد بود: 

:020000020000FC
:10000000D9E9D9E9D9E9D9E9D9E9D9E9D9E9D9E9E0
 :00000001FF 

 

سطر اول به معرفی نوع میکرو و آغاز برنامه می پردازد که معمولا پروگرامر آن را نادیده می گیرد. 

سطر آخر هم برای بستن برنامه است. 

سطر وسط، ترجمه متن برنامه است که به توضیح آن می پردازیم: 

 

1. :
2. 10
3. 0000
4. 00
5. D9E9D9E9D9E9D9E9D9E9D9E9D9E9D9E9
6. E0 

 

1) یعنی شروع سطر جدید 

2) 10 در مبنای هگز است و یعنی قسمت 5 شامل 16 بایت داده است. 

3) آدرس رکورد در حافظه (؟) 

4) نوع رکورد 

5) بایت های داده 

6) چک سام: طوری تعیین می شود تا مجموع اعداد سطر برابر 0 شود ( مانند Parity) 

 

اما در مورد قسمت پنجم باید گفت: 

- متاسفانه مانند میکروهای MCS-51 قانون ساده ای برای تفسیر آنها وجود ندارد و معمولا در صورت لزوم از decompiler ها استفاده می شود. 

- حداکثر 16 بایت طول دارد، اگر بیشتر شد، در سطر بعدی ادامه می یابد. 

- مثلا ترجمه LDI R29,$99 می شود D9E9 حالا به تفسیر آن می پردازیم: 

D یعنی R29 

E یعنی LDI ( از روی دفترچه راهنمای "مجموعه دستورالعمل های اتمل" معلوم می شود.) 

دو تا 9 که در دو طرف E قرار گرفته اند همان 99 می شوند. 

 

* نکته: ممکن است طول یک دستور 1، 2 یا 3 بایت باشد که در آن صورت بایت های بیشتری مصرف می شوند.

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.