不知怎么理解

LD     SM0.0
MOVD   +0, AC0
MOVB   VB3934, AC0
MOVD   &VB3902, LD0
+D     AC0, LD0
MOVB   *LD0, AC0
望各位高手给予指导

最佳答案

以上几位讲得都不错。
我觉得还可以讲一下编程的思路。
LD     SM0.0
MOVD   +0, AC0
MOVB   VB3934, AC0
这几句,是常用的位长度扩展的方法。在计算机中,两个整型数相加,其二进位的位长必须相等。当两个位长不相等的数相加时,必须对位长较短的数进行位扩展。
本程序中,VB3934的值将和&VB3902进行相加,VB3904是一个8位长的数,而&VB3902则是一个32位长的数。因此上面的几句,就是把Vb3904的值扩成32位长。显然,Vb3904是个无符号数,所以仅对高位作了清0处理。若是有符号数,还要作符号位的扩展。

提问者对于答案的评价:
ok

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc320943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 上午11:35
下一篇 2020年11月5日 上午11:35

相关推荐