【发布时间】:2016-07-04 16:04:09
【问题描述】:
当我从程序集中调用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
【问题讨论】:
-
谢谢 MikeCAT!警告其他人,使用 `not '
-
这里没有什么神奇的事情发生。您可以使用
db 0o33, "[0;31m%d", 0o33, "[0m", 10, 0将不可打印字符放入您的.rodata部分,就像使用十进制10获取换行符和使用0获取终止字节一样。 (八进制 0o33 是十进制的 27;你可以用任何 NASM 支持的方式来写)。
标签: linux assembly printf nasm x86-64