Linux 汇编程序SegFail

Linux 汇编程序SegFail,linux,assembly,64-bit,Linux,Assembly,64 Bit,伙计们,我有麻烦了。我只是想在这个简单的字符串“Hello World”中更改一个字母 所以我试着像这样给内存单元赋值 .section .text string: .ascii "Hello, world!" length: .quad . -string #Dot = 'here' .globl _start #Make entry point visible to linker _start: movl $4, %eax #4

伙计们,我有麻烦了。我只是想在这个简单的字符串“Hello World”中更改一个字母 所以我试着像这样给内存单元赋值

.section    .text
string:
    .ascii "Hello, world!"
length:
    .quad . -string     #Dot = 'here'

.globl _start       #Make entry point visible to linker
_start:
    movl $4, %eax       #4=write
    movl $1, %ebx       #1=stdout
    movl $string, %ecx
    movl length, %edx
    int $0x80       #Call Operating System



    movl $98,4(%ecx)   #Critical moment why cannot I do this?
    movl $98,string(,%ebx,1)  #cannot do this too ;(


    movl $4, %eax       #4=write
    movl $1, %ebx       #1=stdout
    movl $string, %ecx
    movl length, %edx
    int $0x80 





    movl $0, %ebx       #Make program return syscall exit status
    movl $1, %eax       #1=exit
    int $0x80       #Call System Again


其他信息我在x64(linux)上工作,并通过linux gas在模拟模式x32下组装它,所以应该没问题,对于回复,您已经将字符串放入了只读的
.text
部分。您应该将其放入
.data
部分(但不要忘记切换回
.text
查看程序代码)。

您已经将字符串放入了
.text
部分,该部分是只读的。您应该将其放入
.data
部分(但不要忘记切换回
.text
查看程序代码)。

您已经将字符串放入了
.text
部分,该部分是只读的。您应该将其放入
.data
部分(但不要忘记切换回
.text
查看程序代码)。

您已经将字符串放入了
.text
部分,该部分是只读的。您应该将其放入
.data
部分(但不要忘记切换回
.text
查看程序代码)。

您面临的问题是什么?这是一个错误吗?有什么不正常的吗?谢谢。这是分段错误,因为我不知道。文本部分是只读的,我试着在这里写一些数据,但Jester已经帮了我:回答Mate,我很高兴你找到了答案。你面临的问题是什么?这是一个错误吗?有什么不正常的吗?谢谢。这是分段错误,因为我不知道。文本部分是只读的,我试着在这里写一些数据,但Jester已经帮了我:回答Mate,我很高兴你找到了答案。你面临的问题是什么?这是一个错误吗?有什么不正常的吗?谢谢。这是分段错误,因为我不知道。文本部分是只读的,我试着在这里写一些数据,但Jester已经帮了我:回答Mate,我很高兴你找到了答案。你面临的问题是什么?这是一个错误吗?有什么不正常的吗?谢谢。这是分段错误,因为我不知道。文本部分是只读的,我试着在这里写一些数据,但Jester已经帮了我:回答Mate的问题,我很高兴你找到了答案。是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,泰在我开始的时候帮助了我:)是的,就是这样,泰在我开始的时候帮助了我:)