'welcome to masm!'字符总数是16。
要让字符出现于屏幕正中间(即第13行中间位置),
其首字符地址:(160*13)+((160-16*2)/2)=2144 (860H)。
题目要求共显示三种样式,在此安排分别显示到第11行、13行、15行(隔行显示)。
第11行首字符地址:2144-160*2=1824 (720H)
第15行首字符地址:2144+160*2=2464 (9A0H)
以下为完整代码——
assume cs:codesg;ds:datasg
datasg segment
db 'welcome to masm!'
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,0B800H
mov es,ax
mov bx,0
mov si,0
mov cx,16
s:
mov al,[bx]
mov ah,02H ;00000010B 绿色字
mov es:[720H+si],ax ;写入第11行
mov ah,24H ;00100100B 绿底红色
mov es:[860H+si],ax ;写入第13行
mov ah,71H ;01110001B 白底蓝色
mov es:[9A0H+si],ax ;写入第15行
inc bx
add si,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
以上code部分的核心代码共17行。 |