程序集:使用输出字符串更改背景和前景色
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
所以我编写了一个程序,其中我可以使用 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