要求在屏幕中间分别显示绿色、绿底红色、白底蓝色的 welcome to masm!。
屏幕一行显示80个字符,所以显示16个字符在一行中间要从第40-7=33个字符开始,从第41+7=48个字符结束,33~48。每个字符占2个字节因此列地址从33+33-1-1=64开始,从48+48-1-1=94结束,64~94。
屏幕共25行,因此中间为第13行。一行有字节160个,所以第13行地址从160*12=1920开始,从1920+159=2079结束,1920~2079。
代码:
assume cs:codesg,ds:data
data segment
db 'welcome to masm!'
data ends
codesg segment
;初始化
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov di,0
mov si,40H
;welcome
mov cx,07h
s0: mov ah,00000010b
mov al,ds:[di]
mov es:[780H+si],ax
inc di
add si,2
loop s0
;空格
mov ah,00000010b
mov al,ds:[di]
mov es:[780H+si],ax
inc di
add si,2
;to
mov cx,02h
s1: mov ah,00100100b
mov al,ds:[di]
mov es:[78