| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1139 人关注过本帖
标题:我实在分析不出这个dtoc程序是怎么回事,请大家帮忙。
只看楼主 加入收藏
hino
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-9-9
收藏
 问题点数:0 回复次数:1 
我实在分析不出这个dtoc程序是怎么回事,请大家帮忙。
这个是我写的dtoc程序,我已经debug过多次了,实在找不出问题所在。debug时,程序能正常走完。但一到DOS下面,就会出现divide overflow错误。在debug时,能正常实现功能(12666字串以$结尾,我自己改的)。
里面只有一个div bx关联到除法命令。但是12666<65535,一个AX足以存放被除数和商,想不出理由会导致divide overflow的。


assume cs:code

data segment
        db 64 dup (0)
data ends

code segment
start:  mov ax,12666
        mov bx,data
        mov ds,bx
        mov si,0
        call dtoc

        mov ax,4c00h
        int 21h

  dtoc:
        push dx
        push di
        push cx

        mov bx,10
        mov di,0
     s:
        div bx
        add dx,30h
        push dx
        mov dx,0
        inc di
        mov cx,ax
        jcxz ok
        jmp short s

    ok:
        mov cx,di
     t:
        pop ax
        mov ds:[si],al
        inc si
        loop t

        mov byte ptr ds:[si],'$'

        pop cx
        pop di
        pop dx
        ret


code ends
end start



商ax是每次除以10,只会越变越小。
除数bx一直是10。
余数dx加了30h压栈后被清零。

然后循环,直到ax=0为止。

实在想不出为何会出现divide overflow错误。
搜索更多相关主题的帖子: dtoc 
2008-09-09 16:07
快速回复:我实在分析不出这个dtoc程序是怎么回事,请大家帮忙。
数据加载中...
 
   



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

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