2011-11-30 168 views
1

我正在嘗試使用IA 32的彙編代碼讀取命令行參數。我找到了解釋如何在這裏執行它。我能夠使用堆棧指針來獲取參數的數量,但我無法獲得參數的值。 這是我正在做的事:IA 32讀取命令行參數

movl 8(%esp), %edx # Move pointer to argument 1 to edx 
movl (%edx), %ebx # Move value of edx to ebx 
movl $1, %eax  # opcode for exit system call in eax 
int $0x80   # return 

我得到正確的指針了嗎?如果是這樣,我如何獲得它的價值?如果沒有,我如何得到正確的指針?

+0

閱讀http://tldp.org/HOWTO/Assembly-HOWTO/ –

回答

2

movl (%edx), %ebx # Move value of edx to ebx

那不動的EDXEBX(評論是不正確)值。

解除引用指針在EDX,並把解引用的結果放入EBX。所以如果你用./a.out foo調用你的程序,那麼EBX將最終爲0x006f6f66 (== '\0oof' ("foo\0" in little-endian))

我猜這不是你想要的,但你的問題不是很清楚你期望在哪裏發生。