王爽《汇编语言第三版》实验10-1代码实现

;编写一个通用的子程序实现这个显示字符串的功能,提供灵活的调用接口,使调用者
;可以决定显示的位置,内容,颜色
assume cs:code,ss:stack,ds:data

data segment
        db 'welcome to masm!',0 ;要显示的字符串
data ends

stack segment
        db 128 dup (0)
stack ends

code segment

 start: mov dh,23    ;行数
        mov dl,10    ;列数
        mov cl,4     ;颜色

        mov ax,data
        mov ds,ax

        mov ax,stack
        mov ss,ax
        mov sp,128

        mov si,0
        call show_str


        mov ax,4c00h
        int 21h
;------------------------------
 show_str:
        push cx
        push dx

        mov bx,0b800h    ;显示地址
        mov es,bx
;---------------------------------
        sub dh,1         
        mov al,160
        mul dh
        mov di,ax         ;行偏移

        sub dl,1
        mov al,2
        mul dl             ;列偏移
        add di,ax         ;行偏移+列偏移
;-------------------------------------
        mov dh,cl        ;将颜色cl赋予dh   

 
 s:     mov cl,ds:[si]     ;将字符传给cl
        mov ch,0         ;在cx为0时跳出循环

        mov dl,cl        ;字符
        mov es:[di],dx     ;字符+颜色传递到显示位置

        inc si             ;调用下一个字符
        add di,2         ;显示下一个字符
 

        jcxz ok             ;当cx为0时结束循环,字符最后一个为0
        loop s

  ok:   pop dx
        pop cx
        ret                 ;返回到主函数

code ends

end start

posted @ 2016-05-10 16:25  小黄人python  阅读(1364)  评论(0编辑  收藏  举报