2012-07-20 137 views

回答

1

語法問題... Nasm會使用「$ + 5」,(G)會使用「。+ 5」,並且可能還需要「$」(?)。我從原始標籤瞭解到,我們正在使用Nasm?然後「$ + 5」應該是正確的,但可能不會做你想要的。 asm語法是「jmp target」(或Gas的jmp $ target),在反彙編中你會看到同樣的東西......但仔細看看生成的字節。 「jmp」操作碼後面跟着「到目標的距離」,而不是「目標」!如果你想編碼「到目標的距離」,我認爲你需要求助於「db 0xE8」(或適當的操作碼),然後是「db(或dw或dd)0x ??」 (我認爲是Gas的「.byte」或「.long」)。這可能不是你想要做的。重新考慮你的代碼。

Best, Frank

+0

我應該怎麼做才能解決它? – bluejamesbond 2012-07-23 13:38:47

2

可以使用相對跳轉像

jmp $+5 

它相對於跳轉的開始。

+0

我將它應用於jnz 並得到了'錯誤:後綴或操作數對'jnz''無效 – bluejamesbond 2012-07-20 20:44:49

+0

@bluejamesbond:你使用什麼語法? – Dani 2012-07-20 20:57:12

+0

gcc,at&t style – bluejamesbond 2012-07-20 21:05:50