CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

运行的结果为什么会有“小花“?

楼主houguangyun()2006-03-04 09:11:15 在 其他开发语言 / 汇编语言 提问

DATA     SEGMENT  
                  BUFS     DB                 10   DUP(?)  
                  BUFD     DB                 10   DUP   (?)  
                TOTAL     DW                 ?  
              NOZERO     DB                 ?  
                      YE     DB                 ?  
                      M1     DB                 'please   input   the   some   chars.....',13,10,'$'  
                      M2     DB                 'the   result   is....',13,10,'$'  
                  DATA     ENDS  
   
                  CODE     SEGMENT  
                              ASSUME         CS:CODE,DS:DATA  
              START:  
                              MOV               AX,DATA  
                              MOV               DS,AX  
   
                              LEA               DX,M1  
                              CALL             PROMPT  
                              CALL             CRLF  
   
                              MOV               SI,0  
            COMMON:  
                              MOV               AH,1  
                              INT               21H  
   
                              CMP               AL,13  
                              JE                 INOVER  
   
                              MOV               BUFS[SI],AL  
                              INC               SI  
   
                              CMP               SI,10D  
                              JB                 COMMON  
            INOVER:  
                              MOV               TOTAL   ,SI  
   
                              LEA               DX,M2  
                              CALL             PROMPT  
                              CALL             CRLF  
   
                              LEA               DX,BUFS  
                              CALL             PROMPT  
                              CALL             CRLF  
                              MOV               BX,TOTAL  
                              MOV               YE,BL  
                              MOV               BL,YE  
   
                              CALL             PUTOUTDEC  
   
                              MOV               AH,4CH  
                              INT               21H  
        PUTOUTDEC     PROC  
                              PUSH             CX  
                              MOV               NOZERO,0  
                              MOV               CL,100  
                              CALL             MAIN  
                              MOV               CL,10  
                              CALL             MAIN  
                              MOV               CL,1  
                              CALL             MAIN  
                              CMP               NOZERO,0  
                              JNE               LL  
                              MOV               DL,30H  
                              MOV               AH,2  
                              INT               21H  
                    LL:     POP               CX  
                              RET  
                  MAIN     PROC  
                              MOV               AL,BL  
                              MOV               AH,0  
                              DIV               CL  
                              MOV               BL,AH  
                              MOV               DL,AL  
                              CMP               DL,0  
                              JNE               LLL  
                              CMP               NOZERO,0  
                              JNE               LLL  
                              JMP               LL2  
                  LLL:  
                              MOV               NOZERO,1  
                              ADD               DL,30H  
                              MOV               AH,2  
                              INT               21H  
                  LL2:  
                              RET  
                  MAIN     ENDP  
        PUTOUTDEC     ENDP  
                  CRLF     PROC  
                              MOV               DL,13  
                              MOV               AH,2  
                              INT               21H  
                              MOV               DL,10  
                              MOV               AH,2  
                              INT               21H  
                              RET  
                  CRLF     ENDP  
              PROMPT     PROC  
                              MOV               AH,09H  
                              INT               21H  
                              RET  
              PROMPT     ENDP  
                  CODE     ENDS  
                              END               START  
   
  哪位高手先运行一下试试看,我运行的结果是有一个小花,还有一行不该出现的文字  
  是这样的:  
  假如说输入的是123vabn  
  运行的结果为:  
  please   input   the   some   chars.....                    
  result   is....  
   
  123vabn;就在这个地方一个小花,还有please   input   the   some   chars.....  
  7  
   
  问题点数:20、回复次数:2Top

1 楼NeoZero(龙王零式)回复于 2006-03-04 18:36:31 得分 0

下面是按我的习惯作了修改,为什么在字符串里有回车换行你还要CRLF,而在输入了字符以后又不CRLF。在BUFS后面必须加'$'才能正常结束,还有MOV   YE,BL   MOV   BL,YE我觉得是重复的。另外输入长度最多也就10个字节,没有必要用双字也没有必要在转BIN时除于100。  
  START:  
                              MOV               AX,DATA  
                              MOV               DS,AX  
   
                              LEA               DX,M1  
                              CALL             PROMPT  
   
                              MOV               SI,0  
            COMMON:  
                              MOV               AH,1  
                              INT               21H  
   
                              CMP               AL,13  
                              JE                 INOVER  
   
                              MOV               BUFS[SI],AL  
                              INC               SI  
   
                              CMP               SI,10D  
                              JB                 COMMON  
            INOVER:  
                              MOV               TOTAL   ,SI  
                              CALL             CRLF  
   
                              LEA               DX,M2  
                              CALL             PROMPT  
   
                              MOV               BUFS[SI],'$'  
                              LEA               DX,BUFS  
                              CALL             PROMPT  
   
                              MOV               BX,TOTAL  
                              MOV               YE,BL  
   
                              CALL             PUTOUTDECTop

2 楼TB804()回复于 2006-03-07 06:20:58 得分 0

DTop

相关问题

  • 为什么运行结果是这个!~
  • 为什么运行结果是这样
  • 怪事!为什么Debug和Release运行结果不一样呢?
  • 为什么这个简单的程序运行没有结果?
  • 请看我的代码,为什么运行是没有结果。
  • 为什么在PB中 RUN("dir >D:\b.txt") 运行没有结果?
  • 为什么我的TC3.0运行不出结果?
  • 这个存储过程运行结果为什么不正确?????
  • 奇怪,为什么会是这个运行结果呢?
  • 为什么这段程序逐语句运行时可以得到正常运行结果,直接运行就得不到运行的要求

关键词

  • ds
  • db
  • mov
  • nozero
  • crlf
  • si
  • ah
  • inover
  • putoutdec
  • bl

得分解答快速导航

  • 帖主:houguangyun

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo