效果图如图:
代码如下:
assume cs:code,ss:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16
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
;功能:在指定的位置,用指定的颜色,显示一个用0结尾的字符串
;参数:(dh)=行号(取值范围0-24) (dl)=列号(取值范围0-79) (cl)=颜色(具体取值翻看五彩字部分)
;返回:无
show_str: ;保存需要用的寄存器
push dx
push cx
push bx
push si
push di
push ax
push es
;功能实现
mov ax,0b800h
mov es,ax
mov al,160
mul dh
mov bx,ax ;bx为行地址
mov al,2
mul dl
mov si,ax ;si为列地址
mov di,0 ;di为目前取到字符串的哪个位置
mov dl,cl ;用dl存放颜色
mov ch,0
s: mov cl,[di]
inc di
jcxz ok
mov ah,dl
mov al,cl
mov es:[bx+si],ax
add si,2
loop s
;还原寄存器
ok: pop es
pop ax
pop di
pop si
pop bx
pop cx
pop dx
ret
code ends
end start