اطلاعیه

Collapse
No announcement yet.

کمک برای تبدیل کد assembly به c

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

    کمک برای تبدیل کد assembly به c

    سلام و خسته نباشید به همه مهندسان عزیز پیشاپیش هم عید بر همه شما مبارک باشد دوستان، من به یک مشکل بر خودم و می خواستم از لایبرری های codevision استفاده کنم.
    این لایبرری که من بهش نیاز دارم به زبون اسمبلی نوشته شده و کمک می خواستم اینو یک نفر برای من به c تبدیل کند چون من هیچی از اسمبلی سر در نمیارم کد رو در این زیر می نویسم اما اصل فایل تو لایبرری codevision هستش به نام bcd

    unsigned char bcd2bin(unsigned char n)
    {
    #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
    #endasm
    }

    unsigned char bin2bcd(unsigned char n)
    {
    #asm
    ld r26,y+
    clr r30
    bin2bcd0:
    subi r26,10
    brmi bin2bcd1
    subi r30,-16
    rjmp bin2bcd0
    bin2bcd1:
    subi r26,-10
    add r30,r26
    ret
    #endasm
    }

    بازم تشکر

    #2
    پاسخ : کمک برای تبدیل کد assembly به c

    سلام
    ببین این دو تا کمکی می کنه؟
    1.

    تابع تبدیل باینری به BCD

    کد:
    Private Function BinaryToBcd(ByVal strBinary As String) As Long
    Dim lngResult As Long
    Dim lngCount As Long, intP As Long
      intP = 0
      
      For lngCount = Trim(Len(strBinary)) To 1 Step -1
        lngResult = lngResult + ((Val(Mid(strBinary, lngCount, 1))) * (2 ^ intP))
        intP = intP + 1
      Next lngCount
    BinaryToBcd = lngResult
    End Function
    خوب البته زبانش بیسیکه!

    2.
    مهندس عدد 1234 رو در مبنای BCD در نظر میگیریم

    میشه این عدد
    0100 0011 0010 0001

    خوب 0100 یکان و 0011 دهگان و 0010 صدگان و 0001 هزاران هستش !
    0001 رو در عدد 1111101000 ضرب می کنیم که حاصل میشه : 1111101000
    0010 رو در عدد 1100100 ضرب می کنیم که حاصل میشه : 11001000
    0011 رو عدد 1010 ضرب می کنیم که حاصل میشه : 11110
    0100 رو هم در 1 ضرب می کنیم که میشه : 0100

    حال اعداد حاصل رو با هم جمع می کنیم :
    1111101000+11001000+11110+0100

    که جواب میشه :
    10011010010

    که میبینیم معادل دهدهی عدد فوق 1234 هستش !
    (در واقع یکان رو در 1 دهگان رو 10 صدگان رو در 100 و . . . ضرب می کنیم با هم جمع می کنیم
    امیدوارم تونسته باشم مفهوم رو برسونم !!!

    3. به نظر من اصلا اینا رو بیخیال شو
    خودت شدوع کن یه تابع بنویس که این کار رو می کنه
    من هم کمکت می کنم
    هستم اگر می روم گر نروم نیستم

    دیدگاه


      #3
      پاسخ : کمک برای تبدیل کد assembly به c

      این هم کد سی معادل:


      unsigned char bcd2bin(unsigned char n)
      {
      unsigned char t = n >> 4;

      return (((t << 2) + t) << 1) + (n & 15);
      // return (t * 10) + (n & 15);
      }

      unsigned char bin2bcd(unsigned char n)
      {
      unsigned char t = 0;

      while( n >= 10 )
      {
      t += 0x10;
      n -= 10;
      }
      return t | n;
      }


      دیدگاه


        #4
        پاسخ : کمک برای تبدیل کد assembly به c

        آقا خیلی تشکر از دوستان

        دیدگاه


          #5
          پاسخ : کمک برای تبدیل کد assembly به c

          نوشته اصلی توسط reza_agha نمایش پست ها
          این هم کد سی معادل:


          unsigned char bcd2bin(unsigned char n)
          {
          unsigned char t = n >> 4;

          return (((t << 2) + t) << 1) + (n & 15);
          // return (t * 10) + (n & 15);
          }

          unsigned char bin2bcd(unsigned char n)
          {
          unsigned char t = 0;

          while( n >= 10 )
          {
          t += 0x10;
          n -= 10;
          }
          return t | n;
          }


          سلام داداش
          بیز حمت یه فکری به حال این کدت بکن!!!
          مشکل داره
          gt چیه
          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

          دیدگاه

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