1

nasmアセンブリで小さな卓球ゲームを作ろうとしています(これが私が言語を学ぶ方法です:))が、問題があり、リストのどの項目にもアクセスできません

私のコード:

mov eax,counter                  ;counter=2 double checked 
mov esi,bitmap_data+eax*4        ;copy the 2nd item of the array in to esi

ビットマップ データは .bss セクションにあります

bitmap_data:    resd 100 

試した

mov eax,2                         
mov esi,[bitmap_data+eax*4]       ;copy the 2nd item of the array in to esi

これは、リストの正しい(2番目の)要素をesiに保存していませんが、次は正しく実行しています

mov esi,[bitmap_data+2*4]      

しかし、変数を使用して取得しているアイテムを変更できる必要があります

4

2 に答える 2

0

なにcounter?あなたが望む可能性が高い:

mov eax, [counter]
mov esi, [bitmap_data + eax * 4]

eax= 0 の場合、配列内の「最初」(0 番目) の項目が表示されます。eax= 2 の場合、配列内の「3 番目」の項目が表示されます。どれをお探しですか?

于 2013-03-05T21:50:29.273 に答える
0

次のように、メモリ アクセスを角括弧で囲みます。

mov esi,[bitmap_data+eax*4]

それはアセンブラを幸せにするはずです。

更新ごとに、更新: 指示を少し分割してみてください。試す:

mov eax, counter
shl eax, 2
add eax, bitmap_data
mov esi, [eax]

変更?

于 2013-03-05T17:23:31.860 に答える