在程序集

时间:2016-03-18 02:47:20

标签: 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

然而,输出如下:

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

1 个答案:

答案 0 :(得分:2)

对周围的字符串使用`以使转义序列在NASM中有效。

参考:3.4.2 Character Strings

试试这个:

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