| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 941 人关注过本帖
标题:[求助] 我编了个程,要输出200*150的结果,可是运行却出现divide overflow.
只看楼主 加入收藏
sandho
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-11-27
收藏
 问题点数:0 回复次数:5 
[求助] 我编了个程,要输出200*150的结果,可是运行却出现divide overflow.

我编了个程,要输出200*150的结果,可是运行却出现divide overflow.
请问哪里错了。data segment
a dw 200
b dw 150
string db '200*150='
db '$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset string
mov ah,09h
int 21h
mov bx,a
mov cx,b
mov ax,0
lop1:add ax,bx
loop lop1
s:mov bx,0 ;不断将ax除于0,判断余数属否为零
mov cl,10
div cl
mov bl,ah
add bx,30h
mov dx,bx
mov ah,02h
int 21h
cmp al,0
jnz s
mov ah,4ch
int 21h

code ends
end start

搜索更多相关主题的帖子: overflow divide 结果 输出 运行 
2007-01-06 17:03
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
在s循环体里面有mov ah,02h ,所以影响了ax中原有的值,可以push ax,pop ax试下

2007-01-06 18:48
sandho
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-11-27
收藏
得分:0 

我现在将程序改成这样,可还是不行。不知为什么?
data segment
a dw 200
b dw 150
string db '200*150='
db '$'
data ends
stack1 segment
dw 100 dup(?)
stack1 ends
code segment
assume cs:code,ds:data,ss:stack1
start:
mov ax,stack1
mov ss,ax
mov ax,data
mov ds,ax
mov ax,0
mov dx,offset string
mov ah,09h
int 21h
mov bx,a
mov cx,b
mov ax,0
lop1:add ax,bx
loop lop1
s:mov bl,10
div bl
mov bl,ah
mov bh,0
push bx ;将余数入栈
mov ah,0
cmp al,0 ;判断商是否为0
jnz s
mov cx,5
l1:pop bx ;将各余数依次出栈
mov dl,bh
add dl,30h
mov ah,02h
int 21h
loop l1
hlt

code ends
end start

[此贴子已经被作者于2007-1-6 21:25:05编辑过]

2007-01-06 20:31
sandho
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-11-27
收藏
得分:0 
我解决了。谢谢各位
2007-01-06 21:20
曾小
Rank: 1
等 级:新手上路
威 望:1
帖 子:239
专家分:0
注 册:2006-9-27
收藏
得分:0 
不是说是计算200*150吗?红色部分不就足够了吗?为什么还加下面的代码啊!????
lop1:add ax,bx
loop lop1
s:mov bl,10
div bl
mov bl,ah
mov bh,0
push bx ;将余数入栈
mov ah,0
cmp al,0 ;判断商是否为0
jnz s
mov cx,5
l1:pop bx ;将各余数依次出栈
mov dl,bh
add dl,30h
mov ah,02h
int 21h
loop l1

2007-01-07 20:44
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
分析下输出的是什么就知道了

2007-01-07 22:30
快速回复:[求助] 我编了个程,要输出200*150的结果,可是运行却出现divide over ...
数据加载中...
 
   



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

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