xiaosawanjava 发表于 2014-5-15 21:55:52

在指定的位置,用指定的颜色,显示一个用0结束的字符串

assume cs:code,ds:data,ss:stack

data segment
        db 'Welcome to masm!',0
data ends

stack segment
        dw 8 dup(8)
stack ends


code segment
start:
        mov ax,data
        mov ds,ax
       
        mov ax,stack
        mov ss,ax
        mov sp,16
       
        mov si,0
        mov dh,10
        mov dl,50
        call show_str

        mov ax,4c00h
        int 21h

        ;名称:show_str
        ;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
        ;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79),(cl)=颜色,ds:si指向字符串的首地址
        ;返回无
        show_str:
                push cx
                push si
                push ax
                push di
                push es
               
                mov ax,0b800h
                mov es,ax
               
                ;一列占2个字节,求出列
                mov al,dl
                mov bl,2
                mul bl
                       
                ;列*行=最终的要显示所在空间的物理地址
                mul dh
                       
                mov di,ax
               
                ks:       
                        mov cl,
                        mov ch,0
       
                        jcxz jishu
                       
                        mov es:,cl
                        mov byte ptr es:,02h
                       
                        inc si                ; 下一个字符
                        add di,2        ; 下一个要显示的位置
                       
                        jmp short ks
               
                jishu:
                        pop es
                        pop di
                        pop ax
                        pop si
                        pop cx
                        ret
               
code ends
end start


www5956 发表于 2014-5-17 18:37:39

孩子奉劝你一句这么简单的 的问题还拿出来问。。你还是回去多看看书在来吧。:titter::titter::titter::titter::titter::titter::titter:
页: [1]
查看完整版本: 在指定的位置,用指定的颜色,显示一个用0结束的字符串