|
|
#4
obstratiker2011-06-17 00:09
这是在控制台下实现键盘输出,有一点好处就是,普通的控制台打印出的字符有限,这个可打印任意多的字符,当然也存在一些缺陷
……重点是可以在程序中设置 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
不过我想,要是希望改变黑白配,不如……打开控制台,右键点击属性,这样来得一劳永逸
|