看来,楼主是想要“直接写屏”。
程序修改如下。
可在XP的DOS窗口下,用MASM 5.0编译...
assume cs:codesg,ds:datasg
;------------------------
datasg segment
DB 'w', 06H ;定义字符和属性
DB 'e', 02H
DB 'l', 07H
DB 'c', 26H
DB 'o', 85H
DB 'm', 74H
DB 'e', 98H
db "welcome to asm" ;这些就不合适了
datasg ends
;------------------------
codesg segment
start:
MOV AX, datasg
MOV DS, AX
mov bx, 0b800h
mov es, bx
mov bx, 0
mov cx, 6 ;14
s:
mov ax, [BX] ;取来字符和属性
mov es:[BX], ax ;直接写屏
add BX, 2 ;每次写两个字节
loop s ;循环6次
mov ax, 4c00h ;退出
int 21h
codesg ends
end start
;------------------------
程序运行后,显示如下图:
s2:mov b8000:[0],ax
这句是错的
可以改成
s2:
mov dx,0b800h
mov es,dx
mov di,0
stosw
能给出编译时编译器输出的错误信息么?
查一下编译器手册,看是不是选项用错了。