汇编实验十编写子程序
第一题,显示字符串,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
效果如下::