私は次のコードを持っている:私は確認したようアセンブリ - ecx = espでの0x80の使い方は?
Doit: mov eax, 4 ; for write system call
push Dword, 0x44434241
mov ebx, 1
mov ecx, esp
mov edx, 4
int 0x80
add esp, 4
ret
を、それは印刷 "ABCD" ですが、なぜですか? - ESP、
すなわちESPはポイントが0x44のにある0x41 0x42 0x43 0x44
---
低:私はそれを理解されるように、スタックの上に私たちは、次の写真を持っています。 0x80を呼び出すとき。 "DCBA"を印刷する必要があります。私が忘れたのは?
私が理解しているように、私たちはespを押してからプッシュします。つまり、プッシュ命令の開始点はespになり、次のピクチャが得られます:esp-0x41 0x42 0x43 0x44 - (esp beforeプッシュされた)。 –
これはスタック設定とは関係ありません。正しいリトルエンディアンストレージの場合は、値:0x41424344を押してください。 –
@BrettHale:あなたはそうです、私は "Low"と "esp"を間違って示すダイアグラムに対処しようとしていて、明らかに自分自身をプロセスに混乱させました。私はそれを訂正した。 – DCoder