【发布时间】:2019-02-26 18:29:06
【问题描述】:
我正在尝试制作一个简单的 x86 汇编程序(我使用 NASM 作为我的汇编程序),它使用 ANSI 代码将终端文本颜色更改为红色,然后打印一些内容,然后打印出红色前景。代码如下:
; This macro is equivalent to printf(message)
%macro print 1
lea rdi, [rel %1]
call _printf
%endmacro
; Example call:
; print prompt
; Where prompt is something like:
; prompt:
; db "Hiya dude! What's your name?", 0
; These are the terminal colors, they are ANSI codes that, when printed, will change the color of the text.
section .data
COLOR_FORE_RED:
db "\033[31m",0 ; ANSI Fore Red code
%define SetColor_FRed print COLOR_FORE_RED
但是当我尝试使用这些宏时:
SetColorFRed ; Set text color
print Hello ; Print "Hello!:
section .data
Hello:
db "Hello!",0
输出是:
\033[31mHello! <- Output color is plain old black, not red
为什么不将文本颜色更改为红色?据我所知,这段代码相当于在 C 中使用 printf("\033[31m Hiya!"),它在我的计算机上运行良好,并且确实将输出颜色更改为红色。我的平台是 Mac OSX,我正在使用 64 位 x86 进行编程,并且正在运行 Intel Core i7 处理器。
【问题讨论】:
-
@MichaelPetch 哇!谢谢!反引号对我有用,颜色现在是红色。 (还没有尝试过八进制选项)介意发表您的评论作为答案,以便我可以标记它?
标签: assembly io x86 printf nasm