1.题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/cb2658ffe8064c509572f89436568814.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5paw5pe25LujJuWGnOawkQ==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
2.源程序
assume cs:code
data segment
db 'welcome to masm!',0
data ends
code segment
start:
mov dh,11 ;行
mov dl,70 ;列
mov cl,24h ;颜色属性
mov ax,data
mov ds,ax ;ds 指向数据段
mov si,0 ;用于迭代数据
call show_str ;IP入栈,调用子程序show_str
mov ax,4c00h ;子程序执行完后,IP出栈,执行该条命令
int 21h
show_str: ;子程序入口
mov ax,0B800H ;es 寄存器指向显存单元
mov es,ax
mov al,160 ;计算显存位置,dh 行,dl 列,一行160个字节
mov bl,dh ;ax目前没用了,用于保存乘法结果
mul bl
mov dh,0
add ax,dx ;显存位置还要加上列dl,ax的结果保存要显示的显存内存单元地址
mov bx,ax ;测试的时候ax不能用 [ax+di],把结果送到了bx
mov dh,cl ;显存单元用bx保存了,用dh颜色属性存