编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 ‘welcome to masm!’。
编程所需的知识通过阅读、分析下面的材料获得。
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!'
db 00000010B,00100100B,01110001B
data ends
stack segment ;栈区用于存放临时变量
dw 8 dup(0)
stack ends
code segment
start: ;row:12,13,14 col:33
mov ax,stack ;设置栈寄存器
mov ss,ax
mov sp,16 ;栈区大小为16个字节
mov ax,data ;使ds指向存放字符串的数据段
mov ds,ax
mov si,0 ;作为偏移量,用于指向每个字符
mov bp,16 ;指向颜色列表的起始地址
mov ax,0b800h ;使es指向显示缓冲区
mov es,ax
mov bx,6e0h ;对应行
mov di,64 ;对应列
mov cx,3 ;设置写入的行数
s0:push cx ;保存临时变量
push di
push si
mov ah,ds:[bp] ;设置待写入字符串的颜色
mov cx,16 ;待写入的字符串的字符个数
s1:mov al,ds:[si] ;读取待写入的字符
mov es:[bx+di],ax ;将待写入字符,以及颜色设置一起写入显示缓冲区
inc si ;指向下一个待写入字符
add di,2 ;指向显示缓冲区的下一个位置
loop s1
add bx,0A0h ;指向下一行
pop si
pop di
pop cx
inc bp ;指向下一种颜色的地址
loop s0
mov ax,4c00h
int 21h
code ends
end start