| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 603 人关注过本帖
标题:[求助]这程序应该怎样改
只看楼主 加入收藏
ADALE
Rank: 2
等 级:新手上路
威 望:4
帖 子:483
专家分:0
注 册:2005-11-18
收藏
 问题点数:0 回复次数:5 
[求助]这程序应该怎样改
DATA SEGMENT
BUF DB 0,1,2,3,4,5,6,7,8,9
NUM DB 0
RES DB 3 DUP(?)
STR1 DB 'Please Input Number:','$'
STR2 DB 'The Result Is : ','$'
STR3 DB 'Continue … yes or not?','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DI,RES
BEGIN:MOV DX,OFFSET STR1
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
MOV AH,0
MOV CX,AX
LEA SI,BUF
MOV BL,BYTE PTR[SI]
ADD1:INC SI
ADD BL,[SI]
LOOP ADD1

LEA DX,STR2
MOV AH,09H
INT 21H
CMP BL,10
JGE NEXT
MOV DL,BL
ADD DL,30H
MOV AH,02H
INT 21H
JMP REPEAT

NEXT:MOV BH,0
MOV AX,BX
MOV BL,10
DIV BL
MOV [DI],AH
INC DI
INC NUM
CMP AL,0
JG NEXT
MOV CL,NUM
MOV CH,0 ;CX==NUM
PRINT:MOV DL,[DI]
ADD DL,30H
MOV AH,02H
INT 21H
DEC DI
LOOP PRINT
REPEAT:
LEA DX,STR3
MOV AH,09H
INT 21H
MOV AH,0AH
MOV AH,02
INT 21H
CMP DX,'Y'
JZ BEGIN
MOV AH,4CH
INT 21H
CODE ENDS
END START

输出的结果有问题
2006-04-27 14:42
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

程序我没仔细看,当你输入的数字累加后的值大于10就出现错误了;我把大体这部分的代码给你;


我的原则很简单:不做不喜欢的事!
2006-04-27 16:58
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

假定累加后值是123
MDIV: MOV BL,10
DIV BL ;123/10,商=AL,余数=AH
MOV [DI],AH ;则余数存放到了BUF单元

MOV BL,AL
MOV BH,0
MOV AX, BX ;将商做为被除数继续除
CMP AX,0
JZ PRINT ;当商=0,则结束除,打印结果

INC DI ;否则继续除,DI+1,指向下一个单元
JMP MDIV ;继续除

;当除完后,BUF单元的数据依次存放为3,2,1,所以打印的时候要从后往前打印,不错此刻的DI已经指向了BUF的最后一个单元
PRINT: MOV SI,OFFSET BUF
NEXT: MOV DL,[DI]
MOV AH,2
INT 21H
DEC DI
CMP DI,SI
JNZ NEXT ;如果SI!=DI,则继续打印前一个数


我的原则很简单:不做不喜欢的事!
2006-04-27 17:00
ADALE
Rank: 2
等 级:新手上路
威 望:4
帖 子:483
专家分:0
注 册:2005-11-18
收藏
得分:0 

DATA SEGMENT
BUF DB 0,1,2,3,4,5,6,7,8,9
NUM DB 0
RES DB 3 DUP(?)
STR1 DB 'Please Input Number:','$'
STR2 DB 'The Result Is : ','$'
STR3 DB 'Continue OR NOT','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DI,RES
BEGIN:MOV DX,OFFSET STR1
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
MOV AH,0
MOV CX,AX
LEA SI,BUF
MOV BL,BYTE PTR[SI]
ADD1:INC SI
ADD BL,[SI]
LOOP ADD1

LEA DX,STR2
MOV AH,09H
INT 21H
CMP BL,10
JGE NEXT
MOV DL,BL
ADD DL,30H
MOV AH,02H
INT 21H
JMP REPEAT
MDIV: MOV BL,10
DIV BL ;123/10,商=AL,余数=AH
MOV [DI],AH ;则余数存放到了BUF单元

MOV BL,AL
MOV BH,0
MOV AX, BX ;将商做为被除数继续除
CMP AX,0
JZ PRINT ;当商=0,则结束除,打印结果

INC DI ;否则继续除,DI+1,指向下一个单元
JMP MDIV ;继续除

;当除完后,BUF单元的数据依次存放为3,2,1,所以打印的时候要从后往前打印,不错此刻的DI已经指向了BUF的最后一个单元
PRINT: MOV SI,OFFSET BUF
NEXT: MOV DL,[DI]
MOV AH,02H
INT 21H
DEC DI
CMP DI,0
JNZ NEXT ;如果SI!=DI,则继续打印前一个数


REPEAT:
LEA DX,STR3
MOV AH,09H
INT 21H

MOV AH,01H
INT 21H

CMP AL,'Y'
JZ BEGIN
MOV AH,4CH
INT 21H
CODE ENDS
END START

我按你的修改过我原来的程序,可是还是有错

结果仍然不正确,而且不能跳转回开头


喜欢宁静的平凡生活
2006-04-27 22:49
ADALE
Rank: 2
等 级:新手上路
威 望:4
帖 子:483
专家分:0
注 册:2005-11-18
收藏
得分:0 
设从STR开始存放有一个字符串,统计字符串中字符A的个数,存放在RESU字节单元中,并以十六进制形式将结果输出

我想问的是程序会不会很长 我写的会

喜欢宁静的平凡生活
2006-04-27 22:58
ADALE
Rank: 2
等 级:新手上路
威 望:4
帖 子:483
专家分:0
注 册:2005-11-18
收藏
得分:0 

DATA SEGMENT
BUF DB 0,1,2,3,4,5,6,7,8,9
NUM DB 0
RES DB 3 DUP(?)
STR1 DB 'Please Input Number:','$'
STR2 DB 'The Result Is : ','$'
STR3 DB 'Continue OR NOT','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DI,RES
BEGIN:MOV DX,OFFSET STR1
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
MOV AH,0
MOV CX,AX
LEA SI,BUF
MOV BL,BYTE PTR[SI]
ADD1:INC SI
ADD BL,[SI]
LOOP ADD1

LEA DX,STR2
MOV AH,09H
INT 21H
CMP BL,10
JGE NEXT
MOV DL,BL
ADD DL,30H
MOV AH,02H
INT 21H
JMP REPEAT
MDIV: MOV BL,10
DIV BL ;123/10,商=AL,余数=AH
MOV [DI],AH ;则余数存放到了BUF单元

MOV BL,AL
MOV BH,0
MOV AX, BX ;将商做为被除数继续除
CMP AX,0
JZ PRINT ;当商=0,则结束除,打印结果

INC DI ;否则继续除,DI+1,指向下一个单元
JMP MDIV ;继续除

;当除完后,BUF单元的数据依次存放为3,2,1,所以打印的时候要从后往前打印,不错此刻的DI已经指向了BUF的最后一个单元
PRINT: MOV SI,OFFSET BUF
NEXT: MOV DL,[DI]
ADD DL,30H
MOV AH,02H
INT 21H
DEC DI
CMP DI,SI
JNZ NEXT ;如果SI!=DI,则继续打印前一个数


REPEAT:
LEA DX,STR3
MOV AH,09H
INT 21H

MOV AH,01H
INT 21H

CMP AL,'Y'
JZ BEGIN
MOV AH,4CH
INT 21H
CODE ENDS
END START

我又改过啦 帮我看看,这次只是输出的结果不对


喜欢宁静的平凡生活
2006-04-28 18:00
快速回复:[求助]这程序应该怎样改
数据加载中...
 
   



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

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