显示字符串的子程序

王爽汇编语言第二版,实验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


五、测试结果

206

posted @ 2009-12-27 12:16  石莹  阅读(460)  评论(0编辑  收藏  举报