问:L 指令装一个立即数(常数)到 ACCU1L 1
如何表达我这个装入的数是 Byte? Word? DWord? S7300 还未入门,请高手指教!
答:在装入的时候,如果被装入的数太短,达不到 4BYTE(大多情况这样),则在装入的 时候,会自动填 0而在取出的时候,如果目标是 4BYTE,则全盘复制,如果短了,就只复制需要的长度,另外的就被抛弃了,其实被抛弃的部分一般是 0 的,编程时候需要知道的。 比如 L L#16#01020304,这是一个 32 位的 DWORD然后 T MW0,长出的部分被丢掉,最终 MW0 的内容为 16#0304 除非有意这样做,否则做之前是要保证数据没有溢出的。否则计算就乱套了。 反过来,L 16#FFFE (INT -2)T MD0则 MD0 的值为 L#16#0000FFFE (DINT 65534) 数据虽然没有溢出,但数据格式不能继承了。 这种时候,分别需要 DTI 和 ITD 命令进行转换。
至于 200 里面的 MOVB,MOVW,MOVD 等的命令,我想,在 300 里面它是自动的,根据目 标数的尺寸,自动实现不同的 MOVE 功能,与 200 对应。
-
引用 shida111 2022/9/21 14:00:31 发表于2楼的内容
-
-
-
luckboykite | 当前状态:在线
总积分:845 2024年可用积分:0
注册时间: 2009-10-15
最后登录时间: 2023-08-24
-
luckboykite 发表于 2022/9/22 17:53:11
ding
引用 luckboykite 2022/9/22 17:53:11 发表于3楼的内容
-
-
引用 shiyouwa 2022/9/23 9:56:14 发表于4楼的内容