| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1370 人关注过本帖
标题:急----十进制的加法计算--为什么和大于等于10就出错了?
取消只看楼主 加入收藏
双面人
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2006-11-6
收藏
 问题点数:0 回复次数:6 
急----十进制的加法计算--为什么和大于等于10就出错了?

我的这段代码想实现任意两个十进制的数相加!
可是现在的问题是:结果如果大于或等于10的话,就会出现错误!
希望大家给改改,谢谢了!!!
能给注释的话最好,因为这段代码我看的也不是全懂,东找西凑的

程序代码如下:
DATA SEGMENT
X DB ?
Y DB ?
S DB ?
mess1 db "Input x=(0 quit)","$"
mess3 db 'Input y=','$'
mess2 db 'x+y=','$'
DATA ENDS
stack segment para stack 'stack'
dw 100 dup(?)
stack ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:stack
START: MOV AX,DATA
MOV DS,AX
l1: lea dx,mess1
mov ah,9
int 21h
MOV AH,1
INT 21H
cmp al,30h
je l2
MOV X,AL
call cr_lf
lea dx,mess3
mov ah,9
int 21h
MOV AH,1
INT 21H
MOV Y,AL
MOV AL,X
AND AL,0FH
MOV BL,Y
AND BL,0FH
ADD AL,BL
MOV S,AL
call cr_lf
push ax
mov dx,offset mess2
mov ah,9
int 21h
pop ax
OR AL,30H
MOV AH,2
MOV DL,AL
INT 21H
call cr_lf
jmp l1
l2: MOV AH,4CH
INT 21H
cr_lf proc
push ax
push dx
mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
pop dx
pop ax
ret
cr_lf endp
CODE ENDS
END START
搜索更多相关主题的帖子: 加法 十进制 stack SEGMENT DATA 
2007-04-24 18:17
双面人
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2006-11-6
收藏
得分:0 
我应该怎样做啊?
2007-04-24 22:46
双面人
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2006-11-6
收藏
得分:0 
我的意思就是怎么在这段代码中改呢?请多多指教!
2007-04-24 22:54
双面人
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2006-11-6
收藏
得分:0 

为什么没人改啊?郁闷!

2007-04-24 23:43
双面人
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2006-11-6
收藏
得分:0 

这个程序的结果不对啊!而且遇到有些数时好象还是死循环,屏幕一直乱跳!!!
希望大家再给改改啊!谢谢了!~

2007-04-25 13:29
双面人
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2006-11-6
收藏
得分:0 

为什么还是没人来改呢?

2007-04-25 22:54
双面人
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2006-11-6
收藏
得分:0 
有答案了:

DATA SEGMENT
X DB ?
Y DB ?
S DB ?,?
mess1 db "Input x=(0 quit)","$"
mess3 db 'Input y=','$'
mess2 db 'x+y=$'
DATA ENDS
stack segment para stack 'stack'
dw 100 dup(?)
stack ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ss:stack
START: MOV AX,DATA
MOV DS,AX
l1: lea dx,mess1
mov ah,9
int 21h
MOV AH,1
INT 21H
cmp al,'0'
je l2
MOV X,AL
call cr_lf
lea dx,mess3
mov ah,9
int 21h
MOV AH,1
INT 21H
MOV Y,AL
MOV AL,X
AND AL,0FH
MOV BL,Y
AND BL,0FH
ADD AL,BL
cbw
mov bl,10
div bl
or al,30h
mov s,al
or ah,30h
mov [s+1],ah
call cr_lf
mov dx,offset mess2
mov ah,9
int 21h
MOV AH,2
MOV DL,s
INT 21H
mov ah,2
mov dl,[s+1]
int 21h
call cr_lf
jmp l1
l2: MOV AH,4CH
INT 21H
cr_lf proc
push ax
push dx
mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
pop dx
pop ax
ret
cr_lf endp
CODE ENDS
END START
2007-04-28 11:39
快速回复:急----十进制的加法计算--为什么和大于等于10就出错了?
数据加载中...
 
   



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

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