NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4813 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 2 از 2

موضوع: کمک برای تبدیل کد assembly به c

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Aug 2009
    نوشته ها
    36
    تشکر
    24
    تشکر شده 7 بار در 5 پست

    پیش فرض کمک برای تبدیل کد 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. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    مطالب موجود در آدرس زیر رو بخونید :
    http://en.wikipedia.org/wiki/Binary-coded_decimal
    گه بخواییم خودمون برنامه ی تبدیلش رو بنویسیم ، براش روش های مختلفی وجود داره ، مثلا :
    int bcd2bin(int n){
    int a,b;
    a=n&0xf;
    b=n&0xf0;
    در بخش بالا من یه دونه تابع دارم که عدد bcd رو از برنامه ی اصلی میگیره و اون رو توی n قرار میده ، با فرض اینکه بیشترین رقم bcd ما دو باشه

    b=(b >>4);[/LEFT]
    در بخش اول ما n رو با f و f0 در مبنای هگز که برابر یا 1111 و 11110000 در مبنای باینری هست اند کردیم ، در این حالت 4 بیت اول و دوم عدد bcd ما جدا میشه .
    در مرحله ی دوم من بیت های با ارزش رو 4 خونه به سمت چپ شیفت میدم تا ارزش اونا به رقم 10 گان برسه و در آخر :
    b=(b*10)+a;
    return (b);
    }
    عدد باینری ما آماده هست ، که به فرم دسیمال در متغیر b ذخیره شده .

    حالا شما خودتون میتونیدحالت دوم رو بنوسید .

  4. تشکرها از این نوشته :


موضوعات مشابه

  1. پاسخ: 4
    آخرين نوشته: 07-02-2012, 17:06
  2. Assembly MPLAB-آموزش
    توسط vishtasp در انجمن PIC
    پاسخ: 1
    آخرين نوشته: 09-06-2011, 16:33

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •