assume cs:code
data segment
db ' Welcome to masm! ' , 0
data ends
code segment
start:
mov dh, 8 ;行号
mov dl, 3 ;列号
mov cl, 2 ;属性
mov ax,data
mov ds,ax
mov si, 0
call show_str
mov ax,4c00h
int 21h
show_str :
mov al,0a0h
dec dh ;行号在显存中下标从0开始,所以减1
mul dh
mov bx,ax
mov al, 2
dec dl ;列号在显存中下标从0开始,所以减1
mul dl
add bx,ax ;此时bx中存放的是行与列号的偏移地址
mov ax,0B800h
mov es,ax ;es中存放的是显存的第0页(共0 -- 7页)的起始的段地址
mov di, 0
mov al,cl
mov ch, 0
s: mov cl,ds:[si]
jcxz ok
mov es:[bx + di],cl ;偶地址存放字符
mov es:[bx + di + 1 ],al ;奇地址存放字符的颜色属性
inc si
add di, 2
loop s
ok: ret
code ends
end start
data segment
db ' Welcome to masm! ' , 0
data ends
code segment
start:
mov dh, 8 ;行号
mov dl, 3 ;列号
mov cl, 2 ;属性
mov ax,data
mov ds,ax
mov si, 0
call show_str
mov ax,4c00h
int 21h
show_str :
mov al,0a0h
dec dh ;行号在显存中下标从0开始,所以减1
mul dh
mov bx,ax
mov al, 2
dec dl ;列号在显存中下标从0开始,所以减1
mul dl
add bx,ax ;此时bx中存放的是行与列号的偏移地址
mov ax,0B800h
mov es,ax ;es中存放的是显存的第0页(共0 -- 7页)的起始的段地址
mov di, 0
mov al,cl
mov ch, 0
s: mov cl,ds:[si]
jcxz ok
mov es:[bx + di],cl ;偶地址存放字符
mov es:[bx + di + 1 ],al ;奇地址存放字符的颜色属性
inc si
add di, 2
loop s
ok: ret
code ends
end start