| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1877 人关注过本帖
标题:求助双精度数输出的问题
只看楼主 加入收藏
loveajtl
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-7-5
收藏
 问题点数:0 回复次数:6 
求助双精度数输出的问题
一个双精度数,高位数在DX寄存器,低位在AX寄存器,怎么样实现这个数的输出??
请路过的帮一下忙,先谢了.
搜索更多相关主题的帖子: 精度数 寄存器 输出 低位 
2007-11-21 12:17
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 

你所说的双精度数是浮点数还是整数?

2007-11-21 16:36
loveajtl
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-7-5
收藏
得分:0 
是整数
现在知道了,嘻嘻,整个数除10,之后一位一位数的放到一个字符串中,再输出.不过前提是那个双精度数除后的数只能放得下在AX里,如果太大了就要用到386以上的EAX寄存器了.
谢谢楼上.
2007-11-25 13:27
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
;不会溢出的除法(32位除16位,商如果只能是16位,则可能溢出,比如FFFFF div 1)
;因此,把商也要增大到32位
;输入参数:ax 保存被除数低16位,dx 保存被除数高16位,cx 保存除数
;输出参数:ax 保存商低16位,dx 保存商高16位,cx保存余数
;计算方法:商的高16位=被除数高16位 div 除数 的 商
; 商的低16位=((被除数高16位 div 除数 的 余数)*FFFF+被除数低16位)div 除数 的 商
; 余数=上式的余数
public divdw
segdivdw segment 'code'
divdw proc far
push bx ;保存bx
mov bx,ax ;先把低16位保存
mov ax,dx ;高16位移到低16位
mov dx,0 ;高16位置零
div cx ;除
push ax ;保存商
mov ax,bx ;取出原来保存的低16位,高16位是上次除法的余数,已经在dx里面了
div cx ;再除
mov cx,dx ;把余数保存到cx
pop dx ;把第一次除的商,放入dx,作为结果的高16位
pop bx ;恢复bx
ret ;返回
divdw endp
segdivdw ends
end

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-25 15:38
loveajtl
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-7-5
收藏
得分:0 
真是超劲啊,非常谢谢版主的详细解答,嘻嘻,我懂了,之前就是这个搞混了我,还以为只能用386以上的寄存器呢.
再次表示感谢.
2007-11-26 12:17
loveajtl
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-7-5
收藏
得分:0 
我又有个问题了,不知道为什么我用div除的话就没错,但如果我用idiv除的话,第二个除法那里就有出错了,我试着把DX置0,就没了除法错误,但结果就不对了(我也知道不对的了)
就是不知道为什么idiv除会有错咯?奇怪?
2007-11-26 12:41
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
呃,这个是无符号的,有符号的话没研究过

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-26 13:07
快速回复:求助双精度数输出的问题
数据加载中...
 
   



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

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