实验10 编写子程序
这次实验需要编写三个子程序,通过它们来认识几个常见的问题和掌握解决这些问题的方法。
1.显示字符串
问题
子程序描述
提示
Solution
跟之前的文章的风格相似,都是用王爽老师原书中的描述,在完成第一个程序之前,需要稍微了解一下显存相关的内容:汇编语言:实验九 根据材料编程
了解了显存相关的知识,可以动手操作操作了,题目需要将字符串显示在特定的行列,如果学习过数据结构或者对二维数组较为了解,求解二维数组中R行C列的元素前面一共有多少个元素?一定知道这么一个计算方法:(R * nums + C),nums表示每一行元素的个数。
显存内存的分布也可以类比成二维数组,每一行一共有 80 个元素,每个元素占用 2 个字节,那么每一行占用了80 * 2 = 160字节,求解R行C列前面占用的空间就可以得到表达式:(R * 160 + C * 2 ) 字节。
实现代码
assume cs:code, ds:data
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov dh, 10 ;行号 范围 0 ~ 24
mov dl, 3 ;列号 范围 0 ~ 79
mov cl, 2 ;颜色(取值范围0 ~ 79)
mov ax, data
mov ds, ax
mov si, 0;ds偏移
mov di, 0;es偏移
mov bl, cl ;bl保存需要改变的颜色
mov ax, 0B800H