显示字符串的子程序
王爽汇编语言第二版,实验10.1
一、实验要求
编写一个显示用0结束字符串的子程序,要求向外提供与显存结构无关的接口
二、子程序接口
名称:show_str
功能:在指定位置,用指定的颜色,显示一个用0结束的字符串
参数:(dh)=行号(取值范围0-24),
(dl)=列号(取值范围0-79),
(cl)=颜色,
ds:si指向字符串的首地址
返回值:无
三、实现代码
show_str:
push ax ;保存调用前寄存器环境
push bx
push cx
push dx
push es
push bp
push si
mov ax,0b800h
mov es,ax
mov al,80*2
mul dh
mov dh,0
add ax,dx
add ax,dx
mov bp,ax
mov al,cl
mov cx,0
mov cl,ds:[si]
inc si
show_str_s:
mov es:[bp],cl
inc bp
mov es:[bp],al
inc bp
mov cl,ds:[si] ;每次将一个字节的数据读入cl中,如果这个字节为0,循环结束
inc si
inc cx
loop show_str_s
pop si ;恢复调用前寄存器环境
pop bp
pop es
pop dx
pop cx
pop bx
pop ax
ret
四、测试代码
assume cs:code
data segment
db 'Welcome to masm!'
data ends
stack segment
dw 8 dup (0)
code segment
start:
mov dh,8 ;第八行
mov dl,13 ;第13列
mov cl,2 ;颜色值00000010b黑底绿字
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
code ends
五、测试结果