标题:文本模式下如何设置 背景和字体颜色???
只看楼主
zdoublehang
Rank: 1
等 级:新手上路
帖 子:90
专家分:3
注 册:2010-5-27
结帖率:90.91%
已结贴  问题点数:0 回复次数:3 
文本模式下如何设置 背景和字体颜色???
就是这样一个问题,想把黑白配 换掉~~~~
搜索更多相关主题的帖子: 就是这样 
2011-06-14 17:39
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:7 
省事的话参考BIOS 10H里的各个中断,复杂点的话,直接写屏也可。

程序代码:
assume  cs:code,ds:data
data    segment
msg     db      'Hello,world!$'
data    ends
code    segment
start:
        mov ax,data
        mov ds,ax
;窗口
        mov ax,0600h ;滚动窗口
        mov bh,24h   ;视屏属性是绿底红字
        mov cx,050ah ;窗口左上角行列值
        mov dx,0a30h ;窗口右下角行列值
        int 10h      ;调用bios
;置光标位置
        mov ah,2     ;设置光标位置
        mov dx,0714h ;行列坐标
        mov bh,0     ;页号
        int 10h      ;调用bios
;显示文本
        mov dx,offset msg
        mov ah,9
        int 21h

        mov ah,4ch
        int 21h
code    ends
end     start


[ 本帖最后由 ansic 于 2011-6-14 18:32 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-14 18:14
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
得分:7 
写屏吧
俺觉得。。。
2011-06-16 13:06
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
得分:7 
这是在控制台下实现键盘输出,有一点好处就是,普通的控制台打印出的字符有限,这个可打印任意多的字符,当然也存在一些缺陷
……重点是可以在程序中设置 cx 的值,让输出的字符成不同的颜色
以前我改过,比如按下 f1 键,输出的字符就会全部变色, 按下 f2 ,字符又变回原来的颜色
楼主可以把功能加上去,用写彩色显存的方法,下面的代码是原始的

assume cs:code


code segment
    top db 0

start:
    mov bx,0b800h
    mov es,bx
    mov ds,bx
    mov bx,24*160

 s:                    ; s 用于判断输入的是否是数字键,字母键或删除返回键和回车键,回车键结束输入
    mov ah,0            
    int 16h
    cmp al,08h
    je back
    cmp al,0dh
    je enter
    cmp al,20h
    jnb char
 char:    cmp al,'z'
    jna charpush

 charpush:   

    mov cx,2
    mov es:[bx],al
    mov es:[bx+1],cl
    inc top
    add bx,2
    cmp bx,25*160
    je copy
    jmp short s

 back:    cmp top,0
    je s
    dec top
    sub bx,2
    mov byte ptr es:[bx],' '
    jmp short s

 copy:    mov di,0
    mov si,160
    mov cx,24
 copys:    push cx
    mov cx,160
    rep movsb
    pop cx
    loop copys
    mov si,24*160
     mov cx,80
 empty:    mov byte ptr es:[si],' '
    add si,2
    loop empty

    mov bx,24*160
    jmp short s

 enter:    mov ax,4c00h
    int 21h
   

code ends

end start


不过我想,要是希望改变黑白配,不如……打开控制台,右键点击属性,这样来得一劳永逸
2011-06-17 00:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342840-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.234865 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved