對于我正在撰寫的一段匯編代碼,我想以特定顏色列印一個閃爍的文本。我已經設法找出如何以彩色列印我的文本。但是,我正在努力應對眨眼。這是我所擁有的:
string: .asciz "\033[38;5;94mTEXT\033[0m"
...
mov $string, %rdi
mov $0, %rax
call printf
我如何為此添加閃爍?
uj5u.com熱心網友回復:
AFAIK 閃爍必須在顯卡硬體中明確啟用。閃爍涉及background-color 屬性在8..15 之間的字符,可以通過ANSII 代碼設定。
我使用 DOS 實用程式OPIN.com /Attr在實模式仿真中打開/關閉閃爍。它使用了那些 TASM 宏:
MACRO DisableBlink ; Makes the background color bright instead of blinking.
PUSH DS
SUB BX,BX
MOV DS,BX
MOV DX,[0463h] ; CRTC port
ADD DL,4 ; mode select port
MOV AL,[0465h] ; old CRT mode
AND AL, NOT 20h; disable blink
OR AL,09h ; visible text mode
OUT DX,AL ; CGA,HGA
MOV [0465h],AL ; new CRT mode
MOV AX,1003h
INT 10h ; disable blink EGA
POP DS
ENDM
MACRO EnableBlink ; Makes the background color blink.
PUSH DS
SUB BX,BX
MOV DS,BX
MOV DX,[0463h] ; CRT mode port
ADD DL,4 ; mode select port
MOV AL,[0465h] ; old CRT mode
OR AL,29h ; enable blink
OUT DX,AL ; CGA,HGA
MOV [0465h],AL ; new CRT mode
MOV AX,1003h
INC BL
INT 10h ; enable blink EGA
POP DS
ENDM
但是,我不確定這在保護模式程式中是否可行。
uj5u.com熱心網友回復:
ANSI 轉義序列\033[38;5;94m選擇前景色。啟用閃爍使用\033[5m
如果你想持續閃爍,那么不要立即用\033[0m! 給它一些時間來真正看到文本閃爍。
string: .asciz "\033[5m\033[38;5;94mTEXT"
https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/338681.html
標籤:集会 ansi-escape
