Linux 汇编程序SegFail
伙计们,我有麻烦了。我只是想在这个简单的字符串“Hello World”中更改一个字母 所以我试着像这样给内存单元赋值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
.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的问题,我很高兴你找到了答案。是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,是的,泰在我开始的时候帮助了我:)是的,就是这样,泰在我开始的时候帮助了我:)