程序集:使用输出字符串更改背景和前景色

Assembly: Change background and foreground color with output string

所以我编写了一个程序,其中我可以使用 06h 函数更改背景颜色。我试图在延迟和循环之后放置一个字符串,我不明白为什么当我仍然没有放置任何可以使文本移动到任何地方的代码时字符串向右移动。有人可以向我解释一下吗?谢谢

 LOOPS:
 MOV AH, 06h    ; Scroll up function
 XOR AL, AL     ; Clear entire screen
 XOR CX, CX     ; Upper left corner CH=row, CL=column
 MOV DX, 184FH  ; lower right corner DH=row, DL=column 
 MOV BH, 1Eh    ; YellowOnBlue
 INT 10H

 MOV AH, 9
 MOV DX, OUTPUT
 INT 21H
 CALL DELAY 
 JMP LOOPS

 DELAY:
 *some codes*

  OUTPUT DB 'HELLO', 24H

如果您 preserve and restore 将光标放在 DOS 调用周围,您可以轻松地继续使用 DOS 输出功能并且仍然在同一位置保留文本。

mov bh, 0     ;Display page 0
mov ah, 03h   ;Get Cursor
int 10h       ;BIOS returns the cursor position in DX (Shape in CX)
push dx       ;Save on stack

MOV AH, 9
MOV DX, OUTPUT
INT 21H

pop dx        ;Restore from stack
mov bh, 0     ;Display page 0
mov ah, 02h   ;Set Cursor
int 10h

CALL DELAY 
JMP LOOPS