簡體   English   中英

string和asm x86

[英]string and asm x86

我是asm的新手並且使用了字符串。

1 /我有一個字符串,我想要返回第一個字符的地址。 (我在C main中調用asm函數)。

我試過了 :

movl  $str, %eax

據我說,它返回字符串。

使用movl $(str), %eax它會返回字符串第一個字符的地址嗎? 如果我想要返回字符串中第二個字符的地址,我不明白我是如何在asm中那樣做的。

我將結果顯示在C程序中:

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

它返回給我“string:programmation,adress:134520852”我認為“134520852”不是地址,有些東西我不明白。

2 /我已經看到有%edi%esi和字符串函數,但我找不到一個好的(簡單)教程使用它。 我只知道%edi用於索引源,%esi用於索引目的地...你知道一些關於它的鏈接嗎?

提前致謝 ! :-)

如果您知道如何將字符串的第一個字符的地址轉換為eax ,則可以使用簡單的inc %eax (增量eax寄存器)獲取第二個字符的地址。

我不確定你為什么認為134520852不是你的字符串的地址, 特別是如果那個字符串確實是"programmation" - 那將是從power_asm function_asm()返回的prrof。 也許你會更樂意將它打印為指針, %p

你對%edi%esi基本上是正確的,盡管你有錯誤的方法。 %esi 1, %edi目標

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM