为什么这段代码不能执行啊?郁闷

laizidahaideren 2006-04-07 05:44:08
为什么我下面的代码执行结果是Divide overflow啊?
希望哪位高手能帮我看看啊,先谢了啊
data segment
ts db 'please input a plus number(less than 99):$'
pri db 5 dup(?)
pt db 5 dup(?)
sum dw ?
input db 3
db ?
db 3 dup(?)
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,offset ts
mov ah,09h
int 21h
mov dx,offset input
MOV ah,0AH
int 21h
call exchang
mov cx,ax
sub cx,1
lp1: mul cx
loop lp1
mov cx,ax
mov dl,0AH
MOV AH ,02H
int 21h
mov dl,0DH
MOV AH ,02H
int 21h
mov ax,cx
call print
mov ah,4ch
int 21h
exchang proc near
mov al,[input+2]
mov ah,0
sub ax,30h
mov bx,10
mul bx
mov BL,[input+3]
mov bh,0
sub bx,30h
add ax,bx
ret
exchang endp
print proc near
mov cx,10
mov si,0
lp3: div cx
mov [pt+si],ah
inc si
mov al,ah
mov ah,0
cmp ax,0
jnz lp3
mov di,0
lp4: dec si
mov al,[pt+si]
add al,30h
mov [pri+di],al
inc di
cmp si,0
jnz lp4
mov [pri+di],'$'
mov dx,offset pri
mov ah,09h
int 21h
ret
print endp
code ends
end start
...全文
146 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2006-04-08
  • 打赏
  • 举报
回复
抱歉了, 我早就不是学生了, 学的是化学工程
laizidahaideren 2006-04-08
  • 打赏
  • 举报
回复
谢谢你,我知道了,请问你是计算机专业的啊?要是的话就,带带我吧,我不是的,QQ170536882
先谢了
zara 2006-04-07
  • 打赏
  • 举报
回复
除法溢出. 一般就是商超出可表示的范围. 你用 div cx, 是 dx:ax/cx 商在 ax 余数在 dx. 如果 div 之前 dx 有内容, cx 仅为 10, div 之后商极可能大于 64K 不能用 ax 来表示, 从而发生除法溢出.

看来前面的回复基本上没有起到作用 ^_^"
大熊猫侯佩 2006-04-07
  • 打赏
  • 举报
回复
除法溢出
laizidahaideren 2006-04-07
  • 打赏
  • 举报
回复
我的程序我试过了,问题在输出部分,求累乘部分没有错的,不知道为什么就是不能把结果输出来\
还有就是显示"Divide overflow "什么意思啊?
zara 2006-04-07
  • 打赏
  • 举报
回复
除了 div cl 方面的错误外, 还有下面的两处被注释掉是不需要的. 另外, 由于你的转换代码没有考虑输入一位数的情况, 所以各位输入应该前面补以 0, 比如: 01, 02 这样的输入, 不能直接输入 1 或者是 2.
...
mov cx,ax
; sub cx,1
;lp1: mul cx
; loop lp1
; mov cx,ax
mov dl,0AH
...
inc si
; mov al,ah
mov ah,0
...
laizidahaideren 2006-04-07
  • 打赏
  • 举报
回复
为什么只显示"Divide overflow"呢?
zara 2006-04-07
  • 打赏
  • 举报
回复
你的程序中, 只有 print 子程中有 div 指令. 从其上下文来看, div cx 应该是 div cl 吧. 不过, 你的代码在数据处理上好像还是有些其它的问题

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧