我正在编写一个程序来检查字符串是否为Palindrome。我想从用户输入一个字符串作为输入。该字符串可以包含从数字到特殊字符的任何字符。如何从用户那里获取输入。我试过以下代码。
global _start
section .bss
string resb 9
section .text
_start:
mov rax,0 ;Am I doing this correct ?
mov rdi,0
mov rsi,string
mov rdx,8
syscall
xor rax,rax
mov rdx,[string]
mov rax,1
mov rdi,1
mov rsi,rdx
mov rdx,8
syscall
mov rax,0
mov rdi,0
syscall
上面的代码是否正确,因为当我输出字符串时,它显示了分段错误。错误是
Segmentation fault (core dumped)
我在Linux中使用nasm编码(Ubuntu 14.04)
答案 0 :(得分:2)
要进行打印,您还需要传递地址,因此mov rdx, [string]
错误,您需要mov rdx, string
或lea rdx, [string]
。此外,您的最终系统调用是错误的,因为那是read
。您可能希望mov rax, 60
将其设为exit
。
请注意,这就是您发布Minimal, Complete, and Verifiable example。
的原因答案 1 :(得分:0)
通常,Linux要求您使用出口
mov rax, 60
xor rdi, rdi
syscall