|
50鱼币
先直接上代码
***********************************************************************************************
assume cs:codesg,ds:datasg
datasg segment
db 3 dup ('w e l c o n e t o m a s m ! ') ;16个+16个空白
datasg ends
codesg segment
start:
mov ax,datasg ;跟ds挂钩
mov ds,ax
mov ax,0b800h ;es跟80x25显存挂钩
mov es,ax
mov cx,16 ;16个字符,循环16次
mov di,0
mov bx,0
s: mov byte ptr ds:[di+1],02h ;用s,s1,s2循环给字节设置属性
add di,2
loop s
mov cx,16
s1: mov byte ptr ds:[di+1],24h
add di,2
loop s1
mov cx,16
s2: mov byte ptr ds:[di+1],71h
add di,2
loop s2
mov cx,16
mov bx,0
mov di,0
s3: mov ax,ds:[bx] ;用s3,s4,s5循环把设置好的字符写入80x25显存中
mov es:[bx+6ffh],ax
add bx,2
loop s3
mov cx,16
mov bx,0
s4: mov ax,ds:[bx]
mov es:[bx+79fh],ax
add bx,2
loop s4
mov cx,16
mov bx,0
s5: mov ax,ds:[bx]
mov es:[bx+83fh],ax
add bx,2
loop s5
mov ax,4c00h
int 21
codesg ends
end start
;段地址b800开始
;行从偏移6e0h-77fh开始 字绿色 02
; 780h-81fh 绿地红色24
; 820h-8bfh 白底蓝字71
;列从+1f开始
*****************************************************************************************************
求错处,思路是这样的:
先把字节属性给设置了,然后再把设置好的字符写入80x25的显存中.可不是为什么出来的是小脸,想看debug看原因显存时时变动看不了,去看ds段的属性觉得没问题.问题就是写入显存的时候就变成笑脸了!
求高人点明错处!
|
|