鱼C论坛

 找回密码
 立即注册
查看: 3483|回复: 7

实验十求助了

[复制链接]
发表于 2011-8-9 15:30:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实验十的编写子程序显示字符,为什么我的没有显示啊!求助一下!编译通过,但是不显示绿色的  Welcome to masm!
而且我还有一个疑问 show_str里面为什么直接可以push  cx,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:[si]

            jcxz ok
                        
                        mov es:[bx+di],cl
                        mov es:[bx+di+1],al
                        
                        inc si
                        
                        add di,2
                        jmp short s
                        
ok:         pop si
            pop cx
                        
                        ret
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-10 09:40:59 | 显示全部楼层
求解决啊。。帮帮忙啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-10 10:26:18 | 显示全部楼层
你这代码太乱,如果是你写的建议多看看甲鱼的视频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-10 10:33:51 | 显示全部楼层
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:[si]
            jcxz ok
            mov es:[bx+di],cl
            mov es:[bx+di+1],21h
            inc si
            add di,2
            jmp short s       
ok:      ret

code ends
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-10 14:39:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-10 14:41:16 | 显示全部楼层
你可以自己测试下!!你夹杂那多垃圾代码干嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-17 10:18:35 | 显示全部楼层

我前几天 搞不懂这个问题
今天又看了你得程序
懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-17 10:42:15 | 显示全部楼层
确实不需要      push cx  push si
之所以有这个,是因为在show_str中有改变了cx、si的值,为了防止调用show_str的父程序的值受到影响
如果不加push cx push si,也可采用
push cx
push si
call show_str
pop si
pop cx;在子程序调用结束后恢复也是一样的


不能显示出字符串实在看不出原因,你可以debug一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 22:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表