汇编语言 如何在屏幕上的输出绿底红字
资料上说改变B8000H-BFFFFH地址的值就可以了,可MOVAX,B800H,MOVds,AX,这代码编译不通过,请问该怎样才能改变呢...
资料上说改变B8000H-BFFFFH地址的值 就可以了,可MOV AX,B800H,MOV ds,AX,这代码编译不通过,请问该怎样才能改变呢
展开
2个回答
展开全部
给你个例子,什么颜色都有。
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;显示空格
stosw
mov al,06
mov ah,bl;色码
stosw
mov ax,0720h;显示空格
stosw
ret
code ends
end start
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;显示空格
stosw
mov al,06
mov ah,bl;色码
stosw
mov ax,0720h;显示空格
stosw
ret
code ends
end start
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询