实验 9 根据材料编程
1. 补全程序 t1.asm,完成在屏幕上输出内存单元中的十进制两位数
实验代码:

在数据段中所给数据的后两个字节分别用于存放商和余数,所以先随便存入两个数据,在编译时分配数据空间,以便程序后续的使用。在将data段的段地址送入段寄存器ds后,把偏移地址[0]处的被除数12送入寄存器ax中并进行除法操作,除法的余数自动放入ah中,商自动放入al中,将这两个值分别放入偏移地址为1和2的内存单元中。然后利用之前所学的在屏幕上输出字符的操作,在数字的ASCII码数值基础上加上48使之转化为字符,并输出在屏幕上。
实验结果:

在对程序编译连接后运行结果为12,正确把所给数据输出到了屏幕上。


在上图可以看到在执行玩除法操作后,寄存器ax中的值变为了0201,02即为余数,01为商。

在把ah和al的值送入偏移地址为1和2的内存单元后,对这两个单元进行查看,前一个内存单元存放商,后一个存放余数,数据正确。

执行在屏幕上输出字符的相关操作后,首先输出了商1。

然后输出了余数2,操作和上步基本相同。
2. 补全程序 t2.asm,完成在屏幕上输出 data 段定义的 5 个十进制两位数,数据和数据之间以空格间隔。
实验代码:

相关的操作和任务一相似,只是以循环实现对多个数据的除法操作。
实验结果:

不再对程序的细节进行阐述,和任务一相似。
3.在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串:“welcome to masm!”。
实验代码:

这个程序是在80*25彩色字符模式显示缓冲区进行相关的操作,内存单元为b8000h-bffffh共32KB的空间。在显示缓冲区中,一个字符占用两个字节的存储单元,前一个字节存储字符的ASCII码值,后一个字节存储字符的属性。
属性字节的格式 7 6 5 4 3 2 1 0
含义 BL R G B I R G B
闪烁 背景 高亮 前景
所以黑底绿字属性字节为00000100B,绿底红字字节属性为00100100B,白底蓝字字节属性为01110001B。
实验结果:

对程序进行编译连接后,执行可以看到在屏幕中央输出了指定要求的字符。
总结:经过这次的实验实践了如何把数字以除法的形式逐个位次输出到屏幕上,学到了彩色字符模式显示缓冲区的相关知识,对实验内容也已经基本掌握,在最后一个实验的相关操作还没有完全熟练掌握,需要更多的思考和实践。

浙公网安备 33010602011771号