Доступ к символу из строки в сборке - PullRequest
0 голосов
/ 14 октября 2018

Так что я все еще пытаюсь выяснить, как получить доступ к первому символу строки из ввода из C. Результат, который я получаю, это «4194172» для строки «abcd», которая, я считаю, является адресомвсей строки.Я хочу иметь возможность вывести букву «а».Ниже вы можете увидеть код C (который был дан) и код сборки, который я написал.

КОД C

extern int count(char *string, char c); 
int main(void)
{
    char s[100];
    char c;
    printf("Enter a string of characters:\n");
    scanf("%s", s);
    printf("Enter a character to count:\n");
    scanf("%c", &c);
    printf("\nThe number of %c's in the string %s is %d\n", c, s, 
    count(s,c));
    return 0;
}

КОД СБОРКИ

.text
.globl _count

_count:
    pushl %ebp
    movl %esp, %ebp
    subl $8, %esp
    movl 12(%ebp), %edx
    movzbl (%edx), %eax
done:
    movl %ebp, %esp
    popl %ebp
    ret
    .end

1 Ответ

0 голосов
/ 14 октября 2018

Вы правы, возвращаемое значение является адресом строки.Чтобы получить первый символ строки, используйте это вместо

 movl 8(%ebp), %edx
 movzbl (%edx), %eax
...