鱼C论坛

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

实验十求助了

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

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

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

x
实验十的编写子程序显示字符,为什么我的没有显示啊!求助一下!编译通过,但是不显示绿色的  Welcome to masm!
而且我还有一个疑问 show_str里面为什么直接可以push  cx,cx的值刚开始没有的啊,只有cl有个2.请大家帮帮
  1. assume cs:code,ds:data
  2. data segment
  3.   
  4.    db 'Welcome to masm!',0
  5.    
  6. data ends


  7. code segment

  8. start:   

  9.            mov dh,8
  10.            mov dl,3
  11.                mov cl,2
  12.                   
  13.                mov ax,data
  14.                   
  15.                mov ds,ax
  16.                   
  17.                mov si,0
  18.                   
  19.                call show_str
  20.           
  21.                mov ax,4c00h
  22.                int 21h
  23.           
  24. show_str :  
  25.             push cx
  26.             push si
  27.                        
  28.                         mov al,0A0h
  29.                        
  30.                         dec dh
  31.                         mul dh
  32.                        
  33.                         mov bx,ax
  34.                        
  35.                         mov al,2
  36.                         mul dl
  37.                         sub ax,2
  38.                        
  39.                         add bx,ax
  40.                        
  41.                         mov ax,0B800h
  42.                         mov es,ax
  43.                        
  44.                         mov di,0
  45.                         mov al,cl
  46.                         mov ch,0
  47.                        
  48. s:          mov cl,ds:[si]

  49.             jcxz ok
  50.                        
  51.                         mov es:[bx+di],cl
  52.                         mov es:[bx+di+1],al
  53.                        
  54.                         inc si
  55.                        
  56.                         add di,2
  57.                         jmp short s
  58.                        
  59. ok:         pop si
  60.             pop cx
  61.                        
  62.                         ret
  63. code ends
  64. end start
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-10 09:40:59 | 显示全部楼层
求解决啊。。帮帮忙啊
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-10 10:26:18 | 显示全部楼层
你这代码太乱,如果是你写的建议多看看甲鱼的视频
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-10 10:33:51 | 显示全部楼层
  1. assume cs:code,ds:data

  2. data segment
  3.    db 'Welcome to masm!',0
  4. data ends

  5. code segment
  6. start:   
  7.            mov ax,data
  8.            mov ds,ax
  9.            mov si,0

  10.            call show_str

  11.            mov ax,4c00h
  12.            int 21h      

  13. show_str :  
  14.             mov ax,0B800h
  15.             mov es,ax
  16.             mov di,0
  17.             mov ch,0         

  18. s:         mov cl,ds:[si]
  19.             jcxz ok
  20.             mov es:[bx+di],cl
  21.             mov es:[bx+di+1],21h
  22.             inc si
  23.             add di,2
  24.             jmp short s      
  25. ok:      ret

  26. code ends
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-10 14:39:53 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-10 14:41:16 | 显示全部楼层
你可以自己测试下!!你夹杂那多垃圾代码干嘛?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-17 10:18:35 | 显示全部楼层

我前几天 搞不懂这个问题
今天又看了你得程序
懂了
小甲鱼最新课程 -> https://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一下
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-4-22 04:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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