|
发表于 2020-8-17 20:42:45
|
显示全部楼层
;问题
;显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。我们应该提供
;灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色
;子程序描述
;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
;参数(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),
;(cl)=颜色,ds:si指向字符串的首地址。
;返回:无
;应用举例:在屏幕的8行3列,用绿色显示data段中的字符串。
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:push cx
mov ax,0b800h
mov es,ax
mov al,dh
mov ah,160
mul ah
mov bx,ax
mov al,dl
mov ah,2
mul ah
add bx,ax
mov di,0
s0:mov cl,[si]
mov ch,0
jcxz s
mov al,[si]
pop cx
mov ah,cl
mov es:[bx+di],ax
inc si
add di,2
push cx
jmp short s0
s:ret
code ends
end start
|
|