;---------------------------------------------------------
;编写字符串
; 显示字符串
; 在第8行 第3列 显示 绿色 Welocme to masm!
;---------------------------------------------------------
assume cs:code data segment db 'Welocme to masm!', 0 data ends code segment start: mov dh, 8 ;行号[1~25] mov dl, 3 ;列号[1~80] mov cl, 2 ;颜色属性 mov ax, data mov ds, ax mov si, 0 call show_str mov ax, 4c00h int 21h show_str: push cx push si mov al, 0A0h ;160个字节==0A0h dec dh ;dh=dh-1 7=8-1 mul dh ;(n-1)*0A0h 7*160=字节 mov bx, ax ;偏移位置【7行】 mov al, 2 ;每个字符占两个字节 mul dl ;(ax)=(al)*(dl) = 2*3=6 sub ax, 2 ;(ax)=(ax)-2 = 6-2 = 4 add bx, ax ; 7行+4 mov ax, 0B800h ;显存开始地址 mov es, ax 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 ;一个字节存放字符 另一个字节存放属性 jmp short s ok: pop si pop cx ret code ends end start