实验十求助了
实验十的编写子程序显示字符,为什么我的没有显示啊!求助一下!编译通过,但是不显示绿色的Welcome to masm!而且我还有一个疑问 show_str里面为什么直接可以pushcx,cx的值刚开始没有的啊,只有cl有个2.请大家帮帮
assume cs:code,ds:data
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
call show_str
mov ax,4c00h
int 21h
show_str :
push cx
push si
mov al,0A0h
dec dh
mul dh
mov bx,ax
mov al,2
mul dl
sub ax,2
add bx,ax
mov ax,0B800h
mov es,ax
mov di,0
mov al,cl
mov ch,0
s: mov cl,ds:
jcxz ok
mov es:,cl
mov es:,al
inc si
add di,2
jmp short s
ok: pop si
pop cx
ret
code ends
end start
求解决啊。。帮帮忙啊 你这代码太乱,如果是你写的建议多看看甲鱼的视频 assume cs:code,ds:data
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str :
mov ax,0B800h
mov es,ax
mov di,0
mov ch,0
s: mov cl,ds:
jcxz ok
mov es:,cl
mov es:,21h
inc si
add di,2
jmp short s
ok: ret
code ends parbbo 发表于 2011-8-10 10:33 static/image/common/back.gif
这是??正确的? 你可以自己测试下!!你夹杂那多垃圾代码干嘛? parbbo 发表于 2011-8-10 10:33 static/image/common/back.gif
我前几天 搞不懂这个问题
今天又看了你得程序
懂了{:5_95:}
确实不需要 push cxpush si
之所以有这个,是因为在show_str中有改变了cx、si的值,为了防止调用show_str的父程序的值受到影响
如果不加push cx push si,也可采用
push cx
push si
call show_str
pop si
pop cx;在子程序调用结束后恢复也是一样的
不能显示出字符串实在看不出原因,你可以debug一下
页:
[1]