
比如:12345678H
小端存储:78H,56H,34H,12H
大端存储:12H,34H,56H,78H
象PC机Windows系统、Linux这样的系统都是小端模式存储。
大端存储举例:网络数据包中的数值。
32位寄存器也是按两个16位的方式保存,也就是由两个16位组成,当低位值低于32768时,可以用 MOV C220 D1 写入,值大于32768时,超出16位寄存器的范围,进入如下转化设定即可:1.若D0为你的流量设定值,则D1为保留的32位双字整数的高位字;
2.当D0大于等于0时,D1赋值为0;当D0小于0时,D1赋值为FFFFH;
3.双字比较时,用D0+D1乘以10000作为双字比较的其中一个值;
反过来,将32位整数转为16位就要考虑数值的溢出问题了
(你的数值还是要除去放大的10000倍再作处理,否则就不对,即使有对应的指令)。
其实最关键的不在于系统是多少位的,而在于编译器的规定。比如说,以前微软的C编译器,都是把int当成short int来对待,那么就是16位,在内存里面也是16位,在CPU寄存器里面,也只占16位,这就意味着在32位处理器的寄存器里面,高16位是没有使用的。我不清楚现在的微软编译器是怎么规定的,至少VC6里面,int都还是16位的。但是有些C编译器,例如GCC,就把int默认当作long int来对待,于是就要占32位了。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)