اطلاعیه

Collapse
No announcement yet.

نوشتن کد اسمبلی در زبان c در atmel studio

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

    نوشتن کد اسمبلی در زبان c در atmel studio

    برای نوشتن کد اسمبلی در بین خطوط یک برنامه زبان c در نرم افزار atmel studio باید چکار کنیم ؟

    #2
    پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

    نوشته اصلی توسط test001 نمایش پست ها
    برای نوشتن کد اسمبلی در بین خطوط یک برنامه زبان c در نرم افزار atmel studio باید چکار کنیم ؟
    سلام
    فکر میکنم باید به این فرمت باشه؛ حالا شما خودتم یه تستی بگیر:

    asm("sei");

    دیدگاه


      #3
      پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

      نوشته اصلی توسط hossein.m98 نمایش پست ها
      سلام
      فکر میکنم باید به این فرمت باشه؛ حالا شما خودتم یه تستی بگیر:

      asm("sei");
      ممنون
      برای یک دستور جواب میده ولی برای چند خط پشت سر هم باید چکار کنیم ؟

      دیدگاه


        #4
        پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

        نوشته اصلی توسط test001 نمایش پست ها
        ممنون
        برای یک دستور جواب میده ولی برای چند خط پشت سر هم باید چکار کنیم ؟
        والا منم خبر ندارم! شاید باید چند خط پشت سر هم از اینا بنویسید
        منتظر بمونید تا اساتید بتونن بیشتر کمک کنن. البته احتمالا در help نرم افزار بتونید اطلاعاتی پیدا کنید

        دیدگاه


          #5
          پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

          سلام
          واقعا کسی نیست راهنمایی کنه چطور باید به زبان اسمبلی داخل کد c داخل اتمل چطور باید نوشت؟

          این روش های بالا همه اش اشتباهه!!!


          شایدم من اشتباه کامپایل میکنم:
          این کد منه:

          کد:
          /*
           * 133.c
           *
           * Created: 2018-08-24 13:07:50
           * Author : Mohammad
           */ 
          
          
          #include <avr/io.h>
          #define F_CPU 1000000
          #include <util/delay.h>
          
          
          
          
          unsigned char bcd2bin();
          int main(void)
          {
              
          	
          	char a, b, c;
          
          
          
          
          	DDRA = 0xFF;
          	//DDRB = 0xFF;
          	DDRC = 0xFF;
          	DDRD = 0xFF;
          
          
          
          
          	while (1)
          	{
          		for (a=0;a<=23;a++){
          			PORTC= bin2bcd (a);
          
          
          			for (b=0;b<=59;b++){
          				PORTD = bin2bcd (b);
          
          
          				for (c=0;c<=59;c++){
          					PORTA = bin2bcd (c);
          					_delay_ms (1000);
          				}
          
          
          
          
          			}
          		}
          	}
          
          
          }
          
          
          unsigned char bcd2bin()
          {
          asm(ld   r30,y
          swap r30
          andi r30,0xf
          mov  r26,r30
          lsl  r26
          lsl  r26
          add  r30,r26
          lsl  r30
          ld   r26,y+
          andi r26,0xf
          add  r30,r26
          ret	
          	)
          };
          Nobody knew her name
          But she turned up just the same
          There was a knock on the door
          A thump on the floor
          And the party turned insane
          As she called out her na-a-a-ame

          And then she walked in looking like dynamite
          She said, "Now come along boogaloo through the night"
          And by the way she's moving, well Dyna might
          Might she not, with all she's got
          She's got the whole town lighting up dynamite
          Nobody quite knowing what to do wrong or right
          But they all know Dyna is dynamite
          And they're right

          دیدگاه


            #6
            پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

            نوشته اصلی توسط msadr471 نمایش پست ها
            سلام
            واقعا کسی نیست راهنمایی کنه چطور باید به زبان اسمبلی داخل کد c داخل اتمل چطور باید نوشت؟

            این روش های بالا همه اش اشتباهه!!!


            شایدم من اشتباه کامپایل میکنم:
            این کد منه:

            کد:
            /*
             * 133.c
             *
             * Created: 2018-08-24 13:07:50
             * Author : Mohammad
             */ 
            
            
            #include <avr/io.h>
            #define F_CPU 1000000
            #include <util/delay.h>
            
            
            
            
            unsigned char bcd2bin();
            int main(void)
            {
                
                
                char a, b, c;
            
            
            
            
                DDRA = 0xFF;
                //DDRB = 0xFF;
                DDRC = 0xFF;
                DDRD = 0xFF;
            
            
            
            
                while (1)
                {
                    for (a=0;a<=23;a++){
                        PORTC= bin2bcd (a);
            
            
                        for (b=0;b<=59;b++){
                            PORTD = bin2bcd (b);
            
            
                            for (c=0;c<=59;c++){
                                PORTA = bin2bcd (c);
                                _delay_ms (1000);
                            }
            
            
            
            
                        }
                    }
                }
            
            
            }
            
            
            unsigned char bcd2bin()
            {
            asm(ld   r30,y
            swap r30
            andi r30,0xf
            mov  r26,r30
            lsl  r26
            lsl  r26
            add  r30,r26
            lsl  r30
            ld   r26,y+
            andi r26,0xf
            add  r30,r26
            ret    
                )
            };
            سلام
            دوست عزیز وقتی کاملا اشتباه عمل میکنی، چرا میگی نوشته های بالا کاملا اشتباهه؟؟؟؟
            ظاهرا توجه نکردی که دستورات اسمبلی باید داخل دوتا دابل کوتیشن (از اینا"") باشه و در یک خط نوشته بشه! ضمنا برای تبدیل BCD به باینری و برعکس احتیاجی به اسمبلی نیست و با همون c میشه نوشت. از این دوتا تابع برای تبدیل مقادیر 0 تا 99 از BCD به باینری و برعکس میشه استفاده کرد:
            unsigned char BCD_to_BIN(unsigned char BCD)
            {
            unsigned char A = ((BCD & 0xf0)>>4);
            unsigned char B = (BCD & 0x0f);
            unsigned char BIN= (A*10) + B;
            return BIN;
            }


            unsigned char BIN_to_BCD(unsigned char BIN)
            {
            unsigned char A = (BIN / 10);
            unsigned char B = (BIN % 10);
            unsigned char BCD = (A<<4) | B;
            return BCD;
            }

            دیدگاه


              #7
              پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

              بله حق با شما بود من کوتیشن ها رو نذاشتم!!!

              فقط شما میدونید همین چند خط کدی که فرمودین رو چطور باید به کتابخونه تبدیل کنم؟!

              یه کتابخونه استاندارد برای اتمل استودیو 7؟!

              خیلی لازمم میشه؟!

              ممنون از راهنماییتون
              باتشکر
              Nobody knew her name
              But she turned up just the same
              There was a knock on the door
              A thump on the floor
              And the party turned insane
              As she called out her na-a-a-ame

              And then she walked in looking like dynamite
              She said, "Now come along boogaloo through the night"
              And by the way she's moving, well Dyna might
              Might she not, with all she's got
              She's got the whole town lighting up dynamite
              Nobody quite knowing what to do wrong or right
              But they all know Dyna is dynamite
              And they're right

              دیدگاه


                #8
                پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

                نوشته اصلی توسط msadr471 نمایش پست ها
                بله حق با شما بود من کوتیشن ها رو نذاشتم!!!

                فقط شما میدونید همین چند خط کدی که فرمودین رو چطور باید به کتابخونه تبدیل کنم؟!

                یه کتابخونه استاندارد برای اتمل استودیو 7؟!

                خیلی لازمم میشه؟!

                ممنون از راهنماییتون
                باتشکر
                توی اینترنت پر از آموزش کتابخانه نویسی هستش که میتونید استفاده کنی. برای نمونه این سایت و این سایت.
                در کل کتابخوانه چیزی جز دوتا فایل c. و h. نیست که توی فایل h تعریف توابع و ثابت ها و توی فایل c بدنه توابع قرار میگیره. حالا این وسط یکسری نکات ریز وجود داره که باید از آموزش های سطح اینترنت استفاده کنی. برای این دوتا تابع به این شکل میشه کتابخونه ساخت:
                فایل h:
                #ifndef _BCD_BIN_H
                #define _BCD_BIN_H


                unsigned char BCD_to_BIN(unsigned char BCD);
                unsigned char BIN_to_BCD(unsigned char BIN);


                #endif

                فایل c:
                #include "BCD_BIN.h"

                unsigned char BCD_to_BIN(unsigned char BCD)
                {
                unsigned char A = ((BCD & 0xf0)>>4);
                unsigned char B = (BCD & 0x0f);
                unsigned char BIN= (A*10) + B;
                return BIN;
                }


                unsigned char BIN_to_BCD(unsigned char BIN)
                {
                unsigned char A = (BIN / 10);
                unsigned char B = (BIN % 10);
                unsigned char BCD = (A<<4) | B;
                return BCD;
                }

                فقط دقت داشته باش که فایل ها دقیقا به همون فرمت h. و c. ذخیره شده باشن.

                دیدگاه


                  #9
                  پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

                  خب من توی اینترنت، البته بیشتر منابع انگلیسی میبینم میگن که برای ساخت کتابخونه برای اتمل باید یه فایل s. رو باید بسازی و کد ها رو باید داخل این فایل ذخیره کنی. یه چیزی شبیه به این موضوع ازش فهمیدم!

                  شما اطلاعی درباره این فایل با پسوند S دارید؟

                  با تشکر
                  Nobody knew her name
                  But she turned up just the same
                  There was a knock on the door
                  A thump on the floor
                  And the party turned insane
                  As she called out her na-a-a-ame

                  And then she walked in looking like dynamite
                  She said, "Now come along boogaloo through the night"
                  And by the way she's moving, well Dyna might
                  Might she not, with all she's got
                  She's got the whole town lighting up dynamite
                  Nobody quite knowing what to do wrong or right
                  But they all know Dyna is dynamite
                  And they're right

                  دیدگاه


                    #10
                    پاسخ : نوشتن کد اسمبلی در زبان c در atmel studio

                    نوشته اصلی توسط msadr471 نمایش پست ها
                    خب من توی اینترنت، البته بیشتر منابع انگلیسی میبینم میگن که برای ساخت کتابخونه برای اتمل باید یه فایل s. رو باید بسازی و کد ها رو باید داخل این فایل ذخیره کنی. یه چیزی شبیه به این موضوع ازش فهمیدم!

                    شما اطلاعی درباره این فایل با پسوند S دارید؟

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

                    دیدگاه

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