在外部汇编函数中修改字符串

时间:2018-07-09 11:29:57

标签: c assembly

我正在尝试学习一些汇编。我要做的就是声明一个带有输入和输出字符串作为参数的外部c函数,并通过汇编对其进行修改。据我所知,数组总是通过引用传递的。这是一个c示例:

extern int mod_array(char input[], char output[]);
char input[SIZE]={'0','1','1','0','1'};
char output[SIZE]={'x','x','x','x','x'};
mod_array(input, output);

所以我在想获取地址并修改内存空间会起作用。这是一个组装件

   .data
    label: .string "s"
.text
    .global mod_array

mod_array:
    pushl %ebp #setup
    movl %esp, %ebp #setup

    movl 12(%ebp), %edx #fetching the address of the output array
    movl  label, (%edx) #moving label to the pointed space (first char of array)
    #error  


    popl %ebp #setup
    ret

汇编器产生错误。 “太多参考为mov”。 现在我不明白问题是否出在我使用的变量标签上,也许是因为它没有1B的尺寸,或者这是一个sintax问题。 我使用的寻址模式不存在吗?

以为是正确的,如果我能够修改汇编中指向的内存空间,那么c main也会看到更改吗?

谢谢

0 个答案:

没有答案