任务要求:自学P188的有关显示显存、显示字符串的学习材料,在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串“welcome to masm”。
一、分析设计想法
这个题目的本质是循环读取字符,将字符复制到寄存器中并放到指定的显存内存单元中,并控制好字符的属性字节即可,非常有趣,能比较直观的控制显存。
二、程序的设计
assume cs:codesg data segment db 'welcome to masm!' data ends stack segment stack ends codesg segment start: mov ax,data mov ds,ax mov ax,0B800H mov es,ax;将显存的位置放入es mov cx,16 mov si,0 mov di,12*160+64 ;屏幕中央 s0: mov al,ds:[si] mov ah,00000010B ;黑底绿色 mov es:[di],ax ;将数据段的字符放入附加段(即显存中) inc si add di,2 loop s0 add di,160-32 ;下一行 mov si,0 mov cx,16 s1: mov al,ds:[si] mov ah,00100100B ;绿底红字 mov es:[di],ax;将数据段的字符放入附加段(即显存中) inc si add di,2 loop s1 add di,160-32 ;下一行 mov si,0 mov cx,16 s2: mov al,ds:[si] mov ah,01110001B ;白底蓝色 mov es:[di],ax; 将数据段的字符放入附加段(即显存中) inc si add di,2 loop s2 mov ax,4c00H int 21H codesg ends end start
三、程序的结果
四、心得体会
通过自学汇编程序设计有关显示显存、显示字符串的学习材料,我了解了显存在内存地址空间中的位置是B8000H~BFFFFH共32KB的空间,并且知道了如何将字符输出到屏幕中央,举一反三,我可以随心所欲的将我想要输出的内容输出到屏幕上的任何一个地方,并能控制字符颜色,字符背景颜色以及字符是否闪烁和是否高亮,学习了许多新的知识,开扩了自己的眼界。