2011-11-12 31 views
0

我是新來的ASM和使用的字符串。字符串和ASM 86

1 /我有一個字符串,我想回到第一卡拉科特的ADRESS。 (我稱之爲C main中的asm函數)。

我已經試過:

movl $str, %eax 

據對我來說,它返回的字符串。

movl $(str), %eax它返回字符串的第一個caracter的地址? 如果我想返回字符串中第二個字符的地址,我不明白我如何在asm中做到這一點。

我diplay結果在C程序這樣的:

printf("string : %s, adress : %d\n", function_asm(), function_asm()). 

它返回我「字符串:programmation,地址:134520852」 我認爲,「134520852」不是ADRESS和有什麼我不不明白。

2 /我看到有%edi,%esi和功能的字符串,但我找不到一個很好的(簡單)教程使用它。我只是明白,%edi是索引源和%esi索引目標...你知道一些關於它的鏈接?

在此先感謝! :-)

+0

是什麼讓你覺得「134520852'不是地址」? – delnan

回答

2

如果你知道如何得到一個字符串的第一個字符的地址複製到eax,可以用一個簡單的inc %eax(增量EAX寄存器)獲得第二個字符內的地址。

我不知道爲什麼認爲134520852是不是你的字符串的地址,尤其如果該字符串確實"programmation" - 這將是prrof從function_asm()回報還不錯。也許你會更快樂地打印它作爲指針,%p

而你基本上對%edi%esi是正確的,儘管你有錯誤的方法。 %esi來源一和%edi目的地一。