NASM汇编实现彩色输出

时间:2022-05-23 01:23:40
先上代码,实现控制台输出“Hello World”。
SECTION .DATA
color_red: db 1Bh, '[31;1m', 0
.len equ $ - color_red
color_blue: db 1Bh, '[34;1m', 0
.len equ $ - color_blue
color_default: db 1Bh, '[37;0m', 0
.len equ $ - color_default

message db 'Hello World!!!', 0Ah

SECTION .text
global _start

_start:
mov eax, 4
mov ebx, 1
mov ecx, color_blue
mov edx, color_blue.len
int 80h

mov ecx, message
mov edx, 14
mov eax, 4
mov ebx, 1
int 80h

mov ebx, 0
mov eax, 1
int 80h

在DATA段定义了三种颜色,分别为蓝色、红色及系统默认颜色(与控制台命令颜色一致)。其中,’[31;1m’限定样式,31代表颜色,1m中的‘1’代表样式,颜色对照如下:

数值 颜色
30
31
32 绿
33
34 蓝色
35 紫色
36 深绿
37 白色

样式对应如下:

数值 样式
0m 关闭所有属性
1m 高亮
4m 下划线
5m 闪烁
7m 反显
8m 消隐


有关Linux终端下颜色的输出可参考

http://www.linuxidc.com/Linux/2009-03/18792.htm