Linux 在程序集中调用printf时如何设置颜色

Linux 在程序集中调用printf时如何设置颜色,linux,assembly,printf,nasm,x86-64,Linux,Assembly,Printf,Nasm,X86 64,我想在从汇编调用printf时设置颜色 这是我的代码: Out: mov rdi, answer mov rsi, r10 mov rax,0 call printf section .data answer: db "\033[0;31m%d\033[0m",10,0 我使用NASM进行编译,使用gcc链接: nasm -f elf64 "%f" gcc -o %e %e.o 然而,输出是:

我想在从汇编调用
printf
时设置颜色

这是我的代码:

Out:    
    mov     rdi, answer
    mov     rsi, r10
    mov     rax,0
    call    printf
section .data
    answer:     db       "\033[0;31m%d\033[0m",10,0
我使用NASM进行编译,使用gcc链接:

nasm -f elf64 "%f"
gcc -o %e %e.o
然而,输出是:

\033[0;31m(my r10)\033[0m

对周围的字符串使用
`
,使转义序列在NASM中工作

参考:

试试这个:

Out:
    mov     rdi, answer
    mov     rsi, r10
    mov     rax,0
    call    printf
section .data
    answer:     db       `\033[0;31m%d\033[0m`,10,0

thx MikeCAT!警告其他人,不要使用“not”,这里没有魔法发生。您可以使用
db0o33、[0;31m%d”、0o33、[0m”、10、0
将不可打印的字符写入
.rodata
部分,就像使用十进制
10
获取换行符和
0
获取终止字节一样。(并且八进制0o33是十进制的27;您可以用NASM支持的任何方式写入它)。