8086汇编 文本模式下的彩色字符显示

8086汇编的文本显示方式

通过调用BIOS中断可以设置窗口显示方式。如

mov ah,00h    ;设置显示方式
mov al,03h    ;80*25 16色文本显示
int 10h       

通过上述代码就可以将窗口设置为80*25 16色文本显示的窗口,当然文本显示方式不止03h这一种。

还有如下

AL分辨率色彩
03H80*2516色
07H80*25单色


文本模式下显示彩色文字,选则03h就好。

彩色字符显示 

在完成上述显示方式设置之后就可以试着显示彩色字符啦(貌似我的编译器默认的就是彩色的)

在如DOS中断中显示字符,字符一般是以黑色背景与灰白色字体显示的。而使用BIOS中断显示彩色则需要使用09号功能,或者0A号功能。

暂且只说09号功能,示例代码如下

mov ah,09h
mov al,'A'   ;显示的字符
mov cx,1    ;字符显示数量
mov bl,04h ;字符颜色信息
mov bh,00  ;页码设置
int 10h    ;在当前光标处显示一个背景色为黑色,前景色为红色的字符'A'

文本模式下bh的数值最好设置为零。

字符颜色

在文本16色模式下,字符的属性存储在bl中,bl为一个字节大小,共八位。


b7控制字符是否闪烁,b6-b4为背景色,b3-b0为前景色

最后

09号功能只能在当前光标处显示彩色字符。但是并不移动光标。所以想通过此命令连续输出字符。并且不被覆盖必须移动光标

而BIOS中断中的02号中断,提供了此功能。

mov ah,02h
mov dx,03h
int 10h ;将光标移动至文本的第1行,第三列

dl是列参数,dh是行参数

再配合BIOS中断中的03号中断,可以读取当前光标位置。就可实现用上面说的字符显示方式,连续输出字符。

DATAS SEGMENT
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    
    MOV AH,00H
    MOV AL,02H
    INT 10H
 
    MOV AH,09H
    MOV BH,0
    MOV AL,'A'
    MOV BL,04H
    MOV CX,1
    INT 10H
    
    MOV AH,03H
    INT 10H
    INC DL
    MOV AH,02H
    INT 10H
    
    MOV AH,09H
    MOV BH,0
    MOV AL,'B'
    MOV BL,84H
    MOV CX,1
    INT 10H
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值