C HEX хранить, отображать и манипулировать - PullRequest
0 голосов
/ 10 февраля 2012

Вот как я объявляю свой массив целых чисел:

int registers[16];

И вот как я заполняю свой массив:

 void fill_registers()
{
registers[0] = 0 ; registers[1] = 0x11111111; registers[2] = 0x22222222;
registers[3] = 0x33333333; registers[4] = 0x44444444; registers[5] = 0x55555555;
registers[6] = 0x66666666; registers[7] = 0x77777777; registers[8] = 0x88888888;
registers[9] = 0x99999999; registers[10] = 0xAAAAAAAA; registers[11] = 0xBBBBBBBB;
registers[12] = 0xCCCCCCCC; registers[13] = 0xDDDDDDDD; registers[14] = 0xEEEEEEEE;
registers[15] = 0xFFFFFFFF;
}

И вот как яраспечатывать их обратно у пользователя в шестнадцатеричном формате ...

void print_all_registers()
{int i = 0 ;
    for(i= 0 ;i < 16 ; i++)
    {
        printf("REG %d : %x \t %d \n ", i, registers[i],registers[i]);
    }
}

Единственная проблема с этим состоит в том, что он не работает правильно, я просто продолжаю получать значения.

Я в основномдолжен иметь возможность добавлять + вычитать значения регистра, например.От +2 до 11111111. Другая проблема заключается в том, что при его печати необходимо также печатать 8 цифр, например, 00000001, а не только 1. Я просматривал многие учебные пособия, но, похоже, не могу найти ни одной, которая может помочь.

Я просто не понимаю, почему это не работает.Вот пример того, как это не работает.Если я сделаю:

registers[1] = registers[1] + 2 ;

, это приведет к значению 2, когда должно быть что-то вроде 11111113.

1 Ответ

0 голосов
/ 10 февраля 2012

Вы не показываете достаточно кода. Но чтобы добавить значение в 0, сделайте что-то вроде этого:

printf("REG %d: %08x\n", i, registers[i]);
...