;welcome to masm! 共16个字符,一行是80个字符,字符串应该从第32列开始显示
;显示3行字符,一共是25行,所以字符串应该从第12行开始显示
;B8000H---B8F9FH是第一页显示的内存,一页中的坐标(行,列)的内存位置的计算:B8000+(行*80+列)*2
assume cs:codesg
data segment
db 'welcome to masm!' ;定义显示的字符
db 02H, 24H, 71H ;定义显示字符的颜色属性
data ends
stack segment
db 16 dup (0)
stack ends
codesg segment
start:mov ax, 0B800H
mov ds, ax
mov bx, 71EH ;确定第一行字符串显示的起始位置
mov ax, stack
mov ss, ax
mov sp, 10H
mov si, 0 ;记录每行字符的颜色属性
mov cx, 3
s:push cx
mov di, 0
mov cx, 16
s1:mov dx, data
mov es, dx
mov al, es:[di]
mov ah, es:[16+si]
mov ds:[bx], ax
add bx, 2
inc di
loop s1
pop cx
inc si ;修改字符串的属性
add bx, 80H ;修改显存的位置
loop s
mov ax, 4C00H
int 21H
codesg ends
end start |