本文介绍了NASM无法识别字符串常量中描述的新行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在用汇编语言编写一个‘Hello World’程序。我声明了2个字符串常量,每个字符串的末尾都有换行符:
section .data
str1: db "abcd
"
str2: db "efgh
"
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, str1
mov rdx, 6
syscall
mov rax, 1
mov rdi, 1
mov rsi, str2
mov rdx, 6
syscall
mov rax, 60
mov rdi, 0
syscall
在构建并执行此代码后,我获得了以下结果:
$ nasm -f elf64 -o first.o first.asm
$ ld -o first first.o
$ ./first
abcd
efgh
$
为什么打印出换行符?
推荐答案
您需要在字符串两边使用‘反引号’以支持转义序列:
str1: db `abcd
`
str2: db `efgh
`
引用:http://www.nasm.us/doc/nasmdoc3.html
3.4.2字符串:
这篇关于NASM无法识别字符串常量中描述的新行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!