بالاخره بعد از یک سال تونستم اولین برنامه اسمبلی برای sam7s64 بنویسم فکر کنم اولین برنامه اسمبلی در جهان باید باشه چون من یک سال برای برنامه اسمبلی آرم با جستجو اینترنت را 3 بار شخم زدم دریغ از یک برنامه عملی فقط instruction set ها را توضیح داده بودند این برنامه بعد کامپایل فقط 190 بایت هست
البته این برنامه کپی از برنامه به زبان سی آقای حامد پور آزاد از این لینک هست
http://www.eca.ir/forum2/index.php?topic=49136.msg254355#msg254355
همانطور که مستحضرید برنامه باینری آقا حامد 680 بایت هست اما کامپایل همان برنامه در اسمبلی فقط 190 بایت حجم داره
البته این برنامه کپی از برنامه به زبان سی آقای حامد پور آزاد از این لینک هست
http://www.eca.ir/forum2/index.php?topic=49136.msg254355#msg254355
همانطور که مستحضرید برنامه باینری آقا حامد 680 بایت هست اما کامپایل همان برنامه در اسمبلی فقط 190 بایت حجم داره
کد:
NAME main
PUBLIC __iar_program_start
SECTION .intvec : CODE (2)
CODE32
__iar_program_start
// B main
SECTION .text : CODE (2)
CODE32
main:
PUSH {R12,LR}
// 6 //--------------------speed up---48MHz-----------------
// 7 AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
MVN R0,#+223
BIC R0,R0,#0x300
MOV R1,#+1
ORR R1,R1,#0xF00
STR R1,[R0, #+0]
// 8 AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC;
MVN R0,#+211
BIC R0,R0,#0x300
LDR R1,??DataTable0 ;; 0x2903ffc
STR R1,[R0, #+0]
// 9 AT91C_BASE_PMC->PMC_MCKR = 0x3;
MVN R0,#+207
BIC R0,R0,#0x300
MOV R1,#+3
STR R1,[R0, #+0]
// 10 AT91C_BASE_PMC->PMC_SCER = 0x1;
MVN R0,#+255
BIC R0,R0,#0x300
MOV R1,#+1
STR R1,[R0, #+0]
// 11 //-----------------------------------------------------
// 12 *AT91C_PIOA_PER = 0x00000001;
MVN R0,#+255
BIC R0,R0,#0xB00
MOV R1,#+1
STR R1,[R0, #+0]
// 13 *AT91C_PIOA_OER = 0x00000001;
MVN R0,#+239
BIC R0,R0,#0xB00
MOV R1,#+1
STR R1,[R0, #+0]
// 14 while (1)
// 15 {
// 16 *AT91C_PIOA_SODR = 0x00000001; // PA.0 to be set
??main_0:
MVN R0,#+207
BIC R0,R0,#0xB00
MOV R1,#+1
STR R1,[R0, #+0]
// 17 delay(6000000);
LDR R0,??DataTable0_1 ;; 0x5b8d80
BL delay
// 18 *AT91C_PIOA_CODR = 0x00000001; // PA.0 to be cleared
MVN R0,#+203
BIC R0,R0,#0xB00
MOV R1,#+1
STR R1,[R0, #+0]
// 19 delay(6000000);
LDR R0,??DataTable0_1 ;; 0x5b8d80
BL delay
B ??main_0
// CFI EndBlock cfiBlock0
// 20 }
// 21 }
SECTION `.text`:CODE:NOROOT(2)
DATA
??DataTable0:
DC32 0x2903ffc
SECTION `.text`:CODE:NOROOT(2)
DATA
??DataTable0_1:
DC32 0x5b8d80
// 22
SECTION `.text`:CODE:NOROOT(2)
// CFI Block cfiBlock1 Using cfiCommon0
// CFI Function delay
ARM
// 23 void delay (unsigned int i)
// 24 {
// 25 unsigned int j=0;
delay:
MOV R1,#+0
// 26 j = i;
MOVS R1,R0
B ??delay_0
// 27 while (j)
// 28 {
// 29 j--;
??delay_1:
SUBS R1,R1,#+1
// 30 }
??delay_0:
CMP R1,#+0
BNE ??delay_1
// 31 }
BX LR ;; return
// CFI EndBlock cfiBlock1
END
//






دیدگاه