assume cs:codesg, ds:datasg
datasg segment
db 'welcome to masm!'
db 02h,24h,71h
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov bx,0 ;bx定位目标行
mov si,0 ;si用来定位datasg中要显示的字符
mov ax,0b872h
mov es,ax
mov di,0 ;使es:[di]指向要显示的第一个单元
mov bp,16 ;ds:[bp] 用来定位属性
mov cx,3
s: push cx
mov cx,16
s0: mov al,ds:[si] ;al存放字符ascii码
mov ah,ds:[bp] ;ah存放属性
mov es:[bx+di],al ;偶位存放字符ascii码
mov es:[bx+di+1],ah ;奇位存放属性
inc si
add di,2
loop s0
mov si,0 ;一定要加这句,三次都要循环读取同样的'welcome to masm!'
inc bp
add bx,128
pop cx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
本来以为上面程序没问题了,但当窗口全屏时没有显示在正中央,奇怪了。 |