Emu8086模拟器中闪烁的文字

问题描述 投票:0回答:1

如何让控制台上打印的文字闪烁。有一个 8086 中断可以启用闪烁,但显然模拟器不支持它。

这就是我所说的中断。还有其他办法吗?

mov ax, 1003h
mov bx, 1
int 10h
assembly x86-16 emu8086
1个回答
1
投票

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 中它可以工作。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.