gpt4 book ai didi

linux - 64 位 linux 中的段错误 movsb nasm

转载 作者:太空狗 更新时间:2023-10-29 12:02:03 25 4
gpt4 key购买 nike

我是 asm 的新手,正在尝试使用一些操作码来获取它。我在 64 位 linux 上工作,并且在使用 movsb 时总是出现段错误。我用 nas 编译:

nasm -f elf64 test.asm

这是代码

DEFAULT ABS
segment data
data:
texte: db 'Hello, World !!', 10, 13
len: equ $-texte
texteBis: db 'Hello, World !.', 10, 13

segment code
global main

main:
;The problem is here
mov rsi, texteBis
mov rdi, texte
mov cx, len
rep movsb

mov dx, len
mov rcx, texte
mov bx, 1
mov ax, 4

int 0x80

mov bx,0 ; exit code, 0=normal
mov ax,1 ; exit command to kernel
int 0x80 ; interrupt 80 hex, call kernel

其他问题,我应该使用字符串(或其他大型数据库实例)

mov rsi, texte

mov rsi, [texte] 

没看懂哪个给值哪个给地址。

最佳答案

你也链接吗?

ld -e main test.o -o test

无论如何,texteBis 似乎是数据段中的静态数据。该页面是只读的,并且受到写入/执行保护。

您应该分配一个缓冲区(如果允许使用运行时库,则在堆栈或堆上)。

关于linux - 64 位 linux 中的段错误 movsb nasm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com