;看来,楼主是想要“直接写屏”。
;程序修改如下。
;可在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
;------------------------
程序运行后,显示如下图:
;试试这个代码
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0B800H
mov es,ax
t: mov di,0H
mov bx,0
mov cx,10H
g: mov al,[bx]
mov es:[di],al
add di,2
inc bx
loop g
jmp t
mov ax,4c00H
int 21H
code ends
end start