Нужно подправить 1 строчку в программе

Тема в разделе "Другие", создана пользователем paradOks, 24 ноя 2008.

Статус темы:
Закрыта.
  1. paradOks

    paradOks Гость


    есть програма, работающая с числами. А нужно с символами. Как подправить?

    Смысл программы - По массиву Х из 5 символов построить массив Z (Zi равно числу единиц в двоичном коде Хi)

    Код(встроенный ассемблер):

    int bindt(int a)
    {
    int n ;
    asm
    {
    sub ebx, ebx
    mov edx, a
    mov eax, a
    m0: shr eax,1
    mov ecx, eax
    shl ecx,1
    sub edx,ecx
    cmp edx, 1
    jne m1
    add ebx, 1
    m1: mov edx, eax
    cmp eax, 0
    je m2
    jmp m0
    m2: mov n, ebx
    }
    return n;
    }

    Подскажите пожалуйста, очень прошу
    :unsure: :(
     
  2. alexsid

    alexsid Гость

    Код (Text):
    int func(char a){
    int n;
    __asm {
    xor ebx, ebx       
    mov ecx, 8
    mov al, a
    m1:  
    shr al, 1
    jnc m2
    inc ebx
    m2:
    loop m1
    mov n, ebx
    }
    return n;
    }
     
  3. paradOks

    paradOks Гость

    Я поняла, спасибо, НО только не получается у меня заменить так, чтобы не было ошибок.
    Посмотрите, пожалуйста, а то у меня с универом совсем плохо будет(((((((( очень очень прошу :(
     

    Вложения:

  4. alexsid

    alexsid Гость

    Код работает 100%
    Юзай тестовую прогу для проверки (MS VS 2003/2005/2008)

    Код теста :
    **********************
    Код (Text):
    #include "stdafx.h"
    #include <iostream>

    // code
    typedef union _bbyte {
    struct {
    unsigned char b0 : 1;
    unsigned char b1 : 1;
    unsigned char b2 : 1;
    unsigned char b3 : 1;
    unsigned char b4 : 1;
    unsigned char b5 : 1;
    unsigned char b6 : 1;
    unsigned char b7 : 1;
    } bits;
    unsigned char byte;

    void print(){
    std::cout << "Bit fields: "
    << (bits.b7 == 1) << (bits.b6 == 1)
    << (bits.b5 == 1) << (bits.b4 == 1)
    << (bits.b3 == 1) << (bits.b2 == 1)
    << (bits.b1 == 1) << (bits.b0 == 1)
    << " " << std::endl;
    }
    }BitByte;

    int func(char a){
    int n;
    __asm {
    xor ebx, ebx
    mov ecx, 8
    mov al, a
    m1:  
    shr al, 1
    jnc m2
    inc bl
    m2:
    loop m1
    mov n, ebx
    }
    return n;
    }


    void main(int argc, char* argv[])
    {    
    BitByte bb;
    bb.byte = 0xFF;
    bb.print();

    std::cout << std::endl
    << func(bb.byte)
    << std::endl;

    system("PAUSE");
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей