NASM无法识别字符串常量中描述的新行 [英] The new line characted in the string constant isn't being recognized by nasm

查看:11
本文介绍了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字符串:

"用反引号括起来的字符串支持C样式转义 字符。"

这篇关于NASM无法识别字符串常量中描述的新行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆