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支持的任何方式写入它)。