王爽 汇演语言 实验9

在屏幕中间显示绿色,绿底红色,白底蓝色的字符串'Welcome to masm'。

背景知识:

80x25彩色字符模式显示缓冲区(一下简称为显示缓冲区)的结构:

内存地址空间中,B8000H-BFFFFH共32KB的空间,为80x25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。

在一行中,一个字符占两个字节的存储空间,低位字节存储字符的ASCII码,高位字节存储字符的属性,一行共有160个字节

属性字节的格式:

7         6     5    4    3    2    1    0

BL       R    G    B   I    R    G    B

7为闪烁     456为背景 3为高亮  012为前景

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

代码如下:

assume cs:code
data segment 
    db 'Welcome to masm!'
data ends

code segment
    start:mov ax,data
          mov ds,ax
          
          mov ax,0b800H
          mov es,ax
          
          mov si,0
          mov di,10*160+40                ;确定要显示的位置
          mov cx,16
        s:mov al,ds:[si]                      ;低位存储ASCII码
          mov ah,00000010B              ;高位存储属性
          mov es:[di],ax
          inc si
          add di,2                                 ;一个字符占用两个字节
          loop s
       
          mov si,0
          mov di,11*160+40
          mov cx,16
       s1:mov al,ds:[si]
          mov ah,00100100B
          mov es:[di],ax
          inc si
          add di,2 
          loop s1
          
          mov si,0
          mov di,12*160+40
          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
code ends
end start

结果截图:
王爽 汇演语言 实验9