14:49:42誤投稿失礼いたしました。+4]」を合わせて考える。すると変数「i」はレジスタのECXを指定して、メモリ上のアドレス[ESP+4]に格納されている値を読み込む。4の計算結果に格納される)。8)に格納されていた15という値が読み込まれる。ここでfor文のi++から{}内が1回実行されるとiに1が足され、4回繰り返すと最初の15という値を格納していたメモリを(我々の視点からみると)上書きする形で新たに値(ここでは常に15)が格納される。ここの動作は以上のように解釈して良いでしょうか。16:33:26」の投稿についてはP.52を読み返すとよいかと思います。15:35:03」の投稿に関しましては、C言語とアセンブリを分けて考えると良いと思います。アセンブリはC言語の「i」について知らないけど、C言語は関数を呼ぶとき(write_mem8(i,15)の部分です)に関数呼び出し規約というルールに従ってwrite_mem8を呼び出します。その規約に従ってスタックに引数(i,15)を押し込んでくれます。スタックの説明はおそらくあとでしょうが、バケツのようなものと考えると良いでしょう。C言語側がwrite_memを呼び出す際に「i」の値と、「15」という値をバケツに放り込んでおいてくれます。Pointerなわけで、バケツに入っているデーターの一番上のアドレスを指しています。8に「15」という値が入っています。これをアセンブリ側でメモリを漁ってそれぞれECX、ALに保存します。(E)SP,(数値)という設定していると思います。そこがバケツの位置です。8のアドレスに15が置かれます。8からそれぞれデータを持ってきてECX(つまりはi、0xa0000~),AL(つまりは15)に入れます。15という値が書き込まれるわけです。P171のメモリマップだと0x300000から1MiBとあります。