8位单片机用C语言编程为什么可以实现16位数据的加减
时间:10-02
整理:3721RD
点击:
8位单片机用C语言编程为什么可以实现16位数据的加减?
如果在8位单片机中,实现400+500,用C语言编程怎么实现?用汇编语言怎么实现?谢谢诸位大神
如果在8位单片机中,实现400+500,用C语言编程怎么实现?用汇编语言怎么实现?谢谢诸位大神
这是最基本的数据处理技巧,你该好好看看书学习一下了。难不成我们要计算一个128bit位宽的大数据,就一定得用128位的计算机?
每个数用两个8位寄存器来存放,就可以表示成一个16位的数了,依此类推,用16个字节就可以存放128bit位宽的数据了。
举例,要计算400+500,用R1存放400的高8位,R2存放400的低8位,R3存放500的高8位,R4存放500的低8位,计算过程就可以表示为:
1、先计算R2+R4的值,结果放到R2,进位Cy要注意保存;
2、计算R1+R3+Cy(带进位加法),结果存放到R1;
3、没有产生进位的话,结果就在R1R2中,有进位则表示计算溢出了,低16位结果在R1R2中,进位位在Cy。
你可以将400和500分别转换成2字节的数据,放到上述寄存器后,验算一下计算结果,以加深理解。
这个解答清楚了
楼上正解
我们用的8位单片机都是16位数据宽度,超出16位宽度就得定义为32位的,或在计算中用强制转换,否则数据溢出