汇编语言 如何在屏幕上的输出绿底红字

来源:百度知道 编辑:UC知道 时间:2024/06/06 07:26:11
资料上说改变B8000H-BFFFFH地址的值 就可以了,可MOV AX,B800H,MOV ds,AX,这代码编译不通过,请问该怎样才能改变呢

资料上没有告诉你 是低位放 字符,高位时颜色信息吗。很简单
MOV AX,0B800H ;记得字母开头的立即数要0开头
MOV DS,AX
MOV SI,0
MOV AL,'I'
MOV AH,07H
MOV [SI],AX

上面就是在 B8000H 写入一个字符 I 颜色 是07H,颜色不清楚是哪种,看看资料就知道了

给你个例子,什么颜色都有。
code segment
assume cs:code,ds:code,ss:code
start:
mov ax,3
int 10h;置文本显示模式
mov ax,0b800h
mov es,ax;置显存地址
cld
mov di,(80*2)*2;置起点
mov dx,3030h;置ASCII初值
mov bl,0;置二进制数初值
mov cx,16;十六行
Q0:push cx
mov cx,16;十六组
Q1:call asc
inc bl
cmp dl,46h;"F"
jnz Q4
mov dl,30h;"0"
inc dh
cmp dh,3ah;":"
jnz Q5
add dh,7
Q5:jmp Q3

Q4:inc dl
cmp dl,3ah;":"
jne Q3
add dl,7
Q3:
loop Q1
pop cx
loop Q0
mov ah,0;暂停
int 16h
mov ah,4ch
int 21h
asc:
mov al,dh;显示高位
mov ah,07;白色
stosw
mov al,dl;显示低位
stosw
mov ax,0720h;显示空格
sto