实验9 根据材料编程
分析:阅读材料得知,一页显示25行,居中位置则是第12行,题目要求分别以上述3中颜色显示,择需要显示的三行分别为
第11行 第12行 第13行,前10行所占的字节数= 10 * 160 = 1600(0640H),所以第11行的起始偏移为 0640H,又由于一行是80个字符,所以一行的字符的起始位置 =( 一行总字符 - 所要显示的字符数)/ 2 = (80 - 16) = 64 (10H), 颜色3种 分别表示为02H、24H、71H
步骤:
1.定义字符串、定义颜色数据
2.循环3次,分别以3种颜色。
3.在颜色循环内,循环取出字符串,并将字符串的ASCII码值和属性值赋值给显示缓冲区
4.返回保存
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'welcome to masm!'
db 02h,24h,71h
datasg ends
stacksg segment
dw 8 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,0B800h
mov es,ax
mov ax,stacksg
mov ss,ax
mov sp,16
mov bx,10h
mov di,0640h
mov cx,3
s:
mov ah,ds:[bx]
push cx
push bx
mov bx,0
mov cx,16
mov si,0
s1:
mov al,ds:[si]
mov es:[di+64+bx],ax
add bx,2
inc si
loop s1
pop bx
pop cx
inc bx
add di,160
loop s
mov ax,4c00h
int 21h
codesg ends
end start