نمایش نتایج 1 تا 3 از 3

نام تاپیک: شمردن یک های یک عدد باینری با استفاده از دستور asm

  1. #1

    شمردن یک های یک عدد باینری با استفاده از دستور asm

    صورت سوال :
    برنامه ای بنویسید که یک عدد را از ورودی بخواند و تعداد یک های آن عدد را در مبنای 2 حساب کند. (عدد 8 بیتی باشد و آن را داخل al قرار دهید )

    من برنامه رو اینطوری نوشتم :
    #include <iostream.h>
    void main()
    {
    int a,b=0;
    cout<<"Insert a number(0 to 255): ";
    cin>>a;

    for(int i=0;i<8;i++)
    {
    _asm{
    mov ax,a
    mov bx,1
    and bx,ax
    add b,bx
    }
    a/=2;
    }
    cout<<"Your number in Binary has "<<b<<" digit 1.";
    }


    الآن مشکلم اینجاست که نمی تونم عددم رو توی AL بریزم
    کسی نظری نداره ؟

  2. #2

    نقل قول: شمردن یک های یک عدد باینری با استفاده از دستور asm

    باید از byte ptr استفاده میکردین راه آسونتر 8 بار شیفت میدادین بعد اگر کری 1 بود یکی به کانتر اضافه میکردین
    #include <iostream>
    using namespace std;

    void main()
    {
    int a,b=0;
    cout << "Insert a number(0 to 255): ";
    cin >> a;

    for(int i=0;i<8;i++)
    {
    _asm{
    mov al,byte ptr a
    mov bl,1
    and bl,al
    add byte ptr b, bl
    }
    a/=2;
    }
    cout<<"Your number in Binary has "<<b<<" digit 1.\n";
    }

    موفق باشی
    سلام، دوستان من خیلی وقت است در سایت برنامه نویس فعالیت ندارم پس لطف کنید پیام خصوصی ندین، در صورتی که با اینجانب کاری داشتین از طریق ایمیل xman_1365_x@yahoo.com می تونید با من مکاتبه کنید. موفق باشید.

  3. #3

    نقل قول: شمردن یک های یک عدد باینری با استفاده از دستور asm

    به شکل زیر بنویسید سریعتر هست ، حتما باید مقدار ثبات ها در برنامه های بزرگ ذخیره بشه که با تغییرشون ادامه برنامه با مشکل مواجه نشه

    #include <iostream>
    using namespace std;

    void main()
    {
    int a,b=0;

    cout << "Insert a number(0 to 255): \n";
    cin >> a;

    _asm{
    push cx
    push bx
    push ax

    mov al,byte ptr a
    mov cl,1
    xor ch,ch
    xor bl,bl ;counter
    again:
    shr al,cl
    jc add_counter

    cmp ch,8
    jae exit_count
    inc ch
    jmp again

    add_counter:
    inc bl
    inc ch
    jmp again
    exit_count:

    mov byte ptr b,bl

    pop ax
    pop bx
    pop cx
    }

    cout<<"Your number in Binary has "<<b<<" digit 1.\n";
    }
    سلام، دوستان من خیلی وقت است در سایت برنامه نویس فعالیت ندارم پس لطف کنید پیام خصوصی ندین، در صورتی که با اینجانب کاری داشتین از طریق ایمیل xman_1365_x@yahoo.com می تونید با من مکاتبه کنید. موفق باشید.

قوانین ایجاد تاپیک در تالار

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