2012-02-10 9 views
0

を操作これは私が整数の私の配列を宣言しています方法です:CのHEX店、ディスプレイ&

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; 
} 

そして、これはどのようにあります私はこれで唯一の問題は、それが正常に動作しないということで、私はちょうど得続ける...バック16進形式のユーザーのうち

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 もう1つの問題は、それを印刷するときにも、ちょうど1ではなく 00000001のように8桁で印刷する必要があります。私は多くのチュートリアルを見てきましたが、その助けを見つけることはできません。

なぜ動作しないのか分かりません。どのように動作しないかの例を以下に示します。私が行う場合:それはあなたが十分なコードを示していない11111113.

+0

'registers'配列はどのように宣言しましたか? – pmg

+0

int registers [16]; – LmC

+0

あなたのコード[ideoneで動作](http://ideone.com/uVWmR)。私はあなたのコンパイラの警告レベルを上げるように高くすることをお勧めします。そして、コンパイルをクリーンにしてください:エラー(もちろん!)や警告はありません。 – pmg

答えて

0

のようなものであるべきとき

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

これは2の値になります。しかし、値を0にするには、次のようにします:

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

さらに多くのコードが必要ですし、おかげでこれに似たようなものがありましたが、間違ったやり方で大きな助けになりました:) – LmC