任务要求:自学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的空间,并且知道了如何将字符输出到屏幕中央,举一反三,我可以随心所欲的将我想要输出的内容输出到屏幕上的任何一个地方,并能控制字符颜色,字符背景颜色以及字符是否闪烁和是否高亮,学习了许多新的知识,开扩了自己的眼界。