【发布时间】:2015-12-13 16:01:57
【问题描述】:
我正在使用 Tasm 1.4。 我试图在不清除以前的文本的情况下更改背景和文本的颜色,但它总是以清除以前的文本而结束,尽管颜色已更改。
例如:
mov ah,09h
lea dx,text1
int 21h ;displays text1
mov ah,01h
int 21h ;I input a character
mov ah,06h
mov bh,42h
mov cx,0000h
mov dx,184fh
int 10h ;I use this to change the text and background color
mov ah,02h
mov bh,00h
mov dh,0ch
mov dl,20h
int 10h ;along with this
mov ah,09h
lea dx,text2
int 21h ;displays text2
mov ah,02h
mov dl,al
int 21h ;displays the inputted character
现在发生了什么......
- 它显示文本1
- 它要求输入
- 我输入一个输入
- 它会在输入字符后显示text2,背景颜色变为红色,文本颜色变为绿色。但是,text1 已从屏幕上清除。
我也应该说text1和text2绝对可以放在同一个屏幕上。
那么我如何获得相同的输出但 text1 没有从屏幕上清除?
【问题讨论】:
-
嗨!谢谢。编辑。 :)
-
你想用那个颜色清除整个屏幕吗?通过滚动,将会发生什么。但我不确定您希望输出是什么样的。
-
嗨!谢谢。我实际上并不想用颜色清除整个屏幕,而是只更改背景和文本颜色而不清除屏幕。
-
所以您真的只希望
text2中的内容后跟输入的字符以显示在新配色方案中。 -
@PeterCordes 正确,如果您看到
int 21h,那么它肯定不是裸机(无操作系统),必须存在 DOS 或 DOS 仿真层。在仍支持 16 位代码的 32 位 Windows 环境中,您可以使用int 21h和许多不会造成安全威胁的 BIOS 调用(读取硬盘的 BIOS 调用不会返回数据)。模拟 Windows NT(或更高版本)命令提示下的 BIOS 调用。 大多数 BIOS 调用在保护模式下不可用。 BIOS 调用不依赖于操作系统。
标签: assembly x86 dos tasm 16-bit