汇编语言(王爽)实验

andyljn 2019-10-28

实验10

;name: show_str
;func: 在指定的位置,用指定的颜色,显示一个用‘0‘结束的字符串
;argc: (dh)=行号(取值范围0~24), (dl)=列号(取值范围0~79)
;      (cl)=颜色, ds:si指向字符串的首地址
;return: None
assume cs:code
data segment
    db ‘Welcome to masm!‘, 0, ‘x‘
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 ax
        push bx
        push es
        push cx
        push dx
        push si

        mov ax, 0b800h
        mov es, ax

        mov bx, 0
        mov al, 160 
        mul dh
        add bx, ax
        mov al, 2
        mul dl
        add bx, ax ;print start position

print:  
        mov cl, 0 ;judge end
        mov ch, ds:[si]
        jcxz return

        mov al, [si] ;character
        mov ah, 02h  ;(color) BL RGB I RGB
        mov es:[bx], ax
        add bx, 2
        inc si

        jmp short print

return:
        pop si
        pop dx
        pop cx
        pop es
        pop bx
        pop ax

        ret
        
code ends
end start

相关推荐