我的代码哪错了?为什么显示不出来?是不是win7的问题?
assume cs:code,ds:datadata segment
db 'HOW ARE YOU'
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0
mov di,0
mov cx,0bh
cld
rep movsb
mov ax,4c00h
int 21h
code ends
end start 显示缓冲区中每个字符是占两个字节的,一个是用于显示字符的ASCII码,另一个是显示属性。你差考虑属性了
hkcx3000 发表于 2012-2-18 12:04 static/image/common/back.gif
显示缓冲区中每个字符是占两个字节的,一个是用于显示字符的ASCII码,另一个是显示属性。你差考虑属性了
哦,对,我在改改试试 hkcx3000 发表于 2012-2-18 12:04 static/image/common/back.gif
显示缓冲区中每个字符是占两个字节的,一个是用于显示字符的ASCII码,另一个是显示属性。你差考虑属性了
怎么改也显示不出来,晕了,能帮我改改吗? 本帖最后由 hkcx3000 于 2012-2-18 16:40 编辑
我也是初学,水平有限,用笨方法去搞,如果你一定要用movsb的话 assume cs:code
data1 segment
db 'HOW ARE YOU' ;初始字符串
data1 ends
data2 segment
db 22 dup(?) ;存放加上属性后的字符串
data2 ends
code segment
start:
mov dh,0eh ;属性颜色值,黄色,可改
mov si,0
mov di,0
mov cx,11
s: ;整个循环用于给字符串添加上对应属性值
assume ds:data1 ;结果放在data2数据段中
mov ax,data1
mov ds,ax
mov dl,
assume ds:data2
mov ax,data2
mov ds,ax
mov ,dl
mov ,dh
inc si
inc di
inc di
loop s
mov ax,0b800h
mov es,ax
mov si,0
mov di,0
mov cx,16h
cld
rep movsb
mov ax,4c00h
int 21h
code ends
end start
页:
[1]