求救!!!如何在汇编语言源程序中定义小数?请大侠帮帮忙!

bsnhk 2004-03-31 12:49:00
小弟初学汇编语言,竟然发现一个令我不知所措的难题,在汇编语言源程序中可以定义整数,竟然不能定义小数。
例如:
db 10,-10 ;这能通过masm的汇编。
db 10.5 ;这就不能通过masm的汇编。
我是在研究小数在内存中的存储情况时发现这个问题的,请各位大侠给小弟指点迷津,多谢了!!!
...全文
510 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
vicallee 2004-04-14
  • 打赏
  • 举报
回复
mark....
W32API 2004-04-10
  • 打赏
  • 举报
回复
8086 做浮点数?
你自己做个浮点运算的模块??
bsnhk 2004-04-09
  • 打赏
  • 举报
回复
请问哪里有得买《The Art of ASSEMBLY LANGUAGE PROGRAMMING》(Randall Hyde著)的中译本?或哪里有该书的中译本电子书下载?该书一共有1400多页,应该算是汇编语言的圣经宝典,小弟想深入学习汇编,原因是我前一阵子读了朱邦复的《组合语言的艺术》,简直将老朱当偶像般崇拜。
yangpeng98 2004-04-08
  • 打赏
  • 举报
回复
寻根问底是我们学习的应该具备的态度.
Allemand 2004-04-08
  • 打赏
  • 举报
回复
高版本的MASM中,浮点数如以下方式定义

rVar real4 1.0
drVar real8 2.0
xrVar real10 3.0

但处理浮动数需要协处理器FPU和它的指令系统。

如果只用8086和它的指令系统的话,那就需要自己按照一定格式(一般用IEEE的格式)来定义浮点数,然后用很复杂的算法进行处理,呵呵,想想头都大。
lfyang 2004-04-07
  • 打赏
  • 举报
回复







学习中......
bsnhk 2004-04-07
  • 打赏
  • 举报
回复
请问定点数是不是只有纯整数和纯小数,没有像13.356这样的定点数?
newer007 2004-04-07
  • 打赏
  • 举报
回复
好象有专门的浮点处理库吧
sunrui 2004-04-06
  • 打赏
  • 举报
回复
高版本的MASM支持直接在汇编里定义浮点数,比如:
float1 real8 1.0
float2 real8 2.0
tankbattle 2004-04-05
  • 打赏
  • 举报
回复
用大脑把小数用ieee754写出来再当作整型用dw(相当于float)或dd(相当于double)写进去,整型和浮点型在内存中没什么区别,就是看用什么指令。
可以懒一点:
float fValue = ???;
int nValue;
memcpy(&nValue,&fValue,sizeof(fValue));
cout<<nValue;
把输出来的写到dw的后面当浮点型用就可以了
bsnhk 2004-04-04
  • 打赏
  • 举报
回复
真是太感谢dunkel了,给我介绍这么好的一本书。本人自从自学汇编语言以来,越往后面学越碰到数据表示的问题,老是心里没底,于是到处找资料研究了计算机中数据的表示,最近才略有成功,dunkel你给我介绍的这本书让我有机会印证自己的研究结果。
本人认为学习汇编语言(特别是8086/8088汇编),知道数据在计算机中的表示的真相非常重要,例如,同样的一个字节单元,为什么有时候可以看成带符号数,有时候可以看成无符号数,有时候又可以看成字符数据呢?事实上计算机内部的一切数据没有本质上的区别,都是二进制编码,至于一个数据到底是什么类型的数据,完全是由处理这个数据的“数据处理机制”决定的。比如你在源程序中定义一个存储单元为某类型数据,于是计算机便知道该用什么“数据处理机制”来处理该存储单元的数据了;一个字节单元的值是97,那么显示到屏幕上为什么会是字符a呢?就是因为计算机显示设备的制造符合ASCII标准,所以97被一定的“数据处理机制”处理后显示到屏幕上的就是点阵图形a了。还有就是在8086/8088汇编中进行很大数据的运算时,需要将数据分成几部分,也需要将运算分成几部分,所以要是不十分清楚地知道数据在计算机中的表示跟指令处理数据时的确切情况,我想很难有胆量和信心去进行这样的操作。(以上结论是否正确还待网友指正)
dunkel 2004-04-03
  • 打赏
  • 举报
回复
浮点数就是用 dd 或者是 dq 之类的语句来定义的啊, 具体用那个看你的精度要求了.
象你的 dd 1.0 在生成的 .exe 文件中的是 00 00 80 3F, 可以参照后面的那个 pdf 文件中从 42 页开始的有关浮点数格式的介绍分析一下的, 是数值 1.0

第2章数据的表示 南京大学计算机系 多媒体技术研究所 袁春风
http://aim.nju.edu.cn:8080/mill/Slides/chap2.pdf
bsnhk 2004-04-02
  • 打赏
  • 举报
回复
老大,不行呀,我用DD定义了一个最简单的小数1.0,然后汇编连接成.EXE文件后,再用DEBUG载入内存,可是我看到的那个双字单元的内容根本就不是1,我以为是浮点格式,可是怎么分析都不对。
还有就是汇编教科书的开头一般都介绍计算机的数,其中有讲到定点数和浮点数,那应该怎样在汇编语言源程序中定义定点数跟浮点数呢(教科书竟然对这方面只字不提,通篇都是无符号整数)?请大侠们教教我。想不到在C语言中再简单不过的事情在汇编里竟然难如登天!!!
csdsjkk 2004-04-02
  • 打赏
  • 举报
回复
处理浮点数必须用浮点指令,
fld,fadd,fst等
kuangjingbo 2004-04-02
  • 打赏
  • 举报
回复
应该是你自己来定义
sztony 2004-04-02
  • 打赏
  • 举报
回复
要处理浮点数据,应该要使用80X87协处器,
查查这方面的资料吧,
bsnhk 2004-04-02
  • 打赏
  • 举报
回复
老大,8086/8088没有fld、fadd、fst这样的指令呀,如果8086/8088当时还没将浮点运算协处理器整合进CPU因而没有浮点指令的话,那它总该可以处理定点数吧(比如1.0,3.14,+0.5,-4.7等等定点数)?可是在8086/8088中该如何定义定点数呢?定点数在内存的格式又是如何呢?我想如果能够定义定点数,那定义为单字节也可以,可是事实偏偏就不行。各位老大,小弟觉得汇编语言教科书中前面讲计算机中的数后面讲汇编语言,可是竟然前面那些数的理论在汇编实验中好像没多大联系(只有补码理论跟实验相符),真让我丧气。
本人一向认为理工科的学习就是追求真相,首要的学习任务是搞清“这是什么”,可偏偏国内很多书包括翻译的书对概念的描写远远没有达到告诉读者“这是什么”的目标,试问,我们连书中的某些概念都不知道是什么,然后每个读者都对同一概念有不同的理解,中国人要几百年才追得上国外呀?
在汇编语言的书籍中清华大学出版社出版的《IBM-PC汇编语言程序设计》(沈美明 温冬婵著)是一本极差的入门书,原因在于该书通篇都不告诉读者书中涉及到的概念“是什么意思”,然后就广泛使用这些概念。书中的内容简介部分还说“本书适合初学者使用”,本人的专业课并没有汇编语言这一课,于是本人就自学这本书,没有人可请教,有时候为了弄懂书中的一个概念的意思,我去学校图书馆里借了三四本汇编语言的书来参考,希望能碰到解释这一概念的书。有时候一个概念的解释就那么几个字,可《IBM-PC汇编语言程序设计》中就是不肯说,你说气不气人,难道非得为了搞清楚一个概念一个名词的意思而让读者费九牛二虎之力嘛,我倒说《IBM-PC汇编语言程序设计》一书的作者真是垃圾中的垃圾。举个例子,《IBM-PC汇编语言程序设计》中经常用到的概念是“偏移量”、“位移量”,没有任何解释,“偏移量”还好理解,可是“位移量”是什么?他们是不是同一样东西?我自接触到这个概念两年多后才真正弄懂(这中间我不断的得出结论,结果新结论存在不够两个月又被我悟出的更新的结论给推翻了,我也记不清我对“位移量”有过多少种解释了),怎么弄懂的呢?我是研究了各个指令的机器码的编码格式后才搞清楚什么是“位移量”,结论很简单,唉,真是不堪回首。
csdsjkk 2004-03-31
  • 打赏
  • 举报
回复
dd 10.5
cutemouse 2004-03-31
  • 打赏
  • 举报
回复
汇编只管你的存储单元,但存的是什么意义,那有你的程序来解释啦.

21,459

社区成员

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

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