2016-10-23 10 views
-1

アセンブラを習得しようとしていて、 の3つの等しい値を持つarrを定義する簡単なプログラムを書きました。そして、第2のvauleをレシスタeaxにコピーしたいと思います。 このコードは、mov eax, [arr]という文を使用すると、最初の値に対して動作し、コンパイルされます。結果はAhになります。しかし、配列の2番目の値をレジスタeaxにコピーしようとすると、それが機能しません: mov eax, [arr+1]、値は0A000000hとなります。 関数DumpRegsは、コマンドプロンプトにレジスタ値を表示しています。そのソースコードはありません。 (しかし、その本のウェブサイトからの良い出典から)。アレイからレジスタに移動vaule

コード:Visual StudioでMASMで記述された

ExitProcess PROTO,dwExitCode:DWORD 
DumpRegs PROTO 
.data 
    arr DWORD 10,10,10 
.code 
main PROC 
    mov eax, [arr+1]; 
    call DumpRegs 
    INVOKE ExitProcess,0 
main ENDP 
END main 

その。

+0

OK次の要素へのポインタ4つのバイトを移動しなければなりません。 – Niklas

答えて

0

EAXは32ビットであるので、私は4を追加する私は必要エラーを発見考えるmov eax, [arr+4]

関連する問題