اطلاعیه

Collapse
No announcement yet.

اولین برنامه اسمبلی من

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اولین برنامه اسمبلی من

    بالاخره بعد از یک سال تونستم اولین برنامه اسمبلی برای sam7s64 بنویسم فکر کنم اولین برنامه اسمبلی در جهان باید باشه چون من یک سال برای برنامه اسمبلی آرم با جستجو اینترنت را 3 بار شخم زدم دریغ از یک برنامه عملی فقط instruction set ها را توضیح داده بودند این برنامه بعد کامپایل فقط 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
    //
    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است

    #2
    پاسخ : اولین برنامه اسمبلی من

    کامپایلرتون IAR بوده؟یا چیز دیگه؟

    دیدگاه


      #3
      پاسخ : اولین برنامه اسمبلی من

      سلام aliila
      من هم مثل شما اینترنت رو شخم زدم ولی هیچی پیدا نکردم جز همین برنامه شما
      از چه کامپایلری برای نوشتن و کامپایل استفاده می کنید؟
      تا حالا باید تعداد زیادی برنامه به اسمبلی برای آرم نوشته باشید میشه لطف کنید تعدادی بزارید اینجا دوستان علاقه مند بهره ای ببرند از تجربیاتتون؟

      دیدگاه


        #4
        پاسخ : اولین برنامه اسمبلی من

        با تشکر

        من تو این تاپیک


        http://www.eca.ir/forum2/index.php?topic=66252.0

        راجب تدریس اسمبلی در دانشگاه نورسمبریا صحبت کردم که متاسفانه انگار این ترمشون که تموم شده این قسمت رو برداشه

        فکر کنم درس- تکلیف درسی - دستور کار آزمایشگاه یک ترمشون بود. عالی بود . استاد هر هفته یک مورد رو یاد میداد و یک تکلیف میداد .

        البته من خوشبختانه کل تمرین ها و کل پاور پوینت هاشور میکدم و کشیدم بیرون

        من یکم با اسمبلی کار کرد . ولی هنوز ناقصه . تونستم یک برد کنترلر استپ موتور برای 5 محوره cnc بسازم .
        و یک ecu مخصوص برای رنو 5 خودم - مدل 71 اولین ماشینی که خریدم - بسازم .
        ولی دوست دارم تک تک Internal Peripherals هاش رو راه بندازم . فکر کنم یک چیزی در حدود 20 تا مورد باشه
        القصه من 24 ساعت تو یا هو آن هستم . aliila1359@yahoo.com
        تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
        داشتن عقله زيادتر از دیگر آدم ها است

        دیدگاه


          #5
          پاسخ : اولین برنامه اسمبلی من

          نگفتی برنامه ای که نوشتی با چه کامپایلری کامپایل میشه؟ با keil که نشد با چیه؟

          دیدگاه


            #6
            پاسخ : اولین برنامه اسمبلی من

            ببخشید برای میکرو های ARM سری 7 فقط میشه با اسمبلی برنامه نوشت؟؟؟ حتما باید کامپایلری هم داشته باشه برای زبان C.... هیچ اطلاعاطی از arm ندارم به همین خاطر سوالم خیلی مبتدیانس
            به رویاهات فکر کن!!

            دیدگاه


              #7
              پاسخ : اولین برنامه اسمبلی من

              نوشته اصلی توسط اریک ماطوسیان
              ببخشید برای میکرو های ARM سری 7 فقط میشه با اسمبلی برنامه نوشت؟؟؟ حتما باید کامپایلری هم داشته باشه برای زبان C.... هیچ اطلاعاطی از arm ندارم به همین خاطر سوالم خیلی مبتدیانس
              من که دقیقا متوجه نشدم سوالاتتون چی بود
              اصولا زبان هر میکرو کنترلر و پروسسور اسمبلی است
              تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
              داشتن عقله زيادتر از دیگر آدم ها است

              دیدگاه


                #8
                پاسخ : اولین برنامه اسمبلی من

                نوشته اصلی توسط aliila
                من که دقیقا متوجه نشدم سوالاتتون چی بود
                اصولا زبان هر میکرو کنترلر و پروسسور اسمبلی است
                منظور اینکه مثل codevision که کامپایلر زیان C برای AVR هستش ، تو این مورد هم همچین کامپایلری وجود داره ؟
                به رویاهات فکر کن!!

                دیدگاه


                  #9
                  پاسخ : اولین برنامه اسمبلی من

                  بله اکثر کامپابلر های c++ اسمبلی رو هم پشتیبانی میکنن
                  تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                  داشتن عقله زيادتر از دیگر آدم ها است

                  دیدگاه

                  لطفا صبر کنید...
                  X