汇编实验十编写子程序

第一题,显示字符串,8行3列显示Welcome to masm!

assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
    mov dh,8;行号
    mov dl,3;列号
    mov cl,2;颜色
    mov ax,data
    mov ds,ax
    mov si,0 ; ds:si 指向字符串首地址
    call show_str
    
    mov ax,4c00h
    int 21h
show_str:
    add dl,dl;因为一字符占两字节,列*2
        mov al,160
    mul dh    ;ax中存行字节数
    mov dh,0 ;为使列字节数加到行上高位清零
    add ax,dx;其实也可以写成add al,dl就不用了清零


    mov bx,ax;bx指向目的地址
    mov ax,0b800h
    mov es,ax
    mov ch,0 ;若把颜色加到ch,jcxz就无法正常执行
    mov al,cl;通过al,附加颜色
change:    
    mov cl,ds:[si]
    mov byte ptr es:[bx],cl;第一个字符转移
    jcxz ok;判断

    inc bx
    mov es:[bx],al;将颜色加到第二个字节
    inc si        
    inc bx
    jmp short change;跳转回change
 ok:    ret;跳转回mov ax,4c00h
    
;总结,本题考查了有条件跳转的应用,显示缓存区,编写子程序,
    

code ends
end start

效果如下::

 

posted @ 2020-05-24 10:39  AlexanderOscar  阅读(262)  评论(0编辑  收藏  举报