实验九
题目与个人思路
编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串’welcome to masm!’。
在80*25彩色字符模式下,显示器可以显示25行,每行80个字符。根据题意大致效果如下图所示。
11行的起始地址计算10*80*2=1600=0640H。
即B8640H(B800:0640)。修改B800:0640的值验证计算。
第33个字符的地址计算,32*2=64=0040H。1600+64=1664=0680H
综上所述11行第33个字符的起始地址=B800:0680。修改B800:0680的值验证计算
编写程序如下:
assume cs:codesg
data segment
db 'welcome to masm!'
data ends
codesg segment
start:
mov ax,data
mov ds,ax
mov ax,0B800H
mov es,ax
sub bx,bx
sub si,si
mov cx,16
green:
mov al,ds:[si]
mov ah,00000010B
mov es:[1664+bx],ax ;第11行
mov al,ds:[si]
mov ah,00100100B
mov es:[1664+160+bx],ax ;第12行
mov al,ds:[si]
mov ah,01110001B
mov es:[1664+160+160+bx],ax ;第13行
inc si
add bx,2
loop green
mov ax,4c00H
int 21H
codesg ends
end start
直接运行,效果如下: