| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 589 人关注过本帖
标题:不知道贴长代码会不会有人看。。但我实在不知道哪里出错了,请各位帮忙看下 ...
只看楼主 加入收藏
霖海听涛
Rank: 2
等 级:论坛游民
帖 子:16
专家分:22
注 册:2010-7-18
结帖率:66.67%
收藏
已结贴  问题点数:5 回复次数:8 
不知道贴长代码会不会有人看。。但我实在不知道哪里出错了,请各位帮忙看下吧~
代码如下:
DATA SEGMENT
MESSAGE  DB 'INPUT STRINGS:',13,10,'$'
DATA1    DB 100 DUP(?)

DATA3    DB 'RESULT=',13,10,'$'
CR       DB 13,10,'$'
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    MOV BX,0
    MOV CX,0
    MOV DX,OFFSET MESSAGE
    MOV AH,09H
    INT 21H
    MOV SI,OFFSET DATA1
L1:     
    MOV AH,01H
    INT 21H
    CMP AL,0DH
    JMP NEXT
    MOV [SI+BX],AL
    INC BX
   
    CMP AL,'0'
    JB L1
    CMP AL,'9'
    JA L1
    INC CX
   
JMP L1
NEXT:   
    MOV DX,OFFSET DATA3
    MOV AH,09H
    INT 21H
        
    DEC BX
    MOV CX,BX
    MOV SI,OFFSET DATA1
L2:   
    MOV AH,02H
    MOV DL,[SI]
    ADD DL,30H
    INT 21H
    INC SI
LOOP L2
    MOV AH,4CH
    INT 21H
CODE ENDS
END  START
运行结果是,先输出INPUT:
然后随便输入一个字符都会跳出一大段乱码。
请问哪里出问题了?
2011-10-22 15:15
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
    CMP AL,0DH
    JMP NEXT
这里应该是
    CMP AL,0DH
    JZ NEXT

2011-10-22 15:29
霖海听涛
Rank: 2
等 级:论坛游民
帖 子:16
专家分:22
注 册:2010-7-18
收藏
得分:0 
回复 2楼 obstratiker
饿,这个没发现。。
从键盘输入一个字符串然后显示出来,对其中的数字进行计数
要怎么改才能实现呢?
2011-10-22 15:38
霖海听涛
Rank: 2
等 级:论坛游民
帖 子:16
专家分:22
注 册:2010-7-18
收藏
得分:0 
回复 3楼 霖海听涛
DATA SEGMENT
MESSAGE  DB 'INPUT STRINGS:',13,10,'$'
DATA1    DB 100 DUP(?)

DATA3    DB 'RESULT','=','$'
CR     DB 13,10,'$'
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    MOV BX,0
    MOV CX,0
    MOV DX,OFFSET MESSAGE
    MOV AH,09H
    INT 21H
    MOV SI,OFFSET DATA1
L1:     
    MOV AH,01H
    INT 21H
    CMP AL,0DH
    JZ NEXT
    MOV [SI+BX],AL
    INC BX
   
    CMP AL,'0'
    JB L1
    CMP AL,'9'
    JA L1
    INC CX
   
JMP L1
NEXT:
    MOV DX,OFFSET CR
    MOV AH,09H
    INT 21H
    MOV DX,OFFSET DATA3
    MOV AH,09H
    INT 21H
    MOV AH,02H
    MOV DL,CL
    INT 21H
    MOV DX,OFFSET CR
    MOV AH,09H
    INT 21H
        
    MOV CX,BX
   
L2:   
    MOV AH,02H
    MOV DL,[SI]
    INT 21H
    INC SI
LOOP L2
    MOV AH,4CH
    INT 21H
CODE ENDS
END  START
程序我改了下,能够输出键入的字符串,但是计数器的数输出不了,能帮忙看下是怎么回事吗?
2011-10-22 16:02
霖海听涛
Rank: 2
等 级:论坛游民
帖 子:16
专家分:22
注 册:2010-7-18
收藏
得分:0 
回复 2楼 obstratiker
DATA SEGMENT
MESSAGE  DB 'INPUT STRINGS:',13,10,'$'
DATA1    DB 100 DUP(?)

DATA3    DB 'RESULT','=','$'
CR     DB 13,10,'$'
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    MOV BX,0
    MOV CX,0
    MOV DX,OFFSET MESSAGE
    MOV AH,09H
    INT 21H
    MOV SI,OFFSET DATA1
L1:     
    MOV AH,01H
    INT 21H
    CMP AL,0DH
    JZ NEXT
    MOV [SI+BX],AL
    INC BX
   
    CMP AL,'0'
    JB L1
    CMP AL,'9'
    JA L1
    INC CX
   
JMP L1
NEXT:
    MOV DX,OFFSET CR
    MOV AH,09H
    INT 21H
    MOV DX,OFFSET DATA3
    MOV AH,09H
    INT 21H
    MOV AH,02H
    MOV DL,CL
    INT 21H
    MOV DX,OFFSET CR
    MOV AH,09H
    INT 21H
        
    MOV CX,BX
   
L2:   
    MOV AH,02H
    MOV DL,[SI]
    INT 21H
    INC SI
LOOP L2
    MOV AH,4CH
    INT 21H
CODE ENDS
END  START
程序我改了下,能够输出键入的字符串,但是计数器的数输出不了,能帮忙看下是怎么回事吗?
2011-10-22 16:03
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
中断中的dl是字符的ASCII值,所以
        MOV DL,CL
加入    add cl,30h
        INT 21H
不过话说这只能输出0~9的数字
如果要完全满足还得改改
2011-10-22 17:38
霖海听涛
Rank: 2
等 级:论坛游民
帖 子:16
专家分:22
注 册:2010-7-18
收藏
得分:0 
咳咳。求指点~
2011-10-22 17:50
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:5 
一般来说是把数字转换成字符串,然后再显示
不过你也可以这样
    cmp cl,9
    je s
s:  inc ch
......

然后add cx,3030h
然后把ch,cl依次输出就行
这样可以容纳99个输入的数字
对一般情况来说够用了
就不用使用数字转换成字符串这么麻烦的方法
2011-10-22 18:22
霖海听涛
Rank: 2
等 级:论坛游民
帖 子:16
专家分:22
注 册:2010-7-18
收藏
得分:0 
回复 8楼 obstratiker
用div求商和余数能转换吗?
2011-10-22 18:34
快速回复:不知道贴长代码会不会有人看。。但我实在不知道哪里出错了,请各位帮忙 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016510 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved