想要用汇编在屏幕显示Welcome to masm!,却显示错误,求分析 5

代码:;在程序8行三列,用绿色显示data段的字符串assumecs:codedatasegmentdb'Welcometomasm!',0dataendscodeseg... 代码:
;在程序8行三列,用绿色显示data段的字符串assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start: mov dh,8h ;行
mov dl,3h ;列
mov cl,2h ;颜色
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h int 21h
;子程序,在显示屏的dh行dl列显示cl颜色的data段的字符串
show_str:
push si
push di
push es
push dx ;行,列
push cx ;颜色
push ax
push bx
mov ax,data mov ds,ax
mov al,160 ;进行乘法运算,将dh行数乘以160算出这一行的起始地址,
mul dh ;计算出行的偏移保存到ax中
mov dh,0
add ax,dx ;将ax与列值相加。此时ax为显示器中段偏移
mov dx,0b800h ;将显示段设置为es
mov es,dx
mov di,ax ;将ax赋值给了di。这时di是这个显示段的首显示位置偏移
s: mov es:[bx+di],cl ;将颜色属性放到显示段中
mov ax,ds:[si] ;将数据段中的第一个数据放置到ax寄存器中
mov es:[bx+di+1],ax ;将数据段的第一个数据放置到显示段中
inc si ;循环变量的操作
add bx,01h ;循环变量
jcxz s0 ;判断ax是否是0,是的话就停止循环。
loop s
s0: pop bx
pop ax
pop cx
pop dx
pop es
pop di
pop si
ret
code ends
end start
结果:
展开
 我来答
匿名用户
2013-01-30
展开全部
用debug自己调试一下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式