俺是汇编初学者、、、刚看到这个题目时感觉有点蒙、、、经过几个小时的努力终于实现了此功能、、、
至于代码规范、优化之类的、、俺不是很懂、、希望大家给点意见、、
//////////////////////////////////////////////////////////////////////////////////////
assume cs:code,ds:data
data segment
db 'Welcome to asm !'
db 02h,24h,71h
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b872h ;计算出显示缓冲区12行的中间地址
mov es,ax
xor ax,ax
mov si,ax
mov di,ax
mov cx,10h
s: mov al,[si]
mov ah,ds:[10h] ;此为显示绿色字
mov es:[di],ax
mov ah,ds:[11h] ;此为显示绿底红色字
mov es:[160+di],ax ;di+160为di的下一行
mov ah,ds:[12h] ;此为显示白底蓝色字
mov es:[320+di],ax ;di+320为di的下两行
inc si
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start |