详情请参考《汇编语言》 p187 实验九——根据材料编程
请看实现代码:
assume cs:code,ds:datasg
datasg segment
db 'welcome to masm!' ;待处理字符
db 02H,24H,71H ;从10H定义颜色
datasg ends
stack segment
dw 8 dup(0) ;定义栈空间
stack ends
code segment
start: mov ax,datasg
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10H
mov ax,0b872h ;计算出屏幕第12行中间显存的段起始位置
mov es,ax
mov bx,0
mov di,0
mov si,10H ;颜色属性存放起始位置
mov cx,3 ;设置外循环3次
s: push cx ;入栈保护cx
mov cx,16 ;设置内循环16次
s0: ;将字符写入显存
mov al,[bx]
mov es:[di],al
;将属性写入显存
mov al,[si]
mov es:[di+1],al ;奇数为颜色属性
inc bx
add di,2 ;奇数为颜色属性
loop s0
add di,128 ;换行
inc si ;更换颜色属性
mov bx,0 ;内循环后将bx置零
pop cx ;出栈恢复cx计数器值(外循环)
loop s
mov ax,4c00h
int 21h
code ends
end start
以上代码仅供参考,可以有多种方法实现。
实验效果如下: