Igo*_*gor 11 linux assembly nasm
我正在使用Assembler编写一个'Hello world'程序.我已经\n在每个字符串的末尾声明了2个字符串常量和新行字符:
section .data
str1: db "abcd\n"
str2: db "efgh\n"
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
Run Code Online (Sandbox Code Playgroud)
在构建并执行此代码之后,我得到了以下结果:
$ nasm -f elf64 -o first.o first.asm
$ ld -o first first.o
$ ./first
abcd\nefgh\n$
Run Code Online (Sandbox Code Playgroud)
为什么\n打印出新行字符?
Guf*_*ffa 14
您需要在字符串周围使用"反引号"来支持转义序列:
str1: db `abcd\n`
str2: db `efgh\n`
Run Code Online (Sandbox Code Playgroud)
参考:http://www.nasm.us/doc/nasmdoc3.html
3.4.2字符串:
"反引号中的字符串支持特殊字符的C风格."
另一种方法是将ASCII码0xA用于新行:
section .data
str1: db "abcd", 0xA
str2: db "efgh", 0xA
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1591 次 |
| 最近记录: |