これは 3 つの質問を 1 つにまとめたようなものです。
1-だから私はここSOで私の問題に対する答えを探していて、誰かがどこかからこれを引用しました:
スタック セグメントのアドレス サイズ属性によって、スタック ポインターのサイズ (16、32、または 64 ビット) が決まります。現在のコード セグメントのオペランド サイズ属性によって、スタック ポインターが減少する量 (2、4、または 8 バイト) が決まります。
私のようなアセンブラーの初心者が理解できる方法で誰かがこれを説明してもらえますか?
2-問題は、私がこの小さなスタックを作成したことです:
setStack: ; setup a small stack at 0x9B000
cli ; disable interrupts
mov AX, 0x9000
mov SS, AX
mov SP, 0xB000
sti ; re-enable interrupts
引用符 1 の私の (最も確実な欠如の) 理解により、このスタックには 16 ビットのポインターがあり、プッシュ/ポップ命令は、呼び出されたときに 2 バイトをデクリメント/インクリメントすると想定しましたか? 私は正しく仮定しましたか?
3- 私が正しく仮定したと仮定すると (つまり、たとえそうでなくても、答えたかのようにこの次の質問に答えてください)、次のステートメントはスタック上で何を実行しますか?
push ECX ; ECX is a 32 bit register
Stack Overflow の親切な住人に感謝します。