使用一个循环完成实验九。
编程:
在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串:“welcome to masm!”
程序分析:
1)在内存中定义并初始化一个字符串:“welcome to masm!”(这个在数据段中定义就可以,使用db)
2)由材料提示(这里是8位的二进制的组合,形成一个属性)
属性字节的格式:
7 6 5 4 3 2 1 0
BL(闪烁) R(背景) G(背景) B(背景) I(高亮) R(前景) G(前景) B(前景)
知道: 绿色属性:00000010B==02H
绿底红色:00100100B==24H
白底蓝色:01110001B==71H
3)在命令提示符窗口或dos窗口,我们可以显示80X25的字符(我的机器行数多,命令提示符窗口,跟设置有关)。每行80个字符,一共是25行。它们在内存中是在一个内存段中存储的,这个内存区域叫做显示缓冲区。从物理地址B8000H~BFFFH这个32K的内存区域就是显示缓冲区。
assume cs:code,ds:data,ss:stacksg
data segment
db 'welcome to masm!'
db 02H,24H,71H
data ends
stacksg segment
dw 0
stacksg ends
code segment
start: mov ax,data
mov es,ax
mov ax,stacksg
mov ss,ax
mov sp,2
mov ax,0B800H
mov ds,ax
mov bx,160*11 ;行偏移地址
sub bp,bp
mov cx,3
words: push cx
sub si,si ;数据段偏移地址
mov di,32*2 ;列偏移地址
mov cx,10H ;内层循环次数
s: mov al,es:[si]
mov [bx+di],al
mov al,es:[bp+16]
mov [bx+di+1],al
add di,2
inc si
loop s
add bx,160
inc bp
pop cx
loop words
mov ax,4c00h
int 21h
code ends
end start