assume cs:code,ds:data
data segment
db "Welcome to masm!",0 ;待显示字符串,以0结尾
data ends
code segment
start: mov dh,8
mov dl,3
mov cl,10010100b
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21
;显示字符串(80*25彩色字符模式)
;@param dh 行号
;@param dl 列号
;@param cl 字符属性如颜色等
;@param ds:[si] 要显示字符串的首地址
;@return void
show_str:push dx
push cx
push ax
push ds
push si ;保存寄存器内容
dec dh
mov al,0a0h
mul dh
mov bx,ax
dec dl
mov dh,0
mov ax,2
mul dx
add bx,ax ;计算字符串的第一个字符在显存中相对于0b800h的位移
mov dx,bx
mov ax,0b800h
mov es,ax
mov di,0
;循环显示字符串
s: mov al,byte ptr ds:[si]
mov ah,0
cmp ax,0
je return ;若字符为0则返回
mov ah,cl
mov bx,dx
add bx,di
mov es:[bx],ax
inc si
add di,2
jmp s
return: pop si
pop ds
pop ax
pop cx
pop dx
ret
code ends
end start
【汇编】汇编显示字符串
最新推荐文章于 2024-07-16 17:15:29 发布