如何比较单片机中两个带小数位的数的大小

数A的十位放在30H中,个位放在31H中,小数位放在32H中,
数B的十位放在33H中,个位放在34H中,小数位放在35H中。
A和B的范围是0~99.9
请教汇编高手给个简洁的程序,我自己编的太长了。

BJ:
MOV A, 30H ;先比较十位
CJNE A, 33H, ZZZ ;比较不等转移

MOV A, 31H ;相等则比较个位
CJNE A, 34H, ZZZ ;比较不等转移

MOV A, 32H
CJNE A, 35H, ZZZ ;比较不等转移
…… ;两数相等
……
ZZZ:
JNC A_DA ;无借位则为A大
B_DA: ;否则就是B大
……
……
A_DA:
……
……
END
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-24
逐次比较。先比较10位,再比较各位,最后比较小数位

如何比较单片机中两个带小数位的数的大小
MOV A, 30H ;先比较十位 CJNE A, 33H, ZZZ ;比较不等转移 MOV A, 31H ;相等则比较个位 CJNE A, 34H, ZZZ ;比较不等转移 MOV A, 32H CJNE A, 35H, ZZZ ;比较不等转移 …… ;两数相等 ……ZZZ:JNC A_DA ;无借位则为A大...

C51单片机的数码管(带小数点)哪一位对应哪一段
一般是从上面一横(8 位的最低位)开始,顺时针转abcdef再一间一横为g,小数点为最高位。

单片机程序中小数的显示问题
把 m = m*10 - b[i]; 改成 m = m*10 - n; 试试看 我单步调试时发现第一次送1.5时,floatnum=1,但第二次送1.6时,floatnum=0X16。按理也应该为1,但上面这条语句执行的结果不是0,而是一个很小的数,所以不满足while的退出条件,由此带来后面write(0x30+b[i])语句执...

在单片机C中,将两个数做除法后,将这个数显示在液晶上,这个小数点该怎么...
通常的处理方法:将被除数先乘一个数,再做除法。比如:4除以3,保留三位小数,先将4乘以1000变成4000,再用4000除以3得1333(一般单片机本身不支持浮点运算,也就是小数点后是四舍五入的),显示的时候在倒数第三位前加一个点就可以了,比如把1.333赋值给一个数组,再在液晶上显示即可 ...

51单片机里怎么取两位小数? 例如144\/51=2.82356479 怎么让其显示2.82...
float x ;x=144\/51;小数部分想多一点就定x为double型

c51单片机怎么判断小数
1、首先将输入C51单片机的数字整数部分保存到2个char型变量中。2、将小数部分保存到另外两个char型变量中。3、最后在计算的时候将所有的数单独输出。就可以让C51单片机判断小数了。

C语言水平低下,问个关于单片机编程的低级问题
比如,截取小数点后第一个数,char zifu = (char)(x * 10) % 10 ,这个式子,把一个小数乘以10,再除以10,得余数,这个余数就是小数点后第一个位的数字了,然后要把这个数转成ASC码发出去,计算机的串口通讯用字符显示才能显示出数字的值。一个位一个位的数字发出去,小数点也要单独发一个点...

关于C51单片机的小数点四舍五入处理
单片机内一般采用整数计算,如果要保留两位小数,需将原数据扩大100倍,小数点该向左移2位 18754\/100=187·54 但单片机只能算整数,因此结果只能是187 因此计算时我们我们将被除数扩大100倍 相当于小数点向右移2位,1875400\/ 100=18754 然后我们将计算结果的小数点再向左移回来2 位,即变成了 187.54...

单片机做除法商保留两位小数怎么做
50,这就是小数。把它(0~50)除以5.1(取近似值5),得到的整数,0~9,就是第一位小数。这个小数,也可能是10,(取近似值5带来的误差),那么,就把整数部分加一,这位小数算作0。这里又得到个余数!那就继续除以0.51,(不好算,可先把双方都放大8倍,再除)即可得到第二位小数。

关于单片机汇编语言的小数问题
方法如下 先定义小数点后的N个位,1个位定义一个寄存器来储存十进制数值,假如不用管未知数的位数,那么定义5个寄存器就可以记录0.xxxxx 然后把要×的×,加的按位加,有进位就进

相似回答