如何让控制台上打印的文字闪烁。有一个 8086 中断可以启用闪烁,但显然模拟器不支持它。
这就是我所说的中断。还有其他办法吗?
mov ax, 1003h
mov bx, 1
int 10h
CGA/VGA 文本模式下的闪烁或变亮由 CRT 模式端口控制,其编号保存在 BIOS 变量中。
它只涉及设置了最高有效位的颜色,模式控制背景颜色是否明亮,或者是否闪烁。
例如,当启用闪烁时,
0xE4
(黄底红)将更改为棕红闪烁。
这是我旧的 TASM 宏,它可以使用此端口进行操作,也许有帮助:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; DisableBlink
;; Background color is bright instead of flash.
;; IN: -
;; OUT: AX=?
;; BX=0
;; DX=CRT mode select port
MACRO DisableBlink
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; diable 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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; EnableBlink
;; Background color blinks if attrib. bit 7 is set.
;; IN: -
;; OUT: AX=?
;; BX=1
;; DX=CRT mode select port
MACRO EnableBlink
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
我不知道 emu8086,但在 DoxBox 中它可以工作。