2017-02-23 5 views
1

私はx86アーキテクチャーとアセンブリの初心者ですが、これは以下のステップを含むコードスニペットです。siに値2を追加するだけでインデックスが1だけ増えますか?

siはソースインデックスであり、配列のインデックスとして機能することがわかりました。

強調表示された行は、しかし、その答えは、我々は唯一の誰かが何が起こっているのかを説明できる場合、私は、それは間違って解釈していてください1.

イムのインデックスを上に移動することを示唆して、2が追加されていることを示しそれはたくさんの助けになります!

組み立てられた新生児フレンドリーなvocabが好ましい!


enter image description here

+1

'word ptr [si]'は_C_配列のようには動作しません。 'si'はワード(16ビット)の値が読み込まれるメモリオペランドとして使用されるアドレスになります。単一の単語(16ビット値)である2だけポインタをインクリメントする_SI_に2を加えた場合。 –

+1

16ビットワードは何バイトですか? –

答えて

2

アレイのデータがSIにインデキシングなどの異なる型として扱われているために発生。 配列はdws(データワード、16ビット)を含むと宣言されており、siはバイト単位(8ビット)のインデックスメモリであるため、トラバースする各ワードインデックスに対してsiは2つの「ステップ」を必要とします。そうしないと、配列内の各単語の上位バイトと下位バイトが交互になります。

希望すると便利です。

編集 - データのサイズは修正されました。

+0

単語は16、dword 32、qword 64ビットです –

+0

@MichaelPetchはバージョンに依存しませんか?あなたは正しいかもしれないが、私はそれが変わると信じている。 –

+0

x86 **アセンブリ**では、これらは常に同じです。より高いレベルの言語では、それらは異なる可能性があります。 –

関連する問題