بالاخره بعد از یک سال تونستم اولین برنامه اسمبلی برای 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 //
دیدگاه