MARS シミュレーター(Assembly)で宿題をしているのですが、1 つの部分で行き詰まっています。
レジスタに 32 ビット ワードをロードする必要があります。
ビット 0 ~ 7 は青色、ビット 8 ~ 15 は緑色、ビット 16 ~ 23 は赤色を表します。残りのビットはゼロに設定されます。
たとえば、黄色は 0x00ffff00 です。
[31] [24]|[23] [16]|[15] [8] | [7] [0]
+----+- -+----+----+- ... -+----+----+- ... -+----+----+- ... -+----+
| 0 | ... | 0 | RED COLOR | GREEN COLOR | BLUE COLOR |
+----+- -+----+----+- ... -+----+----+- ... -+----+----+- ... -+----+
つまり、メモリ順の BGR0 カラー フォーマット、またはネイティブ エンディアン マシン語の 0RGB です。
宿題は 3 つのタスクに分かれており、私は最後のタスクに取り組んでいます。64 x 64 ピクセルのディスプレイがあります (各ピクセルは 4*4 なので、幅と高さの合計は 256 です)。赤は常に 0 に設定され、緑は 4 * 行の数、青は 4 * 列の数です。2 行 3 行にあると想像してください。緑の値は 2*4 で、青の値は 3*4 です。したがって、この例では、16 進数で 12 は 0xc、8 は 0x08 になり、レジスタにロードする数値は 0x00000c08 になります。
私の最初の質問は、ビット代数を使用して 2 つの乗算の結果を連結するにはどうすればよいかということです。
そして、私の 2 番目の質問は次のとおりです。最後のピクセルの行と列にいると想像してください: 64 * 4 と 64 * 4.結果は 256 であり、8 ビットだけを使用してその数値を表すことはできないため、おそらくピクセルを使用しないでください。 1 から 64 でも 0 から 63 ですよね?