因此,我仍在尝试找出如何从C输入中访问字符串的第一个字符。我得到的结果是字符串“ abcd”的“ 4194172”,我相信这是地址整个字符串本身。我希望能够输出字母“ a”。在下面,您可以看到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
答案 0 :(得分:0)
您是正确的,返回的值是字符串的地址。要获取字符串的第一个字符,请改用此
movl 8(%ebp), %edx
movzbl (%edx), %eax