程序如下:
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0 ;让ds:si指向data段首
call show_str
mov ax,4c00h
int 21h
show_str:
mov ax,0b800h
mov es,ax ;让es指向b800段
mov al,160
sub dh,1
mul dh ;计算行数,结果在ax中
mov bx,ax ;把行数转放到bx中
mov dh,0
add bx,dx ;行数与列数相加,结果放入bx中
add bx,1
s: mov al,[si]
mov ah,0
mov es:[bx],al ;以上3句实现把字符放入显存
add bx,1
mov es:[bx],cl ;该句实现把颜色放入显存相应位置
push cx ;把颜色参数cl压入堆栈保存
mov cl,[si] ;将ds:si里的字符放入cx,供下面的jcxz检查cx是否为0时使用
mov ch,0
jcxz ok
pop cx ;如果cx不等于0,则接着执行该句,把颜色参数从栈中弹出恢复到cx中,供下一轮循环使用。
add si,1
add bx,1
jmp s
ok: pop cx
ret
code ends
end start
- [tomato] 你的理解是正确的。 03/23 20:04
- [tomato] 正确。 03/23 16:58
- [游客] 加油啊! 02/28 22:08
- [wsrf] 正确! 02/14 10:08
- [游客] 谢谢tomato,大十五的还给批改作业,辛苦了啊! 02/09 19:21
- [tomato] 正确! 02/09 15:22
- [tomato] 正确! 02/09 15:19
- [tomato] 正确! 02/09 15:12
- [crazyman] 问题1:建议从command下进行实验,cmd有时候会有莫名其妙的现象。 问题2:如果向博主说的那 02/07 17:01
- [游客] 好的,我也问了很多其他人,大家都说是cmd下运行的原因,容易出错,您明天没有时间就别看了,我正在改思 02/06 21:45