به نام خدا!

این نکته جالبی به نظرم اومد!

گفتم براتون قرارش بدم!

برای استفاده از اسمبلی در زبان سی به خصوص در کامپایلر keil که ما توی اون کد های میکرو مون رو مینویسیم! میتونیم یه راه خیلی سریع و آسون رو پیشبگیریم!

به این نوع کد نویسی که میخوام بگم، میگن inline یعنی همونجا که داری C مینویسی، اسمبلی هم بنویسی!

خیلی آسونه با کد زیر این کار امکان پذیره

__ASM ("code");

کد ما باید حتما بین " " باشه تا اجرا شه!

مثلا کد اسمبلی زیر با کد زبان C زیر برابر هست!

__ASM("mov r1,#0xaa");
__ASM ("strb r1,[0x2009C054]");

C:

LPC_GPIO2->FIOPIN = 0xaa;

اون آدرس 0x2009C054 هم آدرس حافظه هست. اگه میخواید بدونید از کجا گیر آوردم میتونید به مطلب زیر مراجعه کنید!

آدرس دهی به حافظه


فقط باید دقت کنید که کد های پردازنده های ARM با کد های اینتل 8080 و 8051 و.. برابر نیست!

میتونید توی نت سرچ کنید تا کدهای اسمبلی پردازنده های ARM براتون بیاد 

مثلا توی سایت زیر برین با جدول زیر رو به رو میشید که رجیستر های ARM توشه!


Register Alt. Name Usage
r0 a1 First function argument
Integer function result
Scratch register
r1 a2 Second function argument
Scratch register
r2 a3 Third function argument
Scratch register
r3 a4 Fourth function argument
Scratch register
r4 v1 Register variable
r5 v2 Register variable
r6 v3 Register variable
r7 v4 Register variable
r8 v5 Register variable
r9 v6
rfp
Register variable
Real frame pointer
r10 sl Stack limit
r11 fp Argument pointer
r12 ip Temporary workspace
r13 sp Stack pointer
r14 lr Link register
Workspace
r15 pc Program counter

سایتشم 

http://www.ethernut.de/en/documents/arm-inline-asm.html

هست که میتونید ببینید


سایت زیر رو هم ببینید البته از اینا بهتر هم توی نت هست به خصوص منابع خارجی:

http://www.toves.org/books/arm/


امیدوارم به دردتون خورده باشه!


فعلا

یا علی مدد...!